用C语言随机产生三个数,三个数之间进行四则运算,四则运算也随机产生

2025-04-13 08:25:28
推荐回答(2个)
回答1:

#include
#include
#include

#define N 10 //随机出10道题目

int main()
{
int num1, num2, num3, count=0, result,resultTrue,flag;//result:用户输入结果 resultTrue:正确结果 flag:0 先计算左边 1先计算右边
char op1, op2;

srand(time(NULL)); //启动随机数生成器

do {
count++;

num1 = rand() % 10+1;
num2 = rand() % 10+1;
num3 = rand() % 10+1;
switch (num1 % 4)
{
case 0:
op1 = '+';
break;
case 1:
op1 = '-';
break;
case 2:
op1 = '*';
break;
case 3:
op1 = '/';
break;
default:
break;
}
switch (num2 % 4)
{
case 0:
op2 = '+';
flag = 0;
break;
case 1:
op2 = '-';
flag = 0;
break;
case 2:
op2 = '*';
if((op1=='*')||(op1=='/')) flag = 0;
else flag = 1;
break;
case 3:
op2 = '/';
if((op1=='*')||(op1=='/')) flag = 0;
else flag = 1;
break;
default:
break;
}
printf("%d %c %d %c %d = ",num1,op1,num2,op2,num3);
if(flag==0)
{
resultTrue = 0;
switch (op1)
{
case '+':
resultTrue = num1+num2;
break;
case '-':
resultTrue = num1-num2;
break;
case '*':
resultTrue = num1*num2;
break;
case '/':
resultTrue = num1/num2;
break;
default:
break;
}
switch (op2)
{
case '+':
resultTrue += num3;
break;
case '-':
resultTrue -= num3;
break;
case '*':
resultTrue *= num3;
break;
case '/':
resultTrue /= num3;
break;
default:
break;
}
}
else
{
resultTrue = 0;
switch (op2)
{
case '+':
resultTrue = num2+num3;
break;
case '-':
resultTrue = num2-num3;
break;
case '*':
resultTrue = num2*num3;
break;
case '/':
resultTrue = num2/num3;
break;
default:
break;
}
switch (op1)
{
case '+':
resultTrue = num1 + resultTrue;
break;
case '-':
resultTrue = num1 - resultTrue;
break;
case '*':
resultTrue = num1 * resultTrue;
break;
case '/':
resultTrue = num1 / resultTrue;
break;
default:
break;
}
}

scanf("%d",&result);
if (result == resultTrue)
printf("结果正确!\n");
else
printf("结果错误!\n");
} while(count<=N);
return 0;
}

回答2:

#include
#include
#include

int Comput(int datA, int datB, int ComMode){
switch(ComMode){
case 0 : //'+'
return datA + datB;
case 1 :
return datA - datB;
case 2 :
return datA * datB;
case 3 :
return datA / datB;
}
}

int main()
{
int a,b,c, com1,com2;
srand(time(NULL));
a = rand() % 20 + 1;
b = rand() % 20 + 1;
c = rand() % 20 + 1;
com1 = rand() % 4;
com2 = rand() % 4;
if(com1 < 2 && com2 >= 2){ //后一个优先级比前一个高
return Comput(a , Comput(b, c, com2), com1);
} else{
return Comput(Comput(a, b, com1), c, com2);
}
}