#include<stdio.h>//定义包含文件类型
#include<stdlib.h>
#include<time.h>
int num=0,num1=0;//定义整形变量
int m[1000][100];
char oper[4]={'+','-','*','/'};//输入运算符
int main()//主函数
{
int a,b,c,d,e,flag,i,j;//flag变量
for(i=1;i<=1000;++i)
for(j=1;j<=i;++j)
if(i%j==0)
m[i][m[i][0]++]=j;
srand(time(0));//设置随机数的种子,否则每次运行得到的随机数都是一样的
while(1)//while(1)其中1代表一个常量表达式,它永远不会等于0
{
system("cls");//清屏
printf("当前答题数:%d 正确数:%d 正确率:%.2lf%%
",num,num1,num?num1*1.0/num*100:0);
flag=0;
c=rand()%4;//是产生随机数的一个随机函数 每次运行能产生不同的数字
while(1)
{
flag=0;//接收到数据
if(c<3)
{
a=rand()%1000;b=rand()%1000;//产生一个1-1000的随机数
}
else
{
a=rand()%1000;
b=rand()%m[a][0];
b=m[a][b];//定义一个元素为a或b的m为b大概是这样
}
switch(c)//输入c值
{
case 0:
if(a+b<=1000)
flag=1,d=a+b;
break;
case 1:
if(a>=b)
flag=1,d=a-b;
break;
case 2:
if(a*b<=1000)
flag=1,d=a*b;
break;
case 3:
if(a%b==0)//%求余运算符
flag=1,d=a/b;
break;
}
if(flag)
break;
}
printf("%d%c%d=?
",a,oper[c],b);
num++;//先引用num的值,然后在num用完后,再进行自加。。为单目运算符,只有一个操作数。其含义为变量自加一 后自加
scanf("%d",&e);
if(e==d)
{
printf("恭喜你回答正确!
");
num1++;
}
else
{
printf("很遗憾,回答错误,正确答案是%d
",d);
}
system("pause");//从程序里调用“pause”命令 继续进行运算
}
}
调试:发现一个error错误 ,经查找得知是缺少了一个符号“:”
再次调试没有错误,进行计算: