资源描述
南京航空航天大学金城学院
《C语言程序设计》课程设计
试验汇报
题目: _ 小学生测验
班级:
学号:
姓名:
成绩:
指导老师:
完成日期: 年 月 日
目录
一、程序关键功效
二、系统总框架图
三、各模块功效
四、功效模块图
五、程序结构步骤图
六、试验结果
七、编程体会
八、参考资料
九、附录:程序清单及源程序
一、程序关键功效
(1)依据随机题目填写答案
(2)共有三次机会答题,每次分数不一样
(3)三次错误,自动开始下一题
(4)得出分数和评价
二、系统总框架图
主函数
用户填写问题答案
答题完成,显示得分和评价
退出程序
三、 各模块功效
int subject() //答题函数
void output(int t)//得分和评价输出函数
main() //主函数
四、 功效模块图
下一题
答题开始
Main()主函数
答题结束,得到得分和评价
答题正确
答题错误
答题错误
答题错误
五、 程序结构步骤图
开始
结束
输出得分
下一题
答题正确
答题
六、 试验结果
七、 编程体会
本程序关键在于怎么设计随机数,怎么依据每到题回复次数,给出对应分数和怎么设计随机加减法。在设计随机加减问题上,我想到了奇偶数方法。利用srand()和rand()函数随机取一个值,然后将这个值和2取余,然后就有0和1两种随机情况,各定义为加减法导入条件。
八、 参考资料
(1)CSDN博客频道:
(2)baidu文库:
(3)道客巴巴:
(4)baidu帖吧:
九、 附录:程序清单及源程序
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int subject()
{
int a,b,c,i,j,n,k,cj=0,r[4][2]={{0,0},{1,5},{2,7},{3,10}}; /*定义数组表示答题次数和成绩对应 */
srand(time(0));
printf("--------------小学生测验--------------\n\n");
for(i=1;i<=10;i++)
{
a=rand()%51;
b=rand()%(51-a)+a; /*给a,b赋随机值,且0<=a<=b<=50*/
c=b-a; /*则c也为随机变量,且0<=a,c<=b<=50*/
n=rand()%2; /*使n在0,1中随机取值*/
if(n==0) /*当n为0时,给出加法题目*/
{
printf("第%d题:%d + %d = ? \n",i,a,c);
for(j=3;j>=1;j--) /*当j=3时,表示有三次答题机会,答对则退出循环*/
{
printf("你答案是(你还有%d次回复机会):",j);
scanf("%d",&k);
if(k==b)
{
printf("回复正确!\n\n");
cj=cj+r[j][1]; /*将所得分数进行累加*/
break;
}
else
{
printf("回复错误!\n");
}
}
if(j==0)
printf("三次机会全部用完了,正确答案是%d\n别气馁,继续下一道题!\n\n",b);
}
else /*当n为1时,给出减法题目*/
{
printf("第%d题:%d - %d = ? \n",i,b,c);
for(j=3;j>=1;j--) /*当j=3时,表示有三次答题机会,答对则退出循环*/
{
printf("你答案是(你还有%d次回复机会):",j);
scanf("%d",&k);
if(k==a)
{
printf("回复正确!\n\n");
cj=cj+r[j][1]; /*将所得分数进行累加*/
break;
}
else
{
printf("回复错误!\n");
}
}
if(j==0)printf("三次机会全部用完了,正确答案是%d\n别气馁,继续下一道题!\n\n",a);
}
}
return cj;
}
void output(int t)
{
printf("\n 你得分是:%d\n",t);
printf("\n 评价:");
switch(t/10)
{
case 10:
case 9: printf("SMART"); break;
case 8: printf("GOOD"); break;
case 7: printf("OK"); break;
case 6: printf("PASS"); break;
default: printf("TRY AGAIN"); break;
}
printf("\n\n 此次测验到此结束!");
}
main()
{
int grade;
grade=subject();
output(grade);
}
展开阅读全文