C程序设计课程实习.docx
- 文档编号:18017237
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:41
- 大小:23.70KB
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=(c c: t; min=(d d: 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(;p sum+=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&&i if(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&&i if(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&&i if(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;i for(j=0;j if(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;i for(j=0;j if(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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 课程 实习
![提示](https://static.bingdoc.com/images/bang_tan.gif)