C语言课程设计报告.docx
- 文档编号:48990
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:23
- 大小:338.14KB
C语言课程设计报告.docx
《C语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告
C语言课程设计报告
班级:
评语:
2011年07月18日
1基本题目
1.1题目
1.1题目
有17个人围成一圈,从0号的人开始报数,凡报到3的倍数的人离开圈子,然后再数下去。
直到最后只剩下一个人为止。
问此人原来的位置是多少号。
1.2题目分析
创建一个指针变量,指针变量中的初值为0至16。
然后通过for循环将指针变量中所指的值是三的倍数的变量赋值为0,最后找出所要找的值。
1.3程序
#include
#defineN17
intmain()
{
inti,j,k,a[N+1],*p;
for(i=0,p=a;p<=a+N;i++,p++)
*p=i;
p=a+1;
k=N;
for(i=0,j=1;k!
=1;j++)
{
if(p>(a+N))
p=a+1;
if(*p!
=0)
i++;
if(i%3==0&&i!
=0)
{
*p=0;i=0;k--;
}
p++;
}
for(i=1;i<=N;i++)
if(a[i]!
=0)
printf("最后留下的是%d\n",a[i]);
return0;
}
1.4流程图
开始
i=0,p=aN=17
i=0
p<=a+N
Y
N
*p=i,i++,p++
p=a+1,i=0,j=0
k!
=1
k!
=1
Y
p>a+N
N
N
p=a+N
Y
*p!
=0
N
i++
Y
i%3!
=0
N
Y
*p=0,i=0,k--
p++,j++
p++,j++
i<=N
Y
输出最后留下的值
N
i++
结束
图1.1基本题目的流程图
1.5程序的运行结果
基本体运行结果如图1.2所示:
图1.2基本题目运行结果
2改错题目
2.1改正后程序
#include
intmain()
{
intx=1;inty;
y=x++;
printf("y=%d",y);
intz;
z=++x;
printf("z=%d\n",z)
return0;
}
2.2程序运行结果
程序完成的功能:
用x的初始值算出y与z的值。
改正后的运行结果如图2.1所示:
图2.1改正后的运行结果
3.综合题目
3.1题目
班级成绩管理系统,对一个有N个学生的班级,每个学生有M门课程。
该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
3.2程序的主要功能
本程序实现对一个班学生某几门课程的录入,成绩的显示、成绩的保存、对成绩进行排、对成绩进行修改、对成绩进行统计(包括每门课程的最高分、平均分、超过每门平均分的人数等),运行程序后退出程序。
3.3各函数的功能
(1)input函数
利用嵌套循环语句,实现对N位学生,M门课程的输入。
(2)output函数
实现对先前输入学生成绩的输出。
(3)save函数
将输入数据存入指定文件中。
(4)rank函数
计算出所有学生的成绩总分,并按照分数从高到低,进行输出。
(5)change函数
判断密码是否正确,并对选中学生成绩进行修改。
3.4程序流程图
开始
输入x
'A'或'a'
'B'或'b'
'F'或'f'
i=0
i=0
'C'或'c'
'D'或'd'
'E'或'e'
'G'或'g'
输出
科目名
利用for循环,对每一位学生算出成绩总分
输入
科目名
将数据存入指定文件
Y
利用coun函数,进行对学生成绩的统计
详见图6
i++
i++
Y
Return0,
即退出系统
i<=M
利用tran函数,进行加密码,修改学生成绩。
详见图5
i N N i=0 i=0 输出姓名、学号 利用for循环,将学生按成绩从高到低输出 输入学生姓名 j=0 输出成绩 输入 学号 Y j++ Y Y 输入 成绩 j N i++ i++ i i N N While (1) 结束 图3.1综合题目的流程图 3.4源程序 #include #include #include #defineN10/*学生人数*/ #defineM4/*课程数*/ #definePASS890508/*修改密码*/ voidinput();/*成绩输入*/ voidoutput();/*成绩显示*/ voidsave();/*成绩保存*/ voidrank();/*成绩排序*/ voidtran();/*成绩修改*/ voidcoun();/*成绩统计*/ voiderrorinput();/*出错输出*/ structstudent/*成绩数据结构体*/ { charname[10]; intnum; floatscore[M]; doublesum; } stud[N]; charsubject_name[N][10]; intmain() { charx; while (1) { system("cls"); printf("________________________________________________________\n"); printf("***班级成绩管理系统***\n"); printf("******\n"); printf("***A[成绩录入]***\n"); printf("******\n"); printf("***B[成绩显示]***\n"); printf("******\n"); printf("***C[成绩保存]***\n"); printf("******\n"); printf("***D[成绩排序]***\n"); printf("******\n"); printf("***E[成绩修改]***\n"); printf("******\n"); printf("***F[成绩统计]***\n"); printf("******\n"); printf("***G[退出系统]***\n"); printf("******\n"); printf("________________________________________________________\n"); printf("输入你的选择: "); scanf("%c",&x); switch(x) { case'a': case'A': input(); break; case'b': case'B': output(); break; case'c': case'C': save(); break; case'd': case'D': rank(); break; case'e': case'E': tran(); break; case'f': case'F': coun(); break; case'g': case'G': return0; default: errorinput(); break; } getchar(); } return0; } voidinput()/*成绩输入*/ { inti,j; printf("请输入科目名称: \n"); for(i=0;i { printf("科目%d: ",i+1); scanf("%s",subject_name[i]); } for(i=0;i { printf("学生%d: \n",i+1); printf("姓名: "); scanf("%s",&stud[i].name); printf("学号: "); scanf("%d",&stud[i].num); for(j=0;j { printf("%s成绩: ",subject_name[j]); scanf("%f",&stud[i].score[j]); } printf("\n"); } } voidoutput()/*成绩显示*/ { inti,j; system("cls"); printf("姓名学号"); for(i=0;i<=M;i++) printf("%s",subject_name[i]);/*在一行里面输出科目名称,相互之间有间隔。 作为其下列表的目录。 */ printf("\n"); for(i=0;i { printf("%1s\t%1d\t",stud[i].name,stud[i].num); for(j=0;j printf("%5.1f\t",stud[i].score[j]); printf("\n"); } printf("! 输入任意键返回! \n"); getchar(); } voidsave()/*成绩保存*/ { FILE*fp; inti,j; if((fp=fopen("data.txt","w"))==NULL)/*文件打开*/ { printf("Fileopenerror! \n"); return; } for(i=0;i fprintf(fp,"%s",subject_name[i]); fprintf(fp,"\n"); for(i=0;i { fprintf(fp,"%5s%5d",stud[i].name,stud[i].num); for(j=0;j { fprintf(fp,"%6.1f",stud[i].score[j]); } fprintf(fp,"\n"); } if(fclose(fp))/*文件关闭*/ { printf("Cannotclosethefile! \n"); return; } printf("Filesavesucceed! \n"); getchar(); return; } voidrank()/*成绩排序*/ { voidswap(int*px,int*py); int*a; a=newint[N]; inti,j; doubletot; system("c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告