C语言程序设计.docx
《C语言程序设计.docx》由会员分享,可在线阅读,更多相关《C语言程序设计.docx(26页珍藏版)》请在冰豆网上搜索。
C语言程序设计
C语言课程设计
一、基本要求题目3
1、题目及要求3
2、流程图3
3、源程序3
4、运行结果4
二、改错题4
1、错误程序4
2、流程图5
3、正确程序6
4、运行结果6
三、综合题目7
1、题目及要求7
2、流程图8
3、源程序14
4、运行结果33
一、基本要求题
1、题目及其要求
1、 编写求以下函数 p=m!
/(n!
*(m-n)!
)
2、流程图
3、程序代码
#include
doublefact(intn);
intmain(void)
{
intm,n;
doubleresult;
printf("Enterm:
");
printf("Entern:
");
scanf("%d%d",&m,&n);
if(m>n)
{result=fact(m)/fact(n)*fact(m-n);
printf("%f",result);}
else
printf("Noresult!
");
return0;
}
doublefact(intn)
{
inti;
doubleproduct;
product=1;
for(i=1;i<=n;i++){
product=product*i;
}
returnproduct;
}
4、运行结果
二、改错题
1、错误程序
#include
#include
voidfun(inta,b)
{
intt;
t=b;b=a;a=t;
}
main()
{
inta,b;
clrscr();
printf(“Entera,b:
”);
scanf(“%d%d”,&a,&b);
fun(&a,&b);
printf(“a=%db=%d\n”,a,b);
}
2、流程图
3、正确程序
#include
#include
voidfun(int*a,int*b)
{
intt;
t=*b;*b=*a;*a=t;
}
main()
{
inta,b;
clrscr();
printf("Entera,b:
");
scanf("%d%d",&a,&b);
fun(&a,&b);
printf("a=%db=%d\n",a,b);
}
4、运行结果
}
}
三、综合题
1、题目要求:
写求班级成绩管理系统的程序。
2、任务:
定义结构体数组,定义结构体成员num,name,chinese,math,English,politics,sum,来实现成员的引用。
并且通过调用函数,来实现成绩的录入,显示,保存,排序,修改与统计的功能。
主函数:
外层用do—while语句来控制进行多次操作,内层用switch—case语句进行选择。
录入函数:
用for循环分别对结构体变量一一赋值。
显示函数:
同样采用for循环将录入信息输出。
保存函数:
采用文件指针将数据保存到文件中。
排序函数:
用经典排序算法—冒泡排序法,对成员进行总分由高到底排序。
修改函数:
先进行密码验证,若正确,才能进行修改,否则推出修改界面。
进入后,用动do—while控制进行多次循环修改,修改时,用比较学号的方法,
找到该同学,对该同学的成绩进行修改。
统计函数:
分三块进行统计,分别是每门课程的最高成绩、平均成绩、超过平均成绩的人数,它们都需要通过调用函数来实现此功能。
调用函数同样用了do—while和switch—case语句来实现函数的调用。
统计每门课程的最高成绩函数:
先假设第一个是最高分,再用for循环来实现找出最高成绩,再将此同学的信息输出。
求平均成绩函数:
分别用该门课程的总分除以人数即可。
求超过平均分的人数:
用for循环进行对每个人进行控制,让他们的该门课程与平均分比较,从而得出结果。
3、流程图:
主函数:
录入函数:
设计思路:
用for循环来控制输入
显示函数:
设计思路:
用for循环来实现成绩显示
保存函数:
设计思路:
调用文件保存成绩
排序函数:
设计思路:
用冒泡排序法按成绩由高到低排序
统计函数:
设计思路:
用do--while语句和switch--case语句实现对统计方案的选择
最高成绩函数:
设计思路:
分别令第一个人的成绩为最高成绩,
再用for循环找到各门功课的最高成就
平均成绩:
设计思路:
求出总分,再求平均成绩
超过平均成绩的人数:
设计思路:
让该门课程的所有分数同average作比较,
计算超过平均分的人数。
4、源程序;
#include
#include
#include
#include
#defineN10
/*定义结构体数组*/
structstudent
{
intnum;
charname[15];
floatmath,chinese,English,politics,sum;
}stu[N],temp;
floatmax1,max2,max3,max4;/*定义全局变量*/
doublesum1,sum2,sum3,sum4;/*定义全局变量*/
doubleaverage1,average2,average3,average4;/*定义全局变量*/
/*主函数*/
intmain()
{
voidluru();/*成绩录入*/
voidxianshi();/*成绩显示*/
voidbaocun();/*成绩保存*/
voidpaixu();/*成绩排序*/
voidxiugai();/*成绩修改*/
voidtongji();/*成绩统计*/
charch;
do
{
printf("\t\t*******************************************\n");
printf("\t\t*******************************************\t\t\t\n");
printf("\t\t**---------------------------------------**\n");
printf("\t\t班级成绩管理系统\n");
printf("\t\t1:
成绩录入\n");
printf("\t\t2:
成绩显示\n");
printf("\t\t3:
成绩保存\n");
printf("\t\t4:
成绩排序\n");
printf("\t\t5:
成绩修改\n");
printf("\t\t6:
成绩统计\n");
printf("\t\t0:
退出系统\n");
printf("\t\t**---------------------------------------**\n");
printf("\n\t\t请选择0~6的操作:
");
ch=getchar();
switch(ch)
{
case'1':
luru();break;
case'2':
xianshi();break;
case'3':
baocun();break;
case'4':
paixu();break;
case'5':
xiugai();break;
case'6':
tongji();break;
case'0':
break;
}
}while((ch=getchar())!
='0');
getch();
return0;
}
/*成绩录入*/
voidluru()
{
inti;
/*录入成绩存入数组*/
for(i=0;i{
printf("请输入学号姓名数学成绩语文成绩英语成绩政治成绩:
\n");
scanf("%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].math,&stu[i].chinese,&stu[i].English,&stu[i].politics);
}
/*计算总分*/
for(i=0;istu[i].sum=stu[i].math+stu[i].chinese+stu[i].English+stu[i].politics;
}
/*成绩显示*/
voidxianshi()
{
inti;
printf("学号姓名数学成绩语文成绩英语成绩政治成绩总分\n");
for(i=0;iprintf("%d%7s%10.2f%10.2f%10.2f%10.2f%10.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].chinese,stu[i].English,stu[i].politics,stu[i].sum);
}
/*成绩保存*/
voidbaocun()
{
inti;
FILE*fp;/*定义文件指针*/
fp=fopen("chengji.txt","w+");
fprintf(fp,"学号姓名数学成绩语文成绩英语成绩政治成绩总分\n");
for(i=0;ifprintf(fp,"%d%12.2s%12.2f%12.2f%12.2f%12.2f%12.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].chinese,stu[i].English,stu[i].politics,stu[i].sum);
printf("\n\n*******************恭喜您,成绩保存成功!
*******************\n\n");
}
/*成绩排序*/
voidpaixu()
{
/*冒泡法排序*/
inti,j;
for(j=1;jfor(i=0;iif(stu[i].sum{
temp=stu[i];
stu[i]=stu[i+1];
stu[i+1]=temp;
}
printf("按总分从高到低排序为:
\n");
printf("学号姓名数学成绩语文成绩英语成绩政治成绩总分\n");
for(i=0;iprintf("%d%7.2s%10.2f%10.2f%10.2f%10.2f%10.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].chinese,stu[i].English,stu[i].politics,stu[i].sum);
printf("\n");
}
/*成绩修改*/
voidxiugai()
{
inti,j,flag=1;
chark;
charstr[10];
intst[10];
for(j=