c语言随机抽取小程序_基于c编纂的关于随机生成四则运算的小程序

#include#include#include#include#include#include

int right = 0;int wrong = 0;chargetSignal();int calculateIntegerResult(int num1, int num2, charsignal);//int getNumber();

voiddoIntegerSubject();void falsePrint(int);void correctPrint(int);/*char getSignal()

{

char signal[4] = { '+','-','*','/' };

srand((unsigned)time(NULL));

return signal[rand() % 4];

}*/

chargetSignal()

{

srand((unsigned)time(NULL));inta;

a= rand() % 4 + 1;switch(a)

{case 1:return '+';break;case 2:return'-';break;case 3:return '*';break;case 4:return '/';break;default:break;

}

}/*int getNumber()

{

srand((unsigned)time(NULL));

int a, b;

a = rand() % 100 + 1;

b = rand() % 100 + 1;

return 0;

}*/

int calculateIntegerResult(int num1, int num2, charsignal)

{intt;switch(signal)

{case '+':

t= num1 +num2;break;case'-':

t= num1 -num2;break;case'*':

t= num1*num2;break;case'/':

t= num1 /num2;break;default:

t= 0;

printf("运算符不符合规则\n");break;

}returnt;

}void calculateMarkResult(int num1, int num2, int num3, int num4, char signal, int mark[5])

{switch(signal)

{case '+':if (num2 ==num4)

{

mark[0] = num1 +num3;

mark[1] =num1;

}else{

mark[0] = num1*num4 + num2*num3;

mark[1] = num2*num4;

}break;case'-':if (num2 ==num4)

{

mark[0] = num1 -num3;

mark[1] =num1;

}else{

mark[0] = num1*num4 - num2*num3;

mark[1] = num2*num4;

}break;case'*':

mark[0] = num1*num3;

mark[1] = num2*num4;break;case'/':

mark[0] = num1*num4;

mark[1] = num2*num3;break;default:

printf("运算符不符合规则\n");break;

}

}voiddoIntegerSubject()

{inta, b, giverAnswer, printFlag;charsignal;

srand((unsigned)time(NULL));

a= rand() % 100 + 1;

b= rand() % 100 + 1;

signal=getSignal();if (signal == '/')

{if (b == 0)

{inttemp;

temp=b;

b=a;

a=temp;

}

}

printf("please do blew problem:\n");

printf("%d %c %d=", a, signal, b);//giverAnswer = _getch();

scanf_s("%d", &giverAnswer);

fflush(stdin);if (calculateIntegerResult(a, b, signal) ==giverAnswer)

{

right++;

srand((unsigned)time(NULL));

printFlag= rand() % 4 + 1;

correctPrint(printFlag);

}else{

wrong++;

srand((unsigned)time(NULL));

printFlag= rand() % 4 + 1;;

falsePrint(printFlag);

printf("\n正确答案:%d\n", calculateIntegerResult(a, b, signal));

}

}voiddoMarkSubject()

{int a, b, c, d, i = 0, printFlag;int result[5];char giverNumber[10];charsignal;intx, y, j;

signal=getSignal();

srand((unsigned)time(NULL));while (1)

{

a= rand() % 100;while (1)

{

b= rand() % 100;if(b)break;

}if (a

}while (1)

{

c= rand() % 100;while (1)

{

d= rand() % 10;if(d)break;

}if (c

}/*a = rand() % 100 + 1;

b = rand() % 100 + 1;

c = rand() % 100 + 1;

d = rand() % 100 + 1;

signal = getSignal();

if (b == 0 || a>b)

{

int temp;

temp = b;

b = a;

a = temp;

}

if (d == 0 || c>d)

{

int f;

f = b;

b = a;

a = f;

}*/printf("please do blew problem:\n");

printf("%d/%d %c %d/%d=", a, b, signal, c, d);//giverAnswer = _getch();

i = 0;while (1)

{

giverNumber[i]=_getche();if (giverNumber[i] == '/')break;

i++;

}

x= 0;for (j = 0; j < i; j++)

{

x= x + pow(10, (i - 1 - j))*(giverNumber[j] - '0');

}

scanf_s("%d", &y);

calculateMarkResult(a, b, c, d, signal, result);//scanf_s("%d", &giverNumber[i]);

fflush(stdin);if (x == result[0] && y == result[1])

{

right++;

srand((unsigned)time(NULL));

printFlag= rand() % 4 + 1;

correctPrint(printFlag);

}else{

wrong++;

srand((unsigned)time(NULL));

printFlag= rand() % 4 + 1;;

falsePrint(printFlag);int *dd;

printf("\n正确答案:%d/%d\n", result[0], result[1]);//printf("\n正确答案:%d\n", calculateMarkResult(a, b, signal, c, d));

}

}//回答正确打印信息

void correctPrint(intnum)

{switch(num)

{case 1:

printf("You're right!\n"); break;case 2:

printf("It's OK!\n"); break;case 3:

printf("Correct!\n"); break;case 4:

printf("Perfect!\n"); break;case 5:

printf("Oh my gag!\n"); break;default:

printf("Powerful!\n"); break;

}

}//回答错误打印信息

void falsePrint(intnum)

{switch(num)

{case 1:

printf("You're lost!"); break;case 2:

printf("Failure!"); break;case 3:

printf("Come on!"); break;case 4:

printf("It's wrong!"); break;default:

printf("Incorrect!"); break;

}

}voidmain()

{inttotal;int con=0, choice,choice1;

printf("welcome to math world!:");

system("cls");if (con = 0)

{

printf("\t\t\t 1.整数运算\n");

printf("\t\t\t 2.分数运算\n");

printf("请选择:\n");

scanf_s("%d", &choice);

system("cls");switch(choice)

{case 1:while (right >=wrong)

{

doIntegerSubject();

}

total= right +wrong;

printf("你一共答了:%d道题其中答对了%d 道答错了%d道\n", total, right, wrong);break;case 2:while (right >=wrong)

{

doMarkSubject();

}

total= right +wrong;

printf("你一共答了:%d道题其中答对了%d 道答错了%d道\n", total, right, wrong);break;

}

system("pause");

}

printf("\n\t\t\t1.重新选择?\n");

printf("\n\t\t\t2.退出运算?\n");

scanf_s("%d", &choice1);if (choice1 == 1)

{

system("cls");

con= 0;

}else if (choice1 == 2)

{

exit;

}elseprintf("抱歉!,你输入的指令有误!请重新输入!\n");

system("pause");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值