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