简单的四则运算

程序介绍:

这个程序比较人性化,每做完一道题都可以进行选择,接下来是要做什么。

程序刚开始进入的是选择页面,这个页面是选择要进行什么运算:

=========目录==========
1.加法运算
2.减法运算
3.乘法运算
4.除法运算
0.结束运算
请输入你想进行运算的序号

接下来要进行选择具体要进行什么运算,是整数的四则运算还是真分数的四则运算:

----选择目录----
1.整数运算
2.真分数运算
请输入你的选择

接下来就是进行具体的运算,每做一道题,就会进行存储,然后可以选择继续做题,还是结束做题:

----判断目录----
1.继续运算
0.结束运算
请输入你的选择

以上就是此程序的主要功能,还有不足之处,请多多指教,将在以后进行改进,有关多运算字符和有括号的运算将会在接下来的博客中改进。

感想:

这是老师留的第一个个人项目~四则运算,刚开始想的时候并没有想太多,感觉只是写几个函数,包括加减乘除就可以了,当开始动手编写程序时,问题就一个接着一个的来了,首先就是题要用什么保存,一开始想到了数组,但是一维数组并不能够包含一个四则运算的各项数值,二维数组也不太好,最后想到了结构体,里面可以保存四则运算的各个参数,而且还可以使用数组,组成结构体数组,这样就可以保存原先做过的题了,储存的问题解决了;接下来就是参数如何获取,而且还是要随机的获取,通过上网搜索,查到函数rand()可以获取一个随机值,rand()%m就是在0到m之间随机获取一个值;后来看到老师的博客,发现还要有真分数的四则运算,发现原先定义的结构体数组并不能够完成这项工作,就又建了一个结构体数组,这样就可以通过获取多个参数,来完成真分数的构建,然后再进行运算,写完代码后发现有很多重复引用的东西,就将这些代码单独定义成了一些函数,并在其他函数中进行引用;虽然写的并不是很完美,有一些地方自我感觉还是有缺陷的,但是感觉还是很开心的,通过这次的程序编写,发现程序并不是一步能够完成的,需要在编写过程中不断的改善,感觉自己原先知道的还是太少了,写的代码还是不够多的,不然有些地方不会无从下手,接下来的学习中要继续努力的学习,提高自己的水平。

#include<stdio.h>
int sum = 0;
int sum1 =0;
struct NUM
{
int first;
int second;
int result;
}stu[400];
struct NUM1
{
int first;//第一个数的分子
int first1;//第一个数的分母
int second;
int second1;
int result;
int result1;
}stu1[400];
int add();//
int add1();
int dec();//
int dec1();
int mul();//
int mul();
int div();//
int div();
int num();//目录
int decide();//显示判断目录
void show();//显示题数
void result(int a);//判断结果
int choice();//显示选择结束还是继续做题
void main()
{
int a = 1, c, m;

while (a != 0)
{
m = num();
switch (m)
{
case 1: {c = choice();
if (c == 1)a = add();
if (c == 2)a = add1(); }
break;
case 2: {c = choice();
if (c == 1)a = dec();
if (c == 2)a = dec1(); }
break;
case 3: {c = choice();
if (c == 1)a = mul();
if (c == 2)a = mul1(); }
break;
case 4: {c = choice();
if (c == 1)a = div();
if (c == 2)a = div1(); }
break;
default:
printf("输入的数字有误");
break;
}
}
printf("-------谢谢使用--------\n");
}
int num()
{
int a;
printf("=========目录==========\n");
printf("1.加法运算\n");
printf("2.减法运算\n");
printf("3.乘法运算\n");
printf("4.除法运算\n");
printf("0.结束运算\n");
printf("请输入你想进行运算的序号\n");
scanf_s("%d", &a);
return a;
}
int decide()//选择接下来做什么的目录
{
int a;
printf("----判断目录----\n");
printf("1.继续运算\n");
printf("0.结束运算\n");
printf("请输入你的选择");
scanf_s("%d", &a);
return a;
}
int choice()//选择具体算什么的目录
{
int a;
printf("----选择目录----\n");
printf("1.整数运算\n");
printf("2.真分数运算\n");
printf("请输入你的选择");
scanf_s("%d", &a);
return a;
}
void show()
{
printf("现在是第%d题\n", sum + sum1);
}
void result(int a)
{
int b;
printf("请输入正确答案:\n");
scanf_s("%d", &b);
if (b == stu[a].result)
printf("答案正确是:%d\n", stu[a].result);
else
printf("答案错误,正确答案是:%d\n", stu[a].result);
}
void result1(int a)
{
int c, b;
printf("请输入正确答案的分子:\n");
scanf_s("%d", &b);
printf("请输入正确答案的分母:\n");
scanf_s("%d", &c);
if (b == stu1[a].result || c == stu1[a].result1)
printf("答案正确是:%d/%d\n", stu1[a].result, stu1[a].result1);
else
printf("答案错误,正确答案是:%d/%d\n", stu1[a].result1, stu1[a].result);
}
int add()
{
int a, b;
sum = sum + 1;
show();
stu[sum].first = rand() % 10;
stu[sum].second = rand() % 10;
stu[sum].result = stu[sum].first + stu[sum].second;
printf("%d + %d =\n", stu[sum].first, stu[sum].second);
result(sum);
a = decide();
return a;
}
int dec()
{
int a, b;
sum = sum + 1;
show();
stu[sum].first = rand() % 10+10;
stu[sum].second = rand() % 10;
stu[sum].result = stu[sum].first - stu[sum].second;
printf("%d - %d =\n", stu[sum].first, stu[sum].second);
result(sum);
a = decide();
return a;
}
int mul()
{
int a, b;
sum = sum + 1;
show();
stu[sum].first = rand() % 10;
stu[sum].second = rand() % 10;
stu[sum].result = stu[sum].first * stu[sum].second;
printf("%d * %d =", stu[sum].first, stu[sum].second);
result(sum);
a = decide();
return a;
}
int div()
{
int a, b, m, n;
sum = sum + 1;
show();
stu[sum].first = rand() % 10;
stu[sum].second = rand() % 10;
stu[sum].result = stu[sum].first / stu[sum].second;
printf("%d / %d =", stu[sum].first, stu[sum].second);
result(sum);
a = decide();
return a;
}
int add1() //接下来是真分数的运算
{
int a;
int m, n, p, q;
sum1 = sum1 + 1;
show();
m = rand() % 10 + 1;
n = rand() % 5 + m;
p = rand() % 10 + 1;
q = rand() % 10 + p;
stu1[sum1].result = m*q + n*p;
stu1[sum1].result1 = n*q;
printf("%d/%d+ %d/%d =\n", m, n, p, q);
result1(sum1);
a = decide();
return a;
}
int dec1()
{
int a;
int m, n, p, q;
sum1 = sum1 + 1;
show();
m = rand() % 10 + 1;
n = rand() % 5 + m;
p = rand() % 10 + 1;
q = rand() % 10 + p + n;
stu1[sum1].result = m*q - n*p;
stu1[sum1].result1 = n*q;
printf("%d/%d - %d/%d =\n", m, n, p, q);
result1(sum1);
a = decide();
return a;
}
int mul1()
{
int a;
int m, n, p, q;
sum1 = sum1 + 1;
show();
m = rand() % 10 + 1;
n = rand() % 5 + m;
p = rand() % 10 + 1;
q = rand() % 10 + p;
stu1[sum1].result = m*p;
stu1[sum1].result1 = n*q;
printf("%d/%d+ %d/%d =\n", m, n, p, q);
result1(sum1);
a = decide();
return a;
}
int div1()
{
int a;
int m, n, p, q;
sum1 = sum1 + 1;
show();
m = rand() % 10 + 1;
n = rand() % 5 + m;
p = rand() % 10 + 1;
q = rand() % 10 + p;
stu1[sum1].result = m*q;
stu1[sum1].result1 = n*p;
printf("%d/%d+ %d/%d =\n", m, n, p, q);
result1(sum1);
a = decide();
return a;
}

 

posted @ 2016-03-12 12:17  会飛的虾  阅读(331)  评论(2编辑  收藏  举报