程序介绍:
这个程序比较人性化,每做完一道题都可以进行选择,接下来是要做什么。
程序刚开始进入的是选择页面,这个页面是选择要进行什么运算:
=========目录==========
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; }