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

比如产生了,A,B,C三个数,则A*B-C,反正就是A,B,C之间的符号也要随机产生,还有产生的运算一定要符合运算法则,我弄错了只能从左往右的计算,我的错误:比如2-3*5,计算结果是-5。求各位大神啊,虽然分不多,救命啊,如果分多肯定多弄点。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-21
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

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);
}
}
相似回答