编写程序,用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分数。
分析
主程序包括以下几个部分:
- 变量定义(操作数a,b,结果d,运算符c,答对题数统计sum等)
- 开始循环输出运算式
- 产生随机数(先初始化)
- 判断随机数是否满足条件
- 输出运算式
- 等待输入
- 结果判断
- 结束循环输出运算式
- 输出统计数据
代码
/**
*Copyright @2018,优快云学院
*All rights reserved.
*文件名称:main.c
*作 者:袁生
*完成日期:2018年9月27日
*版 本 号:v1.0
*问题描述:100以内的四则运算(两个数)
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int a,b,d,t; //定义两个操作数a,b,结果d,输入结果t
char c; //运算符c可取“+、-、×、÷”
int i,sum=0; //题目数量i,答对数目sum
srand(time(0)); //初始化随机数发生器
/**< 产生数据 */
for(i=0;i<10;i++)
{
a=rand()%100+1;
b=rand()%100+1;
c=rand()%4; //0表加,1表减,2表乘,3表除
/**< 数据合格判断及算式显示 */
printf("第%d题:",i+1);
switch(c)
{
case 0:
while((d=a+b)>100) //保证和在100内
{
a=rand()%100+1;
b=rand()%100+1;
}
printf("%d + %d = ",a,b);
break;
case 1:
while(a>100||b>100) //被减数小于100
{
a=rand()%100+1;
b=rand()%100+1;
}
if(a<b) //被减数大于减数
{
d=a;
a=b;
b=d;
}
d=a-b;
printf("%d - %d = ",a,b);
break;
case 2:
while((d=a*b)>100) //保证积小于100
{
a=rand()%100+1;
b=rand()%100+1;
}
printf("%d × %d = ",a,b);
break;
case 3:
while(a>100||b>100||(a*b==0)) //保证被除数小于100且除数不为0
{
a=rand()%100+1;
b=rand()%100+1;
}
if(a<b) //被除数必须大于除数
{
d=a;
a=b;
b=d;
}
a=(a/b)*b; //保证整除
d=a/b;
printf("%d ÷ %d = ",a,b);
break;
}
/**< 输入你的计算结果 */
scanf("%d",&t);
if(d==t)
{
sum++;
printf("正确\n");
}
else
printf("错误\n");
}
/**< 输出答对题数和得分 */
printf("答对 %d 题,得分:%d\n",sum,sum*10);
return 0;
}