鱼C论坛

 找回密码
 立即注册
查看: 2807|回复: 19

[已解决]求大佬用c语言的数组做一下,教教我,谢谢

[复制链接]
发表于 2022-11-3 12:42:06 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目二:先做一菜单,菜单格式如下:
*********
请选择运算符:
加法运算,请按1;
减法运算,请按2;
乘法运算,请按3;
除法运算,请按4;
*****
程序要求:先显示菜单,客户选择1-4中任意一个数字,就做相应的计算。然后要求客户输入两个数,运算出结果。比如客户选择了...
在题目二的基础上进行改进。程序要求:先显示菜单,客户选择了数字,就做相应的计算。然后系统随机产生两个整数,列出式子,要求客户写出答案,最后系统判断客户答题是否正确,正确显示“你很棒,加油!”,错误显示“很遗憾!”。比如客户选择了2,系统就随机产生一个式子(例23-12=),然后要求客户做减法。                                                    在题目三的基础上进行改进。客户做完一题后,询问客户是否继续答题(继续请输入Y,退出请输入N)。如客户选择继续答题,就重复显题目四,否则退出。
即用户可以循环做答,直到其输入N.
在题目四的基础上进行改进。客户做完多道题目后,可以查询最近十道题的答题情况(如没有做到十道题,就显示全部的题目)。查询显示结果的格式如下:
2*3=6正确
2*4=7错误
提示:要用到数组
最佳答案
2022-11-3 13:25:26
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. using namespace std;
  5. struct equation{
  6.         int a;
  7.         int b;
  8.         char fuhao;
  9.         int ans;
  10.         int answer;
  11.         bool is_correct;
  12. };
  13. equation equations[10];
  14. int len = 0;
  15. void memory_equation(int a, int b, char fuhao, int ans, int answer, bool is_correct) {
  16.         equation temp;
  17.         temp.a = a; temp.b = b; temp.fuhao = fuhao; temp.ans = ans; temp.answer = answer; temp.is_correct = is_correct;
  18.         if(len == 10) {
  19.                 for(int i=0; i<9; ++i) equations[i] = equations[i+1];
  20.                 equations[9] = temp;
  21.         }
  22.         else equations[len++] = temp;
  23. }
  24. void ask() {
  25.         printf("*********\n\
  26. 请选择运算符:\n\
  27. 加法运算,请按1;\n\
  28. 减法运算,请按2;\n\
  29. 乘法运算,请按3;\n\
  30. 除法运算,请按4;\n\
  31. *****");
  32.         int n;
  33.         scanf("%d", &n);
  34.         int a = rand(), b = rand(), answer, ans;
  35.         char fuhao;
  36.         switch(n) {
  37.                 case 1: fuhao = '+'; answer = a+b; break;
  38.                 case 2: fuhao = '-'; answer = a-b; break;
  39.                 case 3: fuhao = '*'; answer = a*b; break;
  40.                 case 4: fuhao = '/'; answer = a/b; break;
  41.         }
  42.         printf("%d%c%d=", a, fuhao, b);
  43.         scanf("%d", &ans);
  44.         if(ans == answer) printf("你很棒,加油!\n");
  45.         else printf("很遗憾!\n");
  46.         memory_equation(a, b, fuhao, ans, answer, ans == answer);
  47. }
  48. void print()
  49. {
  50.         for(int i=0; i<len; ++i) {
  51.                 equation x = equations[i];
  52.                 printf("%d%c%d=%d", x.a, x.fuhao, x.b, x.ans);
  53.                 if(x.is_correct) printf("正确\n");
  54.                 else printf("错误\n");
  55.         }
  56. }
  57. int main()
  58. {
  59.         srand((unsigned int)time(0));
  60.         while(true){
  61.                 ask();
  62.                 char yn;
  63.                 printf("是否要查询以前的答题情况(Y/N):");
  64.                 fflush(stdin);
  65.                 fflush(stdin);
  66.                 scanf("%c", &yn);
  67.                 if(yn == 'Y' || yn == 'y') print();
  68.                 printf("是否需要继续答题(Y/N):");
  69.                 fflush(stdin);
  70.                 scanf("%c", &yn);
  71.                 if(yn == 'N' || yn == 'n') break;
  72.         }
  73.         return 0;
  74. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-11-3 12:43:07 From FishC Mobile | 显示全部楼层
要用到c语言的数组,尽量简化,跪求大佬写一下,教教我
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-3 13:25:26 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. using namespace std;
  5. struct equation{
  6.         int a;
  7.         int b;
  8.         char fuhao;
  9.         int ans;
  10.         int answer;
  11.         bool is_correct;
  12. };
  13. equation equations[10];
  14. int len = 0;
  15. void memory_equation(int a, int b, char fuhao, int ans, int answer, bool is_correct) {
  16.         equation temp;
  17.         temp.a = a; temp.b = b; temp.fuhao = fuhao; temp.ans = ans; temp.answer = answer; temp.is_correct = is_correct;
  18.         if(len == 10) {
  19.                 for(int i=0; i<9; ++i) equations[i] = equations[i+1];
  20.                 equations[9] = temp;
  21.         }
  22.         else equations[len++] = temp;
  23. }
  24. void ask() {
  25.         printf("*********\n\
  26. 请选择运算符:\n\
  27. 加法运算,请按1;\n\
  28. 减法运算,请按2;\n\
  29. 乘法运算,请按3;\n\
  30. 除法运算,请按4;\n\
  31. *****");
  32.         int n;
  33.         scanf("%d", &n);
  34.         int a = rand(), b = rand(), answer, ans;
  35.         char fuhao;
  36.         switch(n) {
  37.                 case 1: fuhao = '+'; answer = a+b; break;
  38.                 case 2: fuhao = '-'; answer = a-b; break;
  39.                 case 3: fuhao = '*'; answer = a*b; break;
  40.                 case 4: fuhao = '/'; answer = a/b; break;
  41.         }
  42.         printf("%d%c%d=", a, fuhao, b);
  43.         scanf("%d", &ans);
  44.         if(ans == answer) printf("你很棒,加油!\n");
  45.         else printf("很遗憾!\n");
  46.         memory_equation(a, b, fuhao, ans, answer, ans == answer);
  47. }
  48. void print()
  49. {
  50.         for(int i=0; i<len; ++i) {
  51.                 equation x = equations[i];
  52.                 printf("%d%c%d=%d", x.a, x.fuhao, x.b, x.ans);
  53.                 if(x.is_correct) printf("正确\n");
  54.                 else printf("错误\n");
  55.         }
  56. }
  57. int main()
  58. {
  59.         srand((unsigned int)time(0));
  60.         while(true){
  61.                 ask();
  62.                 char yn;
  63.                 printf("是否要查询以前的答题情况(Y/N):");
  64.                 fflush(stdin);
  65.                 fflush(stdin);
  66.                 scanf("%c", &yn);
  67.                 if(yn == 'Y' || yn == 'y') print();
  68.                 printf("是否需要继续答题(Y/N):");
  69.                 fflush(stdin);
  70.                 scanf("%c", &yn);
  71.                 if(yn == 'N' || yn == 'n') break;
  72.         }
  73.         return 0;
  74. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-3 17:21:27 From FishC Mobile | 显示全部楼层
求大佬联系方式,教教小弟怎么学编程
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-3 20:04:42 From FishC Mobile | 显示全部楼层
大佬,怎么控制随机数在100以内啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-4 07:26:26 | 显示全部楼层
本帖最后由 tommyyu 于 2022-11-4 07:28 编辑
啊啊啊空空 发表于 2022-11-3 20:04
大佬,怎么控制随机数在100以内啊


把第34行改为
  1. int a = rand()%100, b = rand()%100, answer, ans;
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-4 07:27:04 | 显示全部楼层
啊啊啊空空 发表于 2022-11-3 17:21
求大佬联系方式,教教小弟怎么学编程

我编程能力也不行,如果你有问题可以发到这个论坛里,一般都会有人解答的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-4 17:24:48 From FishC Mobile | 显示全部楼层
大佬,这个还是不能完成查看做过的题啊,会出错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 07:53:11 | 显示全部楼层
啊啊啊空空 发表于 2022-11-4 17:24
大佬,这个还是不能完成查看做过的题啊,会出错

我改一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 07:56:27 | 显示全部楼层
啊啊啊空空 发表于 2022-11-4 17:24
大佬,这个还是不能完成查看做过的题啊,会出错

我这里运行没有什么问题,你能把你出问题的图片发一下么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-5 17:06:20 From FishC Mobile | 显示全部楼层
tommyyu 发表于 2022-11-5 07:56
我这里运行没有什么问题,你能把你出问题的图片发一下么

点Y或者N他不能继续运行,会跳出来,显示错误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-5 17:17:19 From FishC Mobile | 显示全部楼层
tommyyu 发表于 2022-11-4 07:26
把第34行改为

不行啊,加上之后会出现更多错误了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-5 17:18:12 From FishC Mobile | 显示全部楼层
我用的是vs2022
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 17:19:09 | 显示全部楼层

能发一下截图么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 17:21:49 | 显示全部楼层
我这里没有什么问题
  1. *********
  2. 请选择运算符:
  3. 加法运算,请按1;
  4. 减法运算,请按2;
  5. 乘法运算,请按3;
  6. 除法运算,请按4;
  7. *****1
  8. 70+28=98
  9. 你很棒,加油!
  10. 是否要查询以前的答题情况(Y/N):Y
  11. 70+28=98正确
  12. 是否需要继续答题(Y/N):Y
  13. *********
  14. 请选择运算符:
  15. 加法运算,请按1;
  16. 减法运算,请按2;
  17. 乘法运算,请按3;
  18. 除法运算,请按4;
  19. *****
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-5 17:23:09 From FishC Mobile | 显示全部楼层
啊啊啊空空 发表于 2022-11-5 17:06
点Y或者N他不能继续运行,会跳出来,显示错误

拍不了啊。点Y或者N之后会跳出来,有一个小长方形,左上角会写:已引发异常,显示调用堆栈等
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 17:27:26 | 显示全部楼层
啊啊啊空空 发表于 2022-11-5 17:23
拍不了啊。点Y或者N之后会跳出来,有一个小长方形,左上角会写:已引发异常,显示调用堆栈等

好像是 vscode 不支持 fflush 函数,我改一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 17:27:26 | 显示全部楼层

fflush(stdin);

  1. In all other cases, the behavior depends on the specific library implementation. In some implementations, flushing a stream open for reading causes its input buffer to be cleared (but this is not portable expected behavior).
复制代码


https://cplusplus.com/reference/cstdio/fflush/

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
tommyyu + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 17:28:12 | 显示全部楼层
你试试这个
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. using namespace std;
  5. struct equation{
  6.         int a;
  7.         int b;
  8.         char fuhao;
  9.         int ans;
  10.         int answer;
  11.         bool is_correct;
  12. };
  13. equation equations[10];
  14. int len = 0;
  15. void memory_equation(int a, int b, char fuhao, int ans, int answer, bool is_correct) {
  16.         equation temp;
  17.         temp.a = a; temp.b = b; temp.fuhao = fuhao; temp.ans = ans; temp.answer = answer; temp.is_correct = is_correct;
  18.         if(len == 10) {
  19.                 for(int i=0; i<9; ++i) equations[i] = equations[i+1];
  20.                 equations[9] = temp;
  21.         }
  22.         else equations[len++] = temp;
  23. }
  24. void ask() {
  25.         printf("*********\n\
  26. 请选择运算符:\n\
  27. 加法运算,请按1;\n\
  28. 减法运算,请按2;\n\
  29. 乘法运算,请按3;\n\
  30. 除法运算,请按4;\n\
  31. *****");
  32.         int n;
  33.         scanf("%d", &n);
  34.         int a = rand()%100, b = rand()%100, answer, ans;
  35.         char fuhao;
  36.         switch(n) {
  37.                 case 1: fuhao = '+'; answer = a+b; break;
  38.                 case 2: fuhao = '-'; answer = a-b; break;
  39.                 case 3: fuhao = '*'; answer = a*b; break;
  40.                 case 4: fuhao = '/'; answer = a/b; break;
  41.         }
  42.         printf("%d%c%d=", a, fuhao, b);
  43.         scanf("%d", &ans);
  44.         if(ans == answer) printf("你很棒,加油!\n");
  45.         else printf("很遗憾!\n");
  46.         memory_equation(a, b, fuhao, ans, answer, ans == answer);
  47. }
  48. void print()
  49. {
  50.         for(int i=0; i<len; ++i) {
  51.                 equation x = equations[i];
  52.                 printf("%d%c%d=%d", x.a, x.fuhao, x.b, x.ans);
  53.                 if(x.is_correct) printf("正确\n");
  54.                 else printf("错误\n");
  55.         }
  56. }
  57. int main()
  58. {
  59.         srand((unsigned int)time(0));
  60.         while(true){
  61.                 ask();
  62.                 char yn;
  63.                 printf("是否要查询以前的答题情况(Y/N):");
  64.                 getchar();
  65.                 scanf("%c", &yn);
  66.                 if(yn == 'Y' || yn == 'y') print();
  67.                 printf("是否需要继续答题(Y/N):");
  68.                 getchar();
  69.                 scanf("%c", &yn);
  70.                 if(yn == 'N' || yn == 'n') break;
  71.         }
  72.         return 0;
  73. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-5 17:58:21 From FishC Mobile | 显示全部楼层
tommyyu 发表于 2022-11-5 17:28
你试试这个

大佬,可以了,真心求一个联系方式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 05:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表