c语言 设计小学生四则运算测试程序,要求随机产生10题四则运算题,答完后给出得分

急啊,帮下忙拉

/*
* sizeyunsuan.c
*
* Created on: 2011-6-17
* Author: zhanglujin
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int yunsuan(int M)
{
int m=1,n=0,a,b,daan;
while(1) //这里得解决/的情况,因为这里保证是整数,所以一些条件要满足才能除,若不成立,改为+得了。
{
srand(time(0));
a=rand()%M;
b=rand()%M;
switch(1+rand()%4)
{
case 1:
{
printf("<%d>",m);
printf("%4d+%4d=",a,b);
scanf("%d",&daan);
if(daan==(a+b))
n++;
else
printf("Fault!\n");
m++;
break;
}
case 2:
{
if(a>=b)
{
printf("<%d>",m);
printf("%4d-%4d=",a,b);
scanf("%d",&daan);
if(daan==(a-b))
n++;
else
printf("Fault!\n");
m++;
break;

}
else
{
printf("<%d>",m);
printf("%4d-%4d=",b,a);
scanf("%d",&daan);
if(daan==(b-a))
n++;
else
printf("Fault!\n");
m++;
break;

}
}
case 3:
{
printf("<%d>",m);
printf("%4d*%4d=",a,b);
scanf("%d",&daan);
if(daan==(a*b))
n++;
else
printf("Fault!\n");
m++;
break;
}
default:
{
if((b!=0)&&(a>=b)&&((a%b)==0))
{
printf("<%d>",m);
printf("%4d/%4d=",a,b);
scanf("%d",&daan);
if(daan==(a/b))
n++;
else
printf("Fault!\n");
m++;
break;
}
else if((a!=0) && (b>=a) && ((b%a)==0))
{
printf("<%d>",m);
printf("%4d/%4d=",b,a);
scanf("%d",&daan);
if(daan==(b/a))
n++;
else
printf("Fault!\n");
m++;
break;
}
else //若除不成立,改为+操作,防止循环多次。
{
printf("<%d>",m);
printf("%4d+%4d=",a,b);
scanf("%d",&daan);
if(daan==(a+b))
n++;
else
printf("Fault!\n");
m++;
break;
}
}
}
if(m == 11)
break;
}
return n;
}

int main()
{
int M,p;
float right;
char o;
while(1)
{
//redo:
printf(" 欢迎进入四则运算训练营\n\n1.10以内的四则运算\n2.20以内的四则运算\n0.退出\n\n");
printf("请选择功能号(1/2/0):");
scanf("%d",&p);
getchar();
if(p==1)
M=10;
if(p==2)
M=20;
if(p==0)
exit(0);
printf("您选择的是%d以内的四则运算\n",M);
int temp = yunsuan(M);
right= temp/10.0;
printf("正确率:%.2f%%",right*100);
printf(" score=%d",temp*10);
getchar(); //吸收前面的回车键。
printf("继续吗?(y/n)");
scanf("%c",&o);
if(o == 'y' || o == 'Y') //这里的继续存在问题啊,怎么弄??
{
system("pause");
//goto redo;
}
else
{
break;
}
}
getchar();
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>

void main()
{
int a[10],b[10],d[10],c[10],num=0,result,add=0;
float val;
char fa[5]={'+','-','*','/'};

srand((unsigned)time(NULL));
/* 出10道题 */
while(1)
{
d[num]=abs(rand())%4;/* 保证出题算法的随机性 */
while(1) /* 保证出题成功 */
{
c[num]=-1;
a[num]=abs(rand())%100;
b[num]=abs(rand())%100;
if(d[num]==0) c[num]=a[num]+b[num];
else if(d[num]==1) c[num]=a[num]-b[num];
else if(d[num]==2) c[num]=a[num]*b[num];
else if(d[num]==3)
{
if(b[num]>0)val=1.0*a[num]/b[num];
else val=-1;
}
if(d[num]<=2)
{
if(c[num]>=0 && c[num]<=100) /* 保证计算结果在0-100之间 */
break;
}
else
{
if(a[num]==int(val)*b[num] && val>=0)
{c[num]=val; break;}
}
}
num++;
if(num==10) break;
}
/* 回答 */
num=0;
while(1)
{
printf("%d %c %d= ",a[num],fa[d[num]],b[num]);
scanf("%d",&result);
if(result==c[num])
{
printf("回答正确!\n");
add+=10;
}
else
printf("错误,正确答案: %d\n",c[num]);
num++;
if(num==10) break;
}
printf("\n得分:%d\n",add);
getch();
}本回答被网友采纳
相似回答