c语言课程设计报告563413Word下载.docx
- 文档编号:16456636
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:16
- 大小:83.42KB
c语言课程设计报告563413Word下载.docx
《c语言课程设计报告563413Word下载.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告563413Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
4.2设计思路5
4.3程序框图5
4.4程序(附录)5
4.5调试过程5
5.课程总结5
5.1任务完成情况6
5.2能力提高情况6
5.3存在问题及努力方向6
5.4意见与建议6
6.附录6
6.1实践1程序清单6
6.2实践2程序清单6
6.3实践3程序清单6
6.4实践4程序清单6
猜数游戏
1.1题目
1.题目:
程序1编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!
”,否则提示“Wrong!
”,并告诉人所猜的数是大还是小,然后结束游戏。
要求每次运行程序时机器所“想”的数不能都一样。
程序2编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;
否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。
程序3编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;
否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏。
程序4编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;
否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。
每次运行程序可以反复猜多个数,直到操作者想停止时才结束。
2.目标:
此次试验重点在于循环变量的用法和随机函数的使用,能够熟练的调用函数循环函数,能接受整型变量(int)和输入(输出)函数(printf),限制小于0和大于100的整数输入,格式要求逻辑合理,规范美观。
1.2设计思路
1.使用MicrosoftVisualC++6.0来编写程序。
2.使用用srand(time(NULL))调用随机函数,用if-else语句,while语句和for语句调用循环函数,实现0到10次循环。
1.3程序框图
1.4程序(附录)
程序代码放在报告最后以附录形式提交
1.5调试过程
调试时,先随意输入了一个数如输入23,而随机数显示为60,故结果猜错,则会显示数小了,重来一次,已猜过一次;
经过重复调试,程序符合要求。
而调试时也出了一点小问题,函数的总体变量和局部变量定义出错,经过细心查找书本,查看程序,最总得以解决。
数组
2.1题目
数组编程
1.学生成绩统计(一维数组)
从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)以直方图方式统计各分数段的学生人数及所占的百分比。
形式如下:
分数段学生人数图形
<
603(10%)***
60-698(…)********
70-797(…)*******
80-898(…)********
>
=904(…)****
2.成绩排名次(二维数组)
某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。
考试后要求:
(1)计算每个学生的总分和平均分;
(2)按总分成绩由高到低排出成绩的名次;
(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;
(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数
2.目标:
1.此次试验使用一维数组,二维数组和结构体来统计学生统计不及格人数,不及格学生名单,平均分及平均分之上的学生人数和名次表,它限制小于0和大于100的整数输入,格式要求用直方图的形式。
2.2设计思路
1.解题思路:
使用二维数组score[30][5]来存放姓名,学号等,再用结构体函数记录输入成绩的学生变量,计算总分、平均分,调用函数比较学生成绩,得出排名,再根据数组定义对应存放各变量的位置,最后得到名次表和直方图。
2.使用MicrosoftVisualC++6.0编程,调用一维、二维数组和结构体,及判断语句(if-else)实现循环,从而调用函数实现目的。
2.3程序框图
1
NO
Yes
Wrong
2
2.4程序(附录)
2.5调试过程
1.程序一调试时,随意输入学生人数,如5人,结果如下,经过反复调试,确认程序无误。
调试也出现了一点下问题------调试窗口不美观,经过多次调整,才解决问题。
2.程序二调试时,随意输入30名学生学号,姓名,分数,结果如下,经过多次反复调试,确认程序无误,调试时由于程序较长,出现一些细节错误,经过反复检查,才解决。
3实践3:
函数
3.1题目函数编程
1.将实践二
(1)的程序利用函数的思想进行修改。
要求函数参数中包含一维数组。
2.掷骰子游戏
编写程序模拟掷骰子游戏。
已知掷骰子游戏的游戏规则为:
每个骰子有6面,这些面包含1、2、3、4、5、6个点,投两枚骰子之后,计算点数之和。
如果第一次投的点数和为7或11,则游戏者获胜;
如果第一次投的点数和为2、3或12,则游戏者输;
如果第一次投的点数和为4、5、6、8、9或10,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。
如果投掷7次仍未赚到该点数,则游戏者输。
【思考题】将游戏规则改为:
计算机想一个数作为一个骰子掷出的点数(在用户输入数据之前不显示该点数),用户从键盘输入一个数作为另一个骰子掷出的点数,再计算两点数之和。
其余规则相同,然后请读者重新编写该程序。
此次试验使用随机函数生成随机数(1-6)代表掷出色子的点数,用while语句和if-else语句来实现循环使之符合色子掷出不同点数的不同结果。
支持#include<
stdio.()
{
while
(1)
intx;
inti=0;
inty;
intn=1;
intm=9;
srand(time(NULL));
while(i==0)
x=rand()%100+1;
printf("
请输入一个1~100之间的整数\n"
);
while(n<
=10)
scanf("
%d"
&
y);
if(x==y)
{
printf("
您猜了%d次,终于猜对了\n"
n);
break;
}
else
if(x<
y)
您猜的数太大了\n"
您已经猜了%d次\n"
您还有%d次机会\n"
m);
else
您猜的数太小了\n"
}
n++;
m--;
printf("
正确答案是%d\n"
x);
return0;
6.2实践2程序清单
1.
#include<
{
intsum;
intscore[30];
intj=1;
inta=0,b=0,c=0,d=0,e=0;
floatq,w,s,r,t;
请输入学生人数:
"
sum);
if(sum<
31&
&
sum>
0)
for(n=1;
n<
=sum;
n++)
请输入第%d个同学的分数:
scanf("
score[n]);
}
n=1;
=sum)
if(score[n]<
60)e++;
elseif(score[n]>
59&
score[n]<
70)d++;
69&
80)c++;
79&
90)b++;
89&
101)a++;
elsebreak;
n++;
q=(esum)*100;
w=(dsum)*100;
s=(csum)*100;
r=(bsum)*100;
t=(asum)*100;
分数段学生人数图形\n"
60%d(%.f%%)"
e,q);
n=1;
for(n=1;
=e;
*"
\n"
60-69%d(%.f%%)"
d,w);
=d;
70-79%d(%.f%%)"
c,s);
=c;
80-89%d(%.f%%)"
b,r);
=b;
=90%d(%.f%%)"
a,t);
=a;
#include<
structstudent
{intID;
charNAME[9];
intMT;
intEN;
intPH;
intALL;
doubleAVE;
}stu[30],t;
inta,b,c,d,i=0,j;
for(a=0;
a<
NUM;
a++)
输入第%d个同学的姓名数学分数英语分数物理分数\n”);
姓名:
%s"
stu[a].NAME);
if(0==strlen(stu[a].NAME))
\n数学分数:
do
stu[a].MT);
if(stu[a].MT>
100||stu[a].MT<
\n请重新输入数学分数:
}while((stu[a].MT>
100)||(stu[a].MT<
0));
\n英语分数:
{scanf("
stu[a].EN);
if(stu[a].EN>
100||stu[a].EN<
\n请重新输入英语分数:
}while((stu[a].EN>
100)||(stu[a].EN<
\n物理分数:
stu[a].PH);
if(stu[a].PH>
100||stu[a].PH<
\n请重新输入物理分数:
}while((stu[a].PH>
100)||(stu[a].PH<
第%d个同学的总分平均分\n"
a+1);
stu[a].ALL=(stu[a].MT+stu[a].EN+stu[a].PH);
stu[a].AVE=(stu[a].MT+stu[a].EN+stu[a].PH)3;
%d%-8.1f"
stu[a].ALL,stu[a].AVE);
stu[a].ID=a+1;
getchar();
c=a;
for(b=0;
b<
c;
b++)
for(d=0;
d<
c-1-b;
d++)
if(stu[d].AVE<
stu[d+1].AVE)
{t=stu[d];
stu[d]=stu[d+1];
stu[d+1]=t;
}
学号姓名数学分数英语分数物理分数总分平均\n"
while(i<
c)
%5d%s%5d%5d%5d%-8.1f\n"
stu[i].ID,stu[i].NAME,stu[i].MT,
stu[i].EN,stu[i].PH,stu[i].ALL,stu[i].AVE);
i++;
输入学号:
j);
%5d%s%5d%5d%5d%-8.1f"
stu[j-1].ID,stu[j-1].NAME,
stu[j-1].MT,stu[j-1].EN,stu[j-1].PH,stu[j-1].ALL,stu[j-1].
AVE);
6.3实践3程序清单
intstatus=CONTINUE;
inti=0,j=0,add,k,newadd;
srand((unsigned)time(NULL));
i=rand()%7;
骰子1:
%d\n"
i);
while(j==0)
j=rand()%7;
骰子2:
j);
add=i+j;
if(add==11&
add==7)
status=WON;
if(add==2&
add==3&
add==12)
status=LOST;
if(status==WON)
两个色子的和为%d.您赢了!
add);
else
if(status==LOST)
两色子的和为%d.您输了!
两色子的和为%d.CONTINUE!
for(k=1;
k<
=7;
k++)
i=0;
j=0;
\n重新投掷第%d次\n"
k);
newadd=i+j;
printf("
重新投掷第%d次的总数:
%d\n"
k,newadd);
if((i+j)==add)
{
status=WON;
两色子的和为%d.您赢了!
getch();
6.4实践4程序清单
longi;
structtm*ptr;
定义时间结构体指针ptr
time_tlt;
*定义变量lt为time_t数据类型的变量time_t
在time.;
分针同步
c.second=ptr->
tm_sec;
秒针同步
for(i=0;
i<
100000;
i++)
lt=time(NULL);
Display();
Update();
printf(ctime(&
lt));
*printcurrentcomputertime*
Delay();
*模拟延时1秒*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 563413