我也尝试了下,(C初学者,大一新生,请大家多多指教!)对于这个题我遇到的最大的问题是 除法,如果是除不清的,如0.33333333333
.....你怎么来验证它的正确与否,在这提出来,望各位大侠指教指教!
(还有对于一楼的,在C(printf语句中的)-中能显示出汉字吗?即使能显示 恐怕 也要加些什么东西吧! 如果有什么不对的地方请指正,谢谢)!
我也写了个代码,但是在运行除法时会出错,还望各位高手指教!!!!!!!谢谢
#include
#include
void main()
{
int i,n,j,o,f; /*i,j,是做循环的变量,f是记录正确的题数,o我用来对应随即产生的是除法还是加减等,N是你要多少题如30道等*/
char x[4]={'+','-','*','/'};/*X[]我用随即产生的o来表达给用户是做的什么计算*/
int s;/*S是结果*/
int a[100],b[100];/*用a[]b[]来装产生的数*/
srand(time(100));/*随机数的一个条件*/
clrscr();
f=0;
o=0;
s=0;/*这是赋初值*/
printf("please input the subject number is ");
scanf("%d",&n);/*输入题数N*/
for(i=0;i<=n;i++)
{
b[i]=rand()/32767.0*29+1;
a[i]=rand()/32767.0*29+1;/*产生随机数*/
}
for(j=0;j<=n-1;j++)
{
o=rand()/32767.0*3+1;
printf("\n%d %c %d=",a[j],x[o],b[j]);/*表达给用户一个计算表达式*/
scanf("%d",&s);/*输入结果*/
if(o=0 && a[j]+b[j]==s)
{
printf("right");/*如果答案正确则显示出 right,错了则不显示,这里可以写的更细*/
f=f+1;
}
if(o=1 && a[j]-b[j]==s)
{
printf("right");
f=f+1;
}
if(o=2 && a[j]*b[j]==s)
{
printf("right");
f=f+1;
}
if(o=3 && a[j]/b[j]==s)
{
printf("right");
f=f+1;
}
}
printf("\nThe answer right is %d",f);/*对的题数*/
getch();
}
我也是初学,望各位大侠多多指教!特别是除法那的问题,谢谢
if(o=3 && (int)(a[j]/b[j])==(int)s) 我想过除法这样,但是这样没法真正判断它的正误!
你都写成这样了还不会么?.用什么数组.根本用不着.几个变量就完事了..
#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);
return 0;
}
高手啊
牛!