编写程序:实现一个随堂测试,能进行加减乘除运算。要求如下:
(1)随机产生两个1~10的正整数,在屏幕上输出题目,如:5+3=?
(2)学生输入答案,程序检查学生输入答案是否正确,若正确,则输出“Correct”,否则输出“No Correct”
(3)共10道题目,每题10分,最后给出总成绩。
编程思路:按功能分模块,将随机出题写在show()函数中,将答题测试写在test()函数中,在主函数中调用两者,完成程序功能。
随机数定义方法:
1、所需头文件:
#include<stdio.h> #include<stdlib.h> #include<time.h>
2、srand((unsigned)time(NULL));
//利用系统时钟设定种子
a[i]=rand()%10;
//每次产生0-9范围内任意的一个随机数并存到数组a中
a[i]=rand()%100;
//每次产生0-99范围内任意的一个随机数并存到数组a中
a[i]=rand()%10+1;
//每次产生0-10范围内任意的一个随机数并存到数组a中
3、代码:
(1)错误代码:
错误原因:所需数据需要自己从键盘输入
#include<stdio.h>
#include<math.h>
int show(int a,char b,int c)
{
int d;
if(b=='+')d=a+c;
if(b=='-')d=a-c;
if(b=='*')d=a*c;
if(b=='/')d=a/c;
return d;
}
int test(int n,int s)
{
if(n==s)
{
printf("Crrect\n");
return 1;
}
else
{
printf("No Correct\n");
return 0;
}
}
int main()
{
int a,c,n,sum=0,m,result;
char b;
for(int i=1;i<=10;i++)
{
scanf("%d%c%d=",&a,&b,&c);
result=show(a,b,c);
scanf("%d",&n);
m=test(n,result);
if(m==1)sum+=10;
}
printf("%d\n",sum);
return 0;
}
(2)正确代码:
数据随机产生
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
int show()
{
int a,b,t,op,answer0;
srand(time(0));//随机种子
a = rand()%10 + 1;
b = rand()%10 + 1;//产生1-10之间的随机数
op = rand()%4 + 1;// 随机加减法
switch(op)
{
case 1: printf("%d+%d=", a, b); //显示题目
answer0=a+b; //计算标准答案
break;
case 2:
if (a<b)
{
t=a;a=b;b=t;
}//限制出现负数
printf("%d-%d=", a, b);
answer0=a-b;
break;
case 3:printf("%d*%d=", a, b); //显示题目
answer0=a*b; //计算标准答案
break;
case 4:printf("%d/%d=", a, b); //显示题目
answer0=a/b; //计算标准答案
break;
}
return (answer0);
}
int Test(int t_answer1, int t_answer0)
{
if(t_answer1==t_answer0)
{
printf("Correct!\n");//答案正确,输出Correct
return 1;//返回值为1
}
else
{
printf(" Not correct! \n");//答案错误,输出Not correct
return 0;//返回值为0
}
}
int main()
{
int i,an_flag;
int answer1,answer2,score = 0;//定义变量
for (i=0; i<10; i++)
{
answer1=show() ; //调用显示函数,获标准答案
scanf("%d",&answer2);//输入运算答案
an_flag = Test(answer1, answer2);
if (an_flag == 1)//答题标记为1则加10分
score+=10;
}
printf("\nCorrect score:%d\n",score);//输出所得分数
return 0;
}