题目描述
进行10次[0,50]内的加减法运算,运算数随机,运算符随机,每个问题有两次回答机会,第一次回答正确加10分,第二次加5分,最后输出总得分
总结
1.switch结构的用法;
2.生成随机数要使用time.h头文件,并在开头加上"srand((unsigned)time(NULL))"语句,本语句用于生成随机数的种子。之后用rand()生成随机数,rand()范围是[0,RAND_MAX]之间的整数,如果要生成更大的整数如范围是[a,b],就用int((double)rand()/RAND_MAX*(b-a+1)+a),其中强制转换的优先级要大于加减乘除的优先级同时小于()的优先级,rand()一生成整数,先转换成double型
3.rand()%(b-a+1)+a适用于确定范围[a,b]之间的整数,其中b不超过RAND_MAX
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
char ForSymbol()
{
srand((unsigned)time(NULL));
char c;
switch(rand()%2)
{
case 0:
c='+';
break;
case 1:
c='-';
break;
}
return c;
}
int main()
{
//freopen("input.in","r",stdin);
srand((unsigned)time(NULL));//种子,记住即可
int a,b,c,ans;
char symbol;
int score=0;
for(int i=0;i<10;i++)
{
symbol=ForSymbol();
a=rand()%51;
b=rand()%51;
if(symbol=='-')c=a-b;
else c=a+b;
printf("%d%c%d=",a,symbol,b);
for(int j=0;j<2;j++)
{
scanf("%d",&ans);
if(ans==c)
{
if(j==0)score+=10;
else score+=5;
break;
}
else if(j==0)
{
printf("答案错误,请重新输入\n");
printf("%d%c%d=",a,symbol,b);
}
}
}
printf("你的最终得分是:%d",score);
}