一、参考 <第一章 概论>P2-3页内容
写一个能自动生成小学四则运算题目的程序,实现以下功能:
1.题目避免重复
2.可定制数量和打印方式
3.可以控制下列参数:是否需要乘除法
是否有括号
数值范围
加减有无负数
除法有无负数
是否支持分数(真分数、假分数)
是否支持小数(精确到多少位)
打印中每行的间隔;
二、源代码:
#include<stdio.h>
#include<stdlib.h>
void display()
{
int a,b,c,i,d,e,f,g;
printf("请输入需要设置的题目个数:");
scanf("%d",&d);
printf("\n\n控制参数选择:(1为是,0为否)\n\n");
printf("1.是否需要乘除法\t2.是否有括号\t3.数值范围\n4.加减有无负数\t\t5.除法有无负数\t6.是否支持分数(真分数、假分数)\n7.是否支持小数(精确到多少位)8.打印中每行的间隔\t");
printf("\n\n\n请输入项目功能:(1为是,0为否)");
scanf("%d %d",&e,&f);
for(i=0;i<=d;i++)
{
a=rand()%100; /*abg为生成的数,用来计算,c为四种符号的判断*/
b=rand()%100;
c=rand()%4;
g=rand()%100;
if(e==1) /*判断是否需要乘除法*/
{
if(f==1) /*判断是否要括号*/
{
if(c==1)
printf("\n(%d+%d)/%d=",a,b,g);
else if(c==2)
printf("\n(%d+%d)*%d=",a,b,g);
else if(c==3)
printf("\n(%d-%d)/%d=",a,b,g);
else if(c==4)
printf("\n(%d-%d)/%d=",a,b,g);
}
else
{
if(c==1)
printf("\n%d+%d=",a,b);
else if(c==2)
printf("\n%d-%d=",a,b);
else if(c==3)
printf("\n%d*%d=",a,b);
else if(c==4)
printf("\n%d/%d=",a,b);
}
}
else
{
if(f==1)
{
if(c==1)
printf("\n(%d+%d)/%d=",a,b,g);
else if(c==2)
printf("\n(%d+%d)*%d=",a,b,g);
else if(c==3)
printf("\n(%d-%d)/%d=",a,b,g);
else if(c==4)
printf("\n(%d-%d)/%d=",a,b,g);
}
else
{
if(c==1||c==2)
printf("\n%d+%d=",a,b);
else if(c==3||c==4)
printf("\n%d-%d=",a,b);
}
}
}
}
void main()
{
display();
}
三、结果与分析
本来要实现题目给出的四个功能:控制数量,避免重复,是否乘除,是否有括号,可是在实现第三个功能的时候发现代码编译后还是只能实现前三个功能
所以有待之后改进,而前三个功能的实现用了二十分钟的时间。我看到大多数同学都用了随机生成数函数实现题目的生成,而后面的功能的实现还没找到好的
办法实现,觉得按照普通的方法很繁琐,要很多代码,所以求助理大神给建议。
原文:http://www.cnblogs.com/hj1994/p/4368124.html