C语言实训报告.docx
《C语言实训报告.docx》由会员分享,可在线阅读,更多相关《C语言实训报告.docx(17页珍藏版)》请在冰豆网上搜索。
![C语言实训报告.docx](https://file1.bdocx.com/fileroot1/2023-1/6/a8f63bb8-6f59-4fbc-a1d4-3328969633a4/a8f63bb8-6f59-4fbc-a1d4-3328969633a41.gif)
C语言实训报告
成都航空职业技术学院
《C语言程序设计》
课程设计报告
设计题目:
C语言应用能力
系别:
航空电子工程系专业:
应用电子
班级:
213344班学号:
132063
学生姓名:
李佳指导教师:
万蓉老师
完成时间:
2014年5月29日
课程设计评价表
学生姓名:
李佳设计时间(周/学期):
一周
项目
权重
自评
小组长评价
教师评价
工作态度
20
20
选题质量
10
8
设计质量
50
45
报告质量
20
18
合计
100
91
综合评价和建议
(指导教师填写)
小组长
李佳
教师
说明:
1、工作态度包括出勤情况,学习态度。
2、选题质量为题目的难度和适用性。
3、设计质量是针对自选的任务而言,每一个任务的程序设计正确,达到题目要求,功能完善,为50分;程序设计正确,达到题目要求,功能基本完善,为40分;程序设计正确,基本达到题目要求,功能基本完善,为30;程序设计不正确,为20分;未作和抄袭,则为0分。
《C语言程序设计》课程设计报告
一、课程设计目的
本课程设计是高等职业教育电子技术类各专业重要的实践性环节之一,是在学生学习《C语言程序设计》课程中进行的一次综合训练。
本课程设计的目的和任务:
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
二、课程设计要求
1.分析课程设计题目的要求
2.写出详细设计说明
3.编写程序代码,调试程序,使其能正确运行
4.设计完成后提交课程设计报告
三、课程设计题目、程序代码(要求程序有必要的注释)
题目:
题目1在主函数中输入密码,若密码正确,调用一个体重测量仪函数,要求当输入5个人的身高和体重后,计算出体重指数,根据指数情况进行判断输出结论。
体重指数=体重(公斤)除身高(米)的平方(kg/m2)
判断标准:
重度肥胖:
体重指数>=40
中度肥胖:
35<=体重指数<40
轻度肥胖:
30<=体重指数<35
微度肥胖:
25<=体重指数<30
正常体重:
18<=体重指数<25
偏瘦:
体重指数<18
编程要求:
若密码错误输入三次,则程序退出。
#include
#include
#include
voidf();
voidmain()
{
chara[30];
inti=0;
printf("请输入密码:
\n");
while
(1)
{
gets(a);
if(strcmp(a,"222")!
=0)
{
i++;
if(i==3)
{
printf("密码输入了三次,无权进入!
\n");
exit(0);
}//当密码输错三次后,自动退出程序
printf("请输入密码:
\n");
}//当密码输错且小于三次时,重复输入密码步骤
else
break;//当密码输入正确的时候,跳出输入密码项,进入体重计算步骤
}
f();//密码输入正确后用调用函数来实现体重计算
}
voidf()
{
inti=0;
floata[30],b[30],t[140];
for(i=0;i<5;i++)
{
printf("请输入第%d个人的身高和体重(用逗号隔开):
",i+1);
scanf("%f,%f",&b[i],&a[i]);
}//用循环语句实现分别输入5个人身高体重步骤
for(i=0;i<5;i++)
{
t[i]=a[i]/(b[i]*b[i]);
if(t[i]>=40)
printf("第%d个人的体重指数:
重度肥胖\n",i+1);
elseif(t[i]>=35&&t[i]<40)
printf("第%d个人的体重指数:
中度肥胖\n",i+1);
elseif(t[i]>=30&&t[i]<35)
printf("第%d个人的体重指数:
轻度肥胖\n",i+1);
elseif(t[i]>=25&&t[i]<30)
printf("第%d个人的体重指数:
微度肥胖\n",i+1);
elseif(t[i]>=18&&t[i]<25)
printf("第%d个人的体重指数:
正常体重\n",i+1);
elseif(t[i]<18)
printf("第%d个人的体重指数:
偏瘦\n",i+1);
}//用循环语句实现分别计算5个人体重指数步骤
}
题目2用户登录程序。
编程要求:
提示用户输入用户名和密码,判断是否为合法用户,如果合法调用求圆的面积函数和体积函数,否则要求重新输入,允许输入三次,若三次都错,显示“passworderror!
youcannotusesoftware.”,退出。
#include
#include
#include
#definePI3.14//定义PI的值为3.14
voidf();
voida();
voidb();
voidmain()
{
chara[30],b[30];
inti=0;
printf("请输入用户名:
\n");
while
(1)
{
gets(a);
printf("请输入密码:
\n");
gets(b);
if((strcmp(a,"LIJIA")!
=0)||(strcmp(b,"222")!
=0))
{
i++;
if(i==3)
{
printf("passworderror!
youcannotusesoftware.\n");
exit(0);/*当密码输错三次后,输出passworderror!
youcannotusesoftware并自动退出程序*/
}
printf("请再次输入用户名:
\n");//当密码输错且小于三次时,重复输入密码步骤
}
else
break;/*当用户名和密码都输入正确的时候,跳出输入用户和密码项,进入调用函数f()*/
}
f();
}
voidf()
{
intx;
printf("恭喜你,输入正确!
\n");
qq:
printf("亲,请选择哦(输入1-3)\n");
printf("1.求圆面积程序\n");
printf("2.求球的体积程序\n");
printf("3.退出\n");
scanf("%d",&x);
if(x==1)
a();
elseif(x==2)
b();
elseif(x==3)
exit(0);
else
{
printf("没有这个选项哦\n");
gotoqq;//当输入数字未在1~3中时,重新进入菜单选项
}
}
voida()
{
doublex,s;
printf("请输入圆的半径\n");
scanf("%lf",&x);
s=3.14*x*x;
printf("%.2lf=3.14*%.2lf*%.2lf\n",s,x,x);
}
voidb()
{
doublex,v;
printf("请输入球的半径\n");
scanf("%lf",&x);
v=4/3*3.14*x*x*x;
printf("%.2lf=4/3*3.14*%.2lf*%.2lf*%.2lf\N",v,x,x,x);
}
题目3每个公民的身份号码为十八位,最后一位是校验码。
输入身份号码的前十七位,请根据下面的算法,计算出最后一位的编码。
按照中华人民共和国国家标准GB11643-1999规定中华人民共和国公民身份号码校验码的计算方法即为ISO7064:
1983.MOD11-2校验码计算法。
假设某一17位数字是
17位数字12345678901234567
加权因子7910584216379105842
计算17位数字各位数字与对应的加权因子的乘积的和S:
1×7+2×9+3×10+4×5+5×8+6×4+7×2+8×1+9×6+0×3+1×7+2×9+3×10+4×5+5×8+6×4+7×2=368;
计算S÷11的余数T:
368mod11=5;计算(12-T)÷11的余数R,如果R=10,校验码为字母“X”;如果R≠10,校验码为数字“R”:
(12-5)mod11=7。
该17位数字的校验码就是7,聚合在一起为123456789012345677。
#include
voidmain()
{
intn[17],m[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2},i=0,s=0,t,r;
printf("请输入您身份证号前17位(小编免费为你推算第十八位哦O(∩_∩)O)\n");
for(i=0;i<17;i++)
{
scanf("%d",&n[i]);
s+=n[i]*m[i];
}//利用循环函数使输入身份证号的前17位
t=s%11;
r=(12-t)%11;
for(i=0;i<17;i++)
printf("%d",n[i]);
if(r==10)
printf("X\n");
else
printf("%d\n",r);
}
题目4用随机函数产生0~9内的随机数,编写一个程序能够计算二个数和三个数的和差积商运算。
随机产生10以内的整数,出题的数量由个人自定。
编程要求:
人机界面良好,有实用性。
#include
#include
#include
a();
b();
main()
{
intt;
printf("1两个数的算术运算\n");
printf("2三个数的算术运算\n");
printf("3退出\n");
scanf("%d",&t);
{
if(t==1)
a();
elseif(t==2)
b();
elseif(t==3)
exit(0);
}//根据输入数字,进入对应功能项
}
a()
{
inta,b,c,d,e,i=0,n,m=1;
printf("亲,想做几道题呢?
O(∩_∩)O\n");
scanf("%d",&n);//根据输入数字确定出题数量
for(m=1;m<=n;m++)//利用循环函数实现反复出题功能
{
printf("第%d道题\n",m);
srand(time(NULL));
a=rand()%9+1;
b=rand()%9+1;
c=rand()%4+1;
switch(c)
{
case1:
d=a+b;printf("%d+%d=",a,b);break;
case2:
d=a-b;printf("%d-%d=",a,b);break;
case3:
d=a*b;printf("%d*%d=",a,b);break;
case4:
d=a/b;printf("%d/%d=",a,b);break;
}//用了三个产生随机的语句,产生随机数a,b,产生随机算法C
while
(1)
{
scanf("%d",&e);
if(d!
=e)
{
i++;
if(i==3)
{
printf("你都错三次了,%>_<%\n");
printf("正确答案是:
%d\n",d);
break;
}//当输入答案错误三次,自动弹出正确答案并进入下一题
printf("请再次输入答案哦\n");
}//当答案输入错误在三次内,让其重复输入答案
else
break;//当答案输入正确,跳出循环
}
}
}
b()
{
{
inta,b,c,d,e,i=0,n,m=1,o;
printf("亲,想做几道题呢?
O(∩_∩)O\n");
scanf("%d",&n);//根据输入数字确定出题数量
for(m=1;m<=n;m++)//利用循环函数实现反复出题功能
{
printf("第%d道题\n",m);
srand(time(NULL));
a=rand()%9+1;
b=rand()%9+1;
o=rand()%9+1;
c=rand()%17+1;
switch(c)
{
case1:
d=a+b+o;printf("%d+%d+%d=",a,b,o);break;
case2:
d=a+b-o;printf("%d+%d-%d=",a,b,o);break;
case3:
d=a+b*o;printf("%d+%d*%d=",a,b,o);break;
case4:
d=a+b/o;printf("%d+%d/%d=",a,b,o);break;
case5:
d=(a+b)*o;printf("(%d+%d)*%d=",a,b,o);break;
case6:
d=(a+b)/o;printf("(%d+%d)/%d=",a,b,o);break;
case7:
d=a-b+o;printf("%d-%d+%d=",a,b,o);break;
case8:
d=a-b-o;printf("%d-%d-%d=",a,b,o);break;
case9:
d=a-b*o;printf("%d-%d*%d=",a,b,o);break;
case10:
d=a-b/o;printf("%d-%d/%d=",a,b,o);break;
case11:
d=(a-b)*o;printf("%(d-%d)*%d=",a,b,o);break;
case12:
d=(a-b)/o;printf("(%d-%d)/%d=",a,b,o);break;
case13:
d=a*b*o;printf("%d*%d*%d=",a,b,o);break;
case14:
d=a*b/o;printf("%d*%d/%d=",a,b,o);break;
case15:
d=a*(b/o);printf("%d*(%d/%d)=",a,b,o);break;
case16:
d=a/b/o;printf("%d/%d/%d=",a,b,o);break;
case17:
d=a/(b/o);printf("%d/(%d/%d)=",a,b,o);break;
}//用了四个产生随机的语句,产生随机数a,b,O产生随机算法C
while
(1)
{
scanf("%d",&e);
if(d!
=e)
{
i++;
if(i==3)
{
printf("你都错三次了,%>_<%\n");
printf("正确答案是:
%d\n",d);
break;
}//当输入答案错误三次,自动弹出正确答案并进入下一题
printf("请再次输入答案哦\n");
}//当答案输入错误在三次内,让其重复输入答案
else
break;//当答案输入正确,跳出循环
}
}
}
}
题目6选优秀学生干部程序。
设有5个候选人,每人每次输入2个的候选人的号,且不得重复计票。
要求最后输出每个人得票的结果和第一名的姓名。
编程要求:
人机界面良好,有实用性。
加分项:
投票人数随机,可以弃权,也可以只投一票或二票。
#include
voidmain()
{
intx,a=0,b=0,c=0,d=0,e=0,f=0,i,max1,max2,max3,max4;
while
(1)
{
printf("你想为谁投票呢?
请输入他们的编号(每人每次输入2个的候选人的号,且不得重复计票。
可以弃权(按0哦)也可以只投一票或二票)\n");
printf("1王二小\n");
printf("2哪吒\n");
printf("3三毛\n");
printf("4葫芦娃\n");
printf("5熊二\n");
for(i=0;i<2;i++)
{
scanf("%d",&x);
if(x==1)
a++;
elseif(x==2)
b++;
elseif(x==3)
c++;
elseif(x==4)
d++;
elseif(x==5)
e++;
elseif(x==0)
f++;
}//根据输入数字为相应选手票数进行累加
if(x==-1)
break;//如果输入-1,则结束投票
}
max1=(a>b?
a:
b);
max2=(max1>c?
max1:
c);
max3=(max2>d?
max2:
d);
max4=(max3>e?
max3:
e);//利用判断语句,判断出最高票选手
if(max4==a)
printf("得票最高的是:
王二小\n");
elseif(max4==b)
printf("得票最高的是:
哪吒\n");
elseif(max4==c)
printf("得票最高的是:
三毛\n");
elseif(max4==d)
printf("得票最高的是:
葫芦娃\n");
elseif(max4==e)
printf("得票最高的是:
熊二\n");
printf("最高票数为:
%d\n",max4);
printf("得票结果为\n");
printf("1王二小得票:
%d\n",a);
printf("2哪吒得票:
%d\n",b);
printf("3三毛得票:
%d\n",c);
printf("4葫芦娃得票:
%d\n",d);
printf("5熊二得票:
%d\n",e);
printf("最高票数为:
%d\n",max4);
}
四、总结(不少于800字)
能说最后一天是被C语言吓醒的麽?
对于我这种从来都在7点以后起来的人来说,在星期四那个黑色早晨,一串串C语言符号打断了我和周公的“约会”,什么自定义函数,什么printf.scanf……活生生的给我吓醒了呀。
您知道那会儿几点麽?
6点过一点,是的,是6点过一点点。
因为是连着的三周是实训,所以其实我很累。
(可能对有的同学来说,恰恰与我相反)说句小欠虐的话,好想上课啊…..
对于C语言,刚刚看到老师出的题的时候,哇噻,老师您真狠。
好难的感觉。
周一的一早上一道题都没没做成功.是传说中的没进入状态么?
因为是陌生的老师,遇到困难也没好意思问,其实好多同学都是。
下午的时候,好多同学都往后坐了,可能就是因为是陌生老师的关系吧。
反正第一天就只做了一道题。
不过当时超有成就感的,那么长的程序,平时让我看都可能会迷糊进去。
现在居然我能写出来了,而且功能杠杠的。
不过看到后面的题,心情顿时忧伤了。
周二的时候,万来师来了,大概是自己人的原因,第一排是坐满了,问题的人明显增多了。
第二天的,是具有历史意义的一天。
哈哈哈,请容我小嘚瑟一下。
那天,我成功地做成了第四题。
其实我也没读懂题,但是呢从老师发的EXE文件里找到了灵感。
“琪琪,想做几道题呢?
”是的,就是它。
运行体验了无数次后,我也成功的编出来了。
本来也是没觉得有怎样。
但是,,,,,后来很多同学来问我这道题,当时那个心情:
虚荣心得到了极大满足啊(原谅我是个凡人)那天,他们都说我是人品爆发,一天做了两道题。
其实,还是很满足的。
周三,做了两道,但点名那道简直把我虐爆。
编译运行毫无问题,就是因为显示它不听指挥啊。
那挣扎了很久后,最终决定放弃治疗了。
因为说周四要先检查做题多的同学,同时也希望拿到老师手里的高分。
那天晚上去找空机房了。
(电脑版本太低,装不了C++……)只是、、、、、没有上课的机房都是锁了的。
找了一个在上选修的班级,给那个老师说了一下,最终混匿在一群选修学生中苦逼的做着C语言。
不过结果还是让人满意的,成功地做了一道题,还有一道半成品。
周四早上,还在苦苦挣扎我的点名程序,奈何它……只怪我学艺不精啊。
同时呢也在将前一晚的半成品继续加工,毕竟,写得越多,分越高吧。
(原谅我这么庸俗……)。
只是老师来检查的时候点名程序和那道多半成品也没成功。
不过当时真好想和老师说一句,能这两题算一题吗?
我就可以算六道了。
最终还是把这句话给噎回去了。
好多同学都说我程序长这个问题。
是,的确,和有些同学比起来,我的程序确实长了好多。
我能申辩一下麽?
我觉得要站在一个运行我们生成EXE文件的使用者来编程,因为我们编的程序确实是有实用性啊。
随机产生算式的那道题用在我一年级的妹妹身上确实是好啊。
站在她们使用的角度那就需要足够的提示语。
一般的提示语一句就能解决问题,那对于循环语句中的提示就得下功夫了。
还有对于菜单选项,要是输入选项以外的键,我会让它产生提示语并重新进入菜单选项。
这或许在一般同学眼里又是“多余”的语句。
但至少我不那么认为。
其实,实训里也有充满激动人心的时刻啊。
那就是准备运行的时候,看着那个三角符号,当按下去产生小黑框的时候,心里那个激动劲儿啊,和中了彩票一个效果。
苦逼的事是,没有产生小黑框,并且按下F4显示一堆错。
心情那叫一个凉啊。
更苦逼的事是,产生小黑框,但……运行出来不是想要的,天哪,找错都没地儿找啊。
反正实训的每天都会听到各种吐槽各种抱怨,但,作业也还要继续。
对于那些编写好的程序,我想,我会像保存模电,电子工艺实训产品一样把它保存好。
尽管在编写前和编写中,它让我抓耳挠腮,各种烦躁,甚至发誓再也不碰它,可是,看到编好的程序却还是那么高兴的。
毕竟,一周的心血呢。
说说实训的收获吧。
最大的收获是我