#include
#include
#include
#include
#define max 31//定义产生题量的最大值,可以自己改
void main()
{
int num,right,yi[max],er[max],ch[max],i;
float score,re[max],answer;
char fuhao[4]={'+','-','*','/'};
srand(time(NULL));
num=rand()%(max-1)+1;//产生随机题目数量
for(i=1;i<=num;i++)
{
yi[i]=rand()%101;
er[i]=rand()%50+1;
ch[i]=rand()%4;
switch(ch[i])
{
case(0):re[i]=float(yi[i]+er[i]);break;
case(1):re[i]=float(yi[i]-er[i]);break;
case(2):re[i]=float(yi[i]*er[i]);break;
case(3):re[i]=float(yi[i])/float(er[i]);break;
}
}
right=0;
score=0;
printf("本次共产生了%d道题,开始测试:\n",num);
for(i=1;i<=num;i++)
{
printf("%d:%d%c%d=",i,yi[i],fuhao[ch[i]],er[i]);
scanf("%f",&answer);
printf("正确答案:%-6.2f\n",re[i]);
if(fabs(answer-re[i])<0.01)right++;
}
score=100*float(right)/float(num);
printf("测试结束!\n您共答对了%d道题,得分:%-4.2f\n",right,score);
}
这个程序已经在vc++6.0下调试通过了,如果你的编译器不能显示汉字的话,只要把汉字改成英文就行,如果对该程序有不懂的地方,可以去我的空间留言,告诉我你的联系方式,我会给你解释
呵呵 写不出来能来看看不能
有点麻烦,想想还是可以做出来滴,我先试试
有点麻烦,我试试看。
程序如下
#define N 3 改 #define N 30 就是 30道题。
学生答案误差 这里用了 1E-03, 你可以改变要求(因除法运算,有截断误差)
得分这里给对了几道。你可以用 N 计算 得分百分比。
#include
#include
#include
#include
#define N 3
void main()
{
char op[4][2]={"+","-","*","/"};
int x[N],y[N],o[N];
float r[N],s[N];
int i,mk=0;
srand((unsigned)time(NULL));
// rand()
for (i=0;i
y[i] = rand() % 500;
o[i] = rand() % 4;
};
for (i=0;i
case 0: r[i] = (float) x[i] + y[i]; break;
case 1: r[i] = (float) x[i] - y[i]; break;
case 2: r[i] = (float) x[i] * y[i]; break;
case 3: r[i] = (float) x[i] / y[i]; break;
default: break;
};
};
for (i=0;i
}
printf("enter student results\n");
for (i=0;i
}
for (i=0;i
}
printf("score: %d",mk);
}
#include
#include
#include
#define N 30 /*题目数*/
#define MAX 100 /*最大数*/
char op(int i,int a,int b,double *result) {
switch (i)
{
case 0:
*result = a + b;
return '+';
case 1:
*result = a - b;
return '-';
case 2:
*result = a * b;
return '*';
case 3:
if(b) *result = a / (double)b;
else *result = -1.0;
return '/';
}
return 0;
}
int main()
{
int a,b,i,rgt=0;
double result,uresult,score=0.0;
srand((unsigned)time(NULL)); /*设置随机数种子*/
for(i=0;i
b=rand()%MAX;
printf("%d%c%d=",a,op(rand()%4,a,b,&result),b);
scanf("%lf",&uresult);
if(uresult==result) printf("正确\n"),rgt++;
else printf("错误,正确答案是:%.3lf\n",result);
}
score = rgt*(100.0/N);
printf("答对%d道题.分数:%.0lf\n",rgt,score);
system("pause");
return 0;
}