C语言课程设计.docx
《C语言课程设计.docx》由会员分享,可在线阅读,更多相关《C语言课程设计.docx(20页珍藏版)》请在冰点文库上搜索。
C语言课程设计
目录
1矩阵转位置1
1.1题目内容1
1.2算法框图1
1.3源程序及注释1
1.4运行结果2
2查找子串2
2.1题目内容2
2.2算法框图3
2.3源程序及注释3
2.4运行结果4
3学生出成绩统计程序4
3.1题目内容4
3.2算法框图5
3.3源程序及注释5
3.4运行结果8
4总结10
参考文献10
1矩阵转置
1.1题目内容
用函数调用法,求a矩阵的转置b。
主函数初始化a数,输出该数组,调用函数求数组
的转置,返回主函数后,输出处理后的数组。
1.2算法框图
定义函数fun
定义i,j
for(i=0;i<2;i++)
for(j=0;j<3;j++)
b[j][i]=a[i][j];
定义并初始化数组a[2][3]
定义b[3][2]
定义i,j
输出原数组
for(i=0;i<2;i++)
for(j=0;j<3;j++)
printf("%d",a[i][j]);
输出转置后的数
for(i=0;i<3;i++)
for(j=0;j<2;j++)
printf("%d",b[i][j])
图1.1求a矩阵的转置b的算法的N-S图
1.3源程序及注释
#include
fun(inta[2][3],intb[3][2])/*定义函数*/
{
inti,j;
for(i=0;i<2;i++)/*实现矩阵转置*/
for(j=0;j<3;j++)
b[j][i]=a[i][j];
}
main()
{inta[2][3]={2,3,4,5,6,7},b[3][2];
inti,j;
printf("原数组为:
\n");
for(i=0;i<2;i++)/*输出原数组*/
{for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}
fun(a,b);/*调用函数*/
printf("转置后的数组为:
\n");
for(i=0;i<3;i++)
{for(j=0;j<2;j++)
printf("%d",b[i][j]);
printf("\n");
}
}
1.4运行结果
图1.2求a矩阵的转置b的运行结果截图
2查找子串
2.1题目内容
编写函数fun(char*str,char*substr),该函数可以统计长度为2的字符串在str所指的字
符串中出现的次数。
例如,若str所指的字符串为:
asdasdfasdasabsd,substr所指的字符串
为as,则函数应返回值:
4
定义函数fun
inti=0,j=0
str[j]!
='\0'
str[j]==substr[0]
同时
真
str[j+1]==substr[1]
相等
假
i++
j++
输出i
定义字符串str和substr
输入字符串str
输入字符串substr
调用函数fun
2.2算法框图
图2.1查找字串的算法的N-S图
2.3源程序及注释
#include
fun(char*str,char*substr)/*定义函数*/
{
inti=0,j=0;
while(str[j]!
='\0')/*判断是否有相应的字符串*/
{if(str[j]==substr[0]&&str[j+1]==substr[1])
i++;
j++;}
printf("%d\n",i);/*输出个数*/
}
main()
{
charstr[20];/*定义字符串*/
charsubstr[2];/*定义字符串*/
gets(str);/*输入字符串*/
gets(substr);
fun(str,substr);/*调用函数*/
}
2.4运行结果
2.2查找字串运行结果截图
3学生成绩统计程序
3.1题目内容
设计结构体数组,结构中包含学生数据为:
学号、姓名、物理分数、数学分数、外语分数、计算机分数。
设计各个函数,分别实现以下功能:
(1)输入学生数据
(2)显示所有学生信息(3)统计每科的最高分、最低分、不及格人数、不及格学生的数据。
设计菜单,通过选择菜单调用以上各函数。
3.2算法框图
定义函数mulu
定义函数shuru
定义函数xianshi
定义函数tongji
定义n并附初值
定义结构体并初始化
菜单
定义r
intr;
printf("************************菜单************************\n\n\n");
printf("1.输入学生数据\n\n\n");
printf("2.显示所有学生信息\n\n\n");
printf("3.统计\n\n\n");
printf("请输入数字选择:
")
真
r==1?
假
shuru(group);break;
真
r==2?
假
xianshi(group);break;
真
r==3?
假
tongji(group);break
exit;
定义字符串a
定义i,j,k,l
调用函数
printf("请输入信息:
")
printf("\n请输入学号:
",n+1);
scanf("%s",&group[n].xh);
printf("\n姓名:
");
scanf("%s",&group[n].xm);
printf("\n物理分数:
");
scanf("%f",&group[n].wl);
printf("\n数学分数:
");
scanf("%f",&group[n].sx);
printf("\n外语分数:
");
scanf("%f",&group[n].wy);
printf("\n计算机分数:
");
scanf("%f",&group[n].jsj);
n++;
printf("\n继续输入息请按Y:
");
scanf("%s",a);
!
(strcmp(a,"Y"))||!
(strcmp(a,"y")))
printf("返回主菜单请按1,退出程序请按2:
");
scanf("%d",&l)
真
l==1?
假
{system("cls");mulu();break;
真
l==2?
假
exit
xianshi(structlibs[10])
inta,b,c,d,h,l;
printf("学号姓名物理分数数学分数外语分数计算机分数\n");
for(h=0;hprintf("%-10s%-12s%-12f%-12f%-12f%-12f\n"
s[h].xh,s[h].xm,s[h].wl,s[h].sx,s[h].wy,s[h].jsj);
printf("返回主菜单请按1,退推出程序请按2:
");
scanf("%d",&l);
真
l==1?
假
{system("cls");mulu();break;}
真
l==2?
假
exit
tongji(structlibs[10])
inte=0,g=0,d=0,f,l,m,p
floatmin1=100,min2=100,min3=100,min4=100
max1=0,max2=0,max3=0,max4=0:
求出各科成绩的最低分与最高分
求出各科不及格人数
真
l==0?
假
system("cls");mulu();break;
真
假
:
exit(0)
主函数
调用函数mulu()
图3.1学生成绩统计程序的算法的N-S图
3.3源程序及注释
#include
#include
#include
mulu();/*定义函数*/
shuru(structlib*p);
xianshi(structlibs[10]);
tongji(structlibs[10]);
intn=0;
structlib
{
charxh[8];/*学生学号*/
charxm[20];/*学生姓名*/
floatwl;/*物理成绩*/
floatsx;/*数学成绩*/
floatwy;/*外语成绩*/
floatjsj;
}group[20];
mulu()
{
intr;
printf("************************菜单************************\n\n\n");
printf("1.输入学生数据\n\n\n");
printf("2.显示所有学生信息\n\n\n");
printf("3.统计\n\n\n");
printf("4.退出程序\n\n\n");
printf("*****************************************************\n\n\n");
printf("请输入数字选择:
");
scanf("%d",&r);
system("cls");
switch(r)
{
case1:
shuru(group);break;
case2:
xianshi(group);break;
case3:
tongji(group);break;
case4:
exit;
}
}
shuru(structlib*p)
{
chara[2];
inti,j,k,l;
structlibs[10];
printf("请输入信息:
");
do/*连续输入学生信息*/
{
printf("\n请输入学号:
",n+1);
scanf("%s",&group[n].xh);
printf("\n姓名:
");
scanf("%s",&group[n].xm);
printf("\n物理分数:
");
scanf("%f",&group[n].wl);
printf("\n数学分数:
");
scanf("%f",&group[n].sx);
printf("\n外语分数:
");
scanf("%f",&group[n].wy);
printf("\n计算机分数:
");
scanf("%f",&group[n].jsj);
n++;
printf("\n继续输入息请按Y:
");
scanf("%s",a);
}
while(!
(strcmp(a,"Y"))||!
(strcmp(a,"y")));
printf("返回主菜单请按1,退出程序请按2:
");
scanf("%d",&l);
switch(l)
{
case1:
{system("cls");mulu();break;}
case2:
exit;
}
}
xianshi(structlibs[10])
{
inta,b,c,d,h,l;
printf("学号姓名物理分数数学分数外语分数计算机分数\n");
for(h=0;hprintf("%-10s%-12s%-12f%-12f%-12f%-12f\n",
s[h].xh,s[h].xm,s[h].wl,s[h].sx,s[h].wy,s[h].jsj);
printf("返回主菜单请按1,退推出程序请按2:
");
scanf("%d",&l);
switch(l)
{
case1:
{system("cls");mulu();break;}
case2:
exit;
}
}
tongji(structlibs[10])
{inte=0,g=0,d=0,f,l,m,p;
floatmin1=100,min2=100,min3=100,min4=100,
max1=0,max2=0,max3=0,max4=0;
inta=0;
for(m=0;m{if(s[m].wlif(s[m].wl>max1)max1=s[m].wl;elsemax1=max1;
if(s[m].sxif(s[m].sx>max2)max2=s[m].sx;elsemax2=max2;
if(s[m].wyif(s[m].wy>max3)max3=s[m].wy;elsemax3=max3;
if(s[m].jsjif(s[m].jsj>max4)max4=s[m].jsj;elsemax4=max4;}
printf("物理数学外语计算机\n");
printf("最低分");
printf("%-12f%-12f%-12f%-12f\n",min1,min2,min3,min4);
printf("最高分");
printf("%-12f%-12f%-12f%-12f\n",max1,max2,max3,max4);
printf("物理不及格学生数据及人数:
");
for(p=0;p{if(s[p].wl<60){printf("%-10s%-12s%-12f",s[p].xh,s[p].xm,s[p].wl);a++;}
}printf("%d\n",a);
printf("数学不及格学生数据及人数:
");
for(p=0;p{if(s[p].sx<60){printf("%-10s%-12s%-12f",s[p].xh,s[p].xm,s[p].sx);e++;}
}printf("%d\n",e);
printf("外语不及格学生数据及人数:
");
for(p=0;p{if(s[p].wy<60){printf("%-10s%-12s%-12f",s[p].xh,s[p].xm,s[p].wy);g++;}
}printf("%d\n",g);
printf("计算机不及格学生数据及人数:
");
for(p=0;p{if(s[p].jsj<60){printf("%-10s%-12s%-12f",s[p].xh,s[p].xm,s[p].jsj);d++;}
}printf("%d\n",d);
printf("返回主菜单请按0,退出程序请按1:
");
scanf("%d",&l);
switch(l)
{
case0:
{system("cls");mulu();break;}
case1:
exit(0);
}
}
main()
{
mulu();
}
3.4运行结果
图3.2学生成绩统计程序运行结果截图(A)-显示主菜单
图3.3学生成绩统计程序行结果截图(B)-输入学生信息
图3.4学生成绩统计程序运行结果截图(C)-输出所有学生信息
图3.5学生成绩统计程序运行结果截图(D)-统计学生信息
4总结
我的课程设计是矩阵转置与查找子串、学生成绩统计程序的设计。
经过近一周
的设计和同学的帮助,我的程序终于完成了!
达到了要求的目的。
对于我们这些新手来说,这是很大的考验,课设题目的难度很大,也非常的新颖,我
每一次尝试,都会有新的体会。
经过自己的琢磨,听取了同学的建议,还查阅了很多书籍,
才做到了心中有数,才了解了C语言课程设计的真正用意——培养自学能力,养成程序编辑
的好习惯。
书山有路勤为径,我要积极,要把握,要努力。
我们自己能做到的仅此而已,因
为人力也有所不能及。
在课程设计过程中,刚开始我感到简单,但在完成课设的过程中遇到了许多问题,例
如怎样去规划,不注意编写程序的细节,心理急躁。
在写最后一个程序时,心理急躁,想放
弃,反复的调试,时间正在消磨我的意志。
现在我终于完成了,一时欣喜。
谢谢给我指点迷津的老师。
参考文献
[1]马秀丽刘志妩李筠.《C语言程序设计》.北京.清华大学出版社.2008年3月