*\
烟台大学计算机与控制工程学院
All rights reserved.
作者:汪莹莉
完成日期:2016年11月14日
问题描述:
1.做一个小学生考试系统,功能包括:(1)利用随机数出10道加法题;(2)小学生用户答题给出每道题的答案;(3)对小学生的答题进行评判;(4)计算出小学生答题正确率。
2. 进一步改进,提高题目质量。要求(1)百以内算术:运算数、结果都在100以内!(2)先随机产生运算符后,针对各个运算产生运算数保证下列要求:对加法,两数之和保证不大于100;对减法,被减数大于减数,且被减数不大于100;对乘法:两数之积不超过100;对除法:被除数大于除数,且被除数不大于100,除数不许为0。
3. 建立一个文件,里面包含人工出好的题目。程序从文件中读取题目。
程序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
int sum=0;//答对的数目
int i;
int a,b,f,e;//a,b为运算时的两个数
int c;//f=0为加,f=1为减,f=2为乘,f=3为除
srand(time(0));//产生随机数
for(i=0;i<10;i++)
{
printf("这是第%d道题",i+1);
c=rand()%4;//表示0-4四个数,分别代表着加减乘除
do
{
a=rand()%100+1;//a为1-100之间的数
b=rand()%100+1;
if(a<b&&(c==1||c==3))
{
f=a;
a=b;
b=f;
}
if(c==3)
a=(a/b)*b;//调整被除数,保证能够整除
}
while((a+b)>=100||a*b>=100);
switch(c)
{
case 0://加法
f=a+b;
printf("%d+%d=",a,b);
break;
case 1://减法
f=a-b;
printf("%d-%d=",a,b);
break;
case 2://乘法
f=a*b;
printf("%d*%d=",a,b);
break;
case 3://除法
f=a/b;
printf("%d/%d=",a,b);
break;
}
scanf("%d",&e);
if(f==e)
{
printf("回答正确!\n");
sum++;
}
else
printf("回答错误!\n");
}
printf("共回答正确%d道题",sum);
return 0;
}
运行结果:
知识点总结:srand(time(0))产生随机数,a=rand()%100+1表示1-100的随机数。
学习心得:利用switch语句使得麻烦的问题简单化,只是简单的罗列即可