C程序设计课程实习.docx
《C程序设计课程实习.docx》由会员分享,可在线阅读,更多相关《C程序设计课程实习.docx(41页珍藏版)》请在冰点文库上搜索。
C程序设计课程实习
河北科技师范学院
C程序设计课程实习
院(系)名称:
工商管理学院
专业名称:
信息管理与信息系统10级
指导教师:
刘书霞
学生姓名:
钱杰
二○一一年七月
课程实习一、C程序上机操作方法及运行环境
编写一个C程序,输入a,b,c,d四个值,输出其中最小者。
#include
main()
{
inta,b,c,d,min,t,;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
t=(a
a:
b;
t=(cc:
t;
min=(dd:
t;
printf("min=%d\n",min);
}
课程实习二、C程序上机操作方法及运行环境
从键盘输入三个字符,要求输出这三个字符,并输出它们的ASCII码及其ASCII码的平方根和的平方。
提示:
字符变量以它的ASCII码值参加运算;求平方根应用函数SQRT,此函数存放在数学函数库中;求出的平方根可能不是整数。
#include
#include
main()
{
charc1,c2;
floatt;
scanf("%c,%c",&c1,&c2);
printf("%c,%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
t=(sqrt(c1)+sqrt(c2))*(sqrt(c1)+sqrt(c2));
printf("%f\n",t);
}
课程实习三、循环结构程序设计
1)输入两个正整数到m和n;
2)如果m=n输出最大公约数m程序结束;
3)若m>n则m=m-n否则n=n-m;
4)返回到2)(循环)。
#include
voidmain()
{
intm,n;
scanf("%d%d",&m,&n);
while(m!
=n)
{
if(m>n)m=m-n;
elsen=n-m;
}
printf("%d\n",m);
}
课程实习四、循环结构程序设计
打印下面的图案
#####
####
###
##
#include
main()
{inti,j,k;
for(i=0;i<=3;i++)
{
for(j=0;j<=i;j++)
printf("");
for(k=0;k<=4-i;k++)
printf("*");
printf("\n");
}
}
课程实习五、数组的应用
输入一个0到150之间的十进制整数,要求把此数转化为二进制形式。
如:
143↙
10001111
提示:
十进制转化为二进制用倒序取余法,可将每次产生的余数依次存入一数组中,输出时将数组倒序输出。
#include
main()
{inti,num,n,j,a[9];
printf("输入数字:
\n");
scanf("%d",&num);
for(i=0;i<9;i++)
{a[i]=num%2;
num=num/2;
}
printf("\n");
for(j=8;j>=0;j--)
printf("%d",a[j]);
printf("\n");
}
课程实习六、函数
输入10个景区内的5个不同景点门票价位,分别用函数求:
①每个景区平均价位;
②每个景点的平均价位;
③找出最高的价位所对应的景点和景区。
#include
#definen110
#definen25
floata_jingqu[n1],a_jingdian[n2];
voidmain()
{
voidinput(floata[][n2]);
voidjingqu_aver(floata[][n2]);
voidjingdian_aver(floata[][n2]);
inthightest(int*q,int*d,floata[][n2]);
floatd(floata[][n2]);
inti,j,q=0,d=0;
floatprice[n1][n2],h;
input(price);
jingqu_aver(price);
jingdian_aver(price);
printf("\n\n序号景点12345平均价位\n\n");
for(i=0;i{
printf("NO.%d",i+1);
for(j=0;j{
printf("%8.2f",price[i][j]);
}
printf("%8.2f\n\n",a_jingqu[i]);
}
printf("景点平均");
for(i=0;i{
printf("%8.2f",a_jingdian[i]);
}
h=hightest(&s,&c,price);
printf("\n\n最高价位为:
%f是第%d个景区,第%d个景点的价位\n\n",h,q,d);
}
voidinput(floata[][n2])
{
inti,j;
for(i=0;i{
printf("\n\n输入%d个景区的5个价位\n\n",i+1);
for(j=0;j{
scanf("%f",&a[i][j]);
}
}
}
voidjingqu_aver(floata[][n2])
{
inti,j;
floats;
for(i=0;i{
s=0;
for(j=0;j{
s+=a[i][j];
}
a_jingqu[i]=s/n2;
}
}
voidjingdian_aver(floata[][n2])
{
inti,j;
floats;
for(i=0;i{
s=0;
for(j=0;j{
s+=a[j][i];
}
a_jingdian[i]=s/n1;
}
}
inthightest(int*q,int*d,floata[][n2])
{
floathightest=0;
inti,j;
for(i=0;i{
for(j=0;j{
if(a[i][j]>hightest)
{
hightest=a[i][j];
*q=i+1;
*d=j+1;
}
}
}
return(hightest);
}
课程实习七、指针
输入10个整数,找出其中最小的数并与第一个数对换。
写三个函数:
①输入10个数
②进行处理;
③输出10个数。
#include
#defineN10
f(x,n)
intx[],n;
{int*p0,*p1,i,j,t,y;
i=j=x[0];p0=p1=x;
for(y=0;y{if(x[y]
{i=x[y];p0=&x[y];}
elseif(x[y]>j)
{x[y]=j;p1=&x[y];}
}
t=*p0;*p0=x[n-1];x[n-1]=t;
t=*p1;*p1=x[n-1];x[n-1]=t;
return;
}
main()
{inta[10],u,*r;
for(u=0;u<10;u++)
scanf("%d",&a[u]);
f(a,10);
for(u=0,r=a;u<10;u++,r++)
printf("%d",a[u]);
printf("\n");
}
课程实习八、结构体、共用体
有10个学生,每个学生的数据包括专业、姓名、5门课的成绩,从键盘输入10个学生的数据,要求打印出5门课的总平均成绩。
#include
#defineN5
structstu
{
charnum[10];
charname[10];
floatscore[5];
floataverage;
}stu[N];
voidmain()
{
voidinput(structstu*p);
voidaver(structstu*p);
floataver_total(structstu*p);
voidprint(structstu*p);
structstu*p;
p=stu;
input(p);
aver(p);
print(p);
}
voidinput(structstu*p)
{
inti,j;
printf("按顺序依次输入学生的学号,姓名,成绩1,
成绩2,成绩3,成绩4,成绩5\n");
for(i=0;i{
scanf("%s%s",(p+i)->num,(p+i)->name);
for(j=0;j<5;j++)
scanf("%f",&((p+i)->score[j]));
}
}
voidaver(structstu*p)
{
inti,j;
floatsum;
for(i=0;i{
sum=0;
for(j=0;j<5;j++)
{
sum+=(p+i)->score[j];
}
(p+i)->average=sum/5;
}
}
floataver_total(structstu*p)
{
floatsum=0;
for(;psum+=p->average;
return(sum/N);
}
voidprint(structstu*p)
{
inti,j;
structstu*q;
floatmax=0;
printf("五门课的总平均成绩为:
%f\n\n",aver_total(p));
for(i=0;i{
if((p+i)->average>max)
{
max=(p+i)->average;
q=p+i;
}
}
printf("\n");
课程实习九、文件
学生基本记录:
学号、姓名、专业、性别、出生日期、籍贯、入学时间、高数成绩、管理学成绩、英语成绩、经济学成绩、C语言成绩。
功能要求:
1.文件操作:
可读入和保存学生数据文件。
2.编辑:
录入记录、删除记录、显示记录(可排序)。
3.数据查询
可按学号查询某学生记录;
可按姓名查询某学生记录;
可按各分数段查询学生记录;
4.统计
分别可按总平均和单科成绩统计各分数段学生人数,所占总人数的百分比,用饼图和数据描述。
按入学时间分别统计历届学生总平均成绩为90-100分和小于60分的人数,用曲线(或直方图)和数据描述。
5.尽量采用图形界面,界面要美观、操作要简单方便
#include"stdio.h"
#include
#include
#include"process.h"
#include"ctype.h"
typedefstruct
{
charnum[10];
charname[10];
intchinese;
intmath;
intenglish;
intdianlu;
doubleaver;
}Student;
Studentstu[99];
intshuru(Studentstud[],intn)/*输入若干条记录*/
{
inti=0;
charsign,x[10];
doublea=0.0;
while(sign!
='n'&&sign!
='N')
{
printf("输入学生学号:
");
scanf("%s",stu[n+i].num);
printf("输入学生姓名:
");
scanf("%s",stu[n+i].name);
printf("输入学生的语文、数学、英语、管理学分数:
");
scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].guanlixue);
a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].guanlixue)/4;
stu[n+i].aver=a;
gets(x);/*清除多余的输入*/
printf("是否继续输入?
(Y/N):
\n");
scanf("%c",&sign);
i++;
}
return(n+i);
}
voidxianshi(Studentstud[],intn)/*显示所有记录*/
{
inti;
printf("----------------------------------------------------------\n");/*格式头*/
printf("学号姓名语文数学英语管理学平均成绩\n");
printf("----------------------------------------------------------\n");
for(i=0;i{
printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].guanlixue,stu[i].aver);
}
}
voidxiugai(Studentstud[],intn)/*修改*/
{
inti=0,choice=1;
charx[10];
while(choice!
=0)
{printf("请输入您要修改的学生的学号:
\n");
scanf("%s",x);
for(i=0;;i++)
{
if(strcmp(stu[i].num,x)==0)break;
}
printf("请选择您要修改的内容:
\n");
printf("----------------------\n");
printf("|姓名请按1|\n");
printf("|语文请按2|\n");
printf("|数学分数请按3|\n");
printf("|英语分数请按4|\n");
printf("|管理学请按5|\n");
printf("|退出请按0|\n");
printf("+----------------------+\n");
printf("请输入您的选择:
");
scanf("%d",&choice);
switch(choice)
{
case0:
break;
case1:
printf("请输入新姓名:
");
scanf("%s",stu[i].name);
break;
case2:
printf("请输入新的语文分数:
");
scanf("%d",&stu[i].chinese);
break;
case3:
printf("请输入新的数学分数:
");
scanf("%d",&stu[i].math);
break;
case4:
printf("请输入新的英语分数:
");
scanf("%d",&stu[i].english);
break;
case5:
printf("请输入新的管理学分数:
");
scanf("%d",&stu[i].guanlixue);
break;
default:
printf("\n无效选项!
");
break;
}break;
}
return;
}
intshanchu(Studentstud[],intn)/*按姓名查找,删除一条记录*/
{chars[20];
inti;
intj;
i=0;
printf("输入要删除记录的姓名:
");
scanf("%s",s);
while(strcmp(stu[i].name,s)!
=0&&iif(i==n)
{printf("notfind!
\n");
return(n);}
for(j=i;j{
strcpy(stu[j].num,stu[j+1].num);
strcpy(stu[j].name,stu[j+1].name);
stu[j].chinese=stu[j+1].chinese;
stu[j].math=stu[j+1].math;
stu[j].english=stu[j+1].english;
stu[j].guanlixue=stu[j+1].guanlixue;
stu[j].aver=stu[j+1].aver;
}
printf("DeleteSuccessed!
\n");
return(n-1);
}
voidchaxun_xingming(Studentstud[],intn)/*按姓名查找并显示一个记录*/
{chars[20];
inti=0;
printf("输入姓名:
");
scanf("%s",s);
while(strcmp(stu[i].name,s)!
=0&&iif(i==n)
{printf("notfind!
\n");/*输入失败信息*/
return;}
printf("他的姓名、学号是:
%s%s\n",stu[i].name,stu[i].num);/*输出该学生信息*/
printf("语文高数英语管理学平均成绩是:
%d,%d,%d,%d,%lf\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].guanlixue,stu[i].aver);
}
voidchaxun_pingjun(Studentstud[],intn)/*按平均成绩查找并显示一个记录*/
{doubles;
inti=0;
printf("输入平均成绩:
");
scanf("%lf",&s);
while(stu[i].aver!
=s&&iif(i==n)
{printf("notfind!
\n");/*输入失败信息*/
return;
}
printf("他的学号是:
%s\n",stu[i].num);/*输出该学生信息*/
printf("他的姓名是:
%s\n",stu[i].name);
printf("他的语文、数学、英语、管理学分数是:
%d%d%d%d\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].guanlixue);
}
voidpaixu_xuehao(Studentstud[],intn)/*按学号排序*/
{inti,j,p,q,r,w;
doubley;
charx[20],t[10];
for(i=0;ifor(j=0;jif(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j].num);
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j+1].num,t);
strcpy(x,stud[j].name);
strcpy(stud[j].name,stud[j+1].name);
strcpy(stud[j+1].name,x);
y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;
p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;
q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;
r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;
w=stu[j].guanlixue;stu[j].guanlixue=stu[j+1].guanlixue;stu[j+1].guanlixue=w;
}
return;
}
voidpaixu_pingjun(Studentstud[],intn)/*按平均成绩排序*/
{inti,j,p,q,r,w;
doubley;
charx[20],t[10];
for(i=0;ifor(j=0;jif(stu[j].aver>stu[j+1].aver)
{y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;
p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;
q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;
r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;
w=stu[j].guanlixue;stu[j].guanlixue=stu[j+1].guanlixue;stu[j+1].guanlixue=w;
strcpy(x,stu[j].name);
strcpy(stu[j].name,stu[j+1].name);
strc