北京市社科基金项目:C语言编程作业!!!急!!!

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 16:15:14
1. 四则运算考题。随机出题并统计分数,并显示每道的回答结果、得分及正确答案。(每次10道,每道2分)

谢谢大家了!!!

这个是我为一个网友提的问题所回答的,针对你的这个问题我加了点修改,程序如下:(tc的)
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include "conio.h"
int sum,tt,pmax;
int rnd0(int x1,int x2)
{ int r;static int n=1;
r=random(4);
switch(r)
{ case 0:printf("%d)%d+%d=",n++,x1,x2);break;
case 1:printf("%d)%d-%d=",n++,x1,x2);break;
case 2:printf("%d)%d×%d=",n++,x1,x2);break;
case 3:printf("%d)%d÷%d=",n++,x1,x2);break;
}
return r;
}
int rnd1()
{ int r;
r=random(pmax);
return r;
}
int rnd2()
{ int r;
r=random(pmax);
return r;
}
int crut(int x1,int fh,int x2)
{ int asn;
switch(fh)
{ case 0: asn=x1+x2;break;
case 1: asn=x1-x2;break;
case 2: asn=x1*x2;break;
case 3: asn=x1/x2;break;
}
return asn;
}
int vs(int m1,int m2)
{ int r,zq;r=random(3);
if(m1==m2) { zq=1;
switch(r)
{case 0: printf("Very good!");break;
case 1: printf("Excellent!");break;
case 2: printf("Keep up the good word!");break;
}
}
else { zq=0;
switch(r)
{case 0: printf("No.Please try again ");break;
case 1: printf("Wrong Try once more");break;
case 2: printf("No keep trying");break;
} printf("\nThe right answer:%d",m2);
}
getch();clrscr();return zq;
}
main()
{ int x1,x2,ans,cru,js,tj,i;
int fh;
ld:printf("输入题目数量(1-10):");
scanf("%d",&tt);if(tt<0||tt>10) {printf("请重新输入\n");getch();clrscr();
goto ld;}
clrscr();printf("输入出题的范围,多少以下:");
scanf("%d",&pmax);
randomize();
for(i=1;i<=tt;i++)
{
x1=rnd1(pmax);
x2=rnd2(pmax);
fh=rnd0(x1,x2);
scanf("%d",&ans);cru=crut(x1,fh,x2);
js=vs(ans,cru);
sum+=js;
}
tj=sum/tt*100;
printf("你的总得分为%d\n",sum*2);
printf("准确率:%d%\n",tj);
if(tj<75)
printf("Please ask your instructor fope extra help");
getch();
}

能说详细一点吗?