鱼C论坛

 找回密码
 立即注册
查看: 2375|回复: 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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
struct equation{
        int a;
        int b;
        char fuhao;
        int ans;
        int answer;
        bool is_correct;
};
equation equations[10];
int len = 0;
void memory_equation(int a, int b, char fuhao, int ans, int answer, bool is_correct) {
        equation temp;
        temp.a = a; temp.b = b; temp.fuhao = fuhao; temp.ans = ans; temp.answer = answer; temp.is_correct = is_correct;
        if(len == 10) {
                for(int i=0; i<9; ++i) equations[i] = equations[i+1];
                equations[9] = temp;
        }
        else equations[len++] = temp;
}
void ask() {
        printf("*********\n\
请选择运算符:\n\
加法运算,请按1;\n\
减法运算,请按2;\n\
乘法运算,请按3;\n\
除法运算,请按4;\n\
*****");
        int n;
        scanf("%d", &n);
        int a = rand(), b = rand(), answer, ans;
        char fuhao;
        switch(n) {
                case 1: fuhao = '+'; answer = a+b; break;
                case 2: fuhao = '-'; answer = a-b; break;
                case 3: fuhao = '*'; answer = a*b; break;
                case 4: fuhao = '/'; answer = a/b; break;
        }
        printf("%d%c%d=", a, fuhao, b);
        scanf("%d", &ans);
        if(ans == answer) printf("你很棒,加油!\n");
        else printf("很遗憾!\n");
        memory_equation(a, b, fuhao, ans, answer, ans == answer);
}
void print()
{
        for(int i=0; i<len; ++i) {
                equation x = equations[i];
                printf("%d%c%d=%d", x.a, x.fuhao, x.b, x.ans);
                if(x.is_correct) printf("正确\n");
                else printf("错误\n");
        }
}
int main()
{
        srand((unsigned int)time(0));
        while(true){
                ask();
                char yn;
                printf("是否要查询以前的答题情况(Y/N):");
                fflush(stdin);
                fflush(stdin);
                scanf("%c", &yn);
                if(yn == 'Y' || yn == 'y') print();
                printf("是否需要继续答题(Y/N):");
                fflush(stdin);
                scanf("%c", &yn);
                if(yn == 'N' || yn == 'n') break;
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-11-3 12:43:07 From FishC Mobile | 显示全部楼层
要用到c语言的数组,尽量简化,跪求大佬写一下,教教我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-3 13:25:26 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
struct equation{
        int a;
        int b;
        char fuhao;
        int ans;
        int answer;
        bool is_correct;
};
equation equations[10];
int len = 0;
void memory_equation(int a, int b, char fuhao, int ans, int answer, bool is_correct) {
        equation temp;
        temp.a = a; temp.b = b; temp.fuhao = fuhao; temp.ans = ans; temp.answer = answer; temp.is_correct = is_correct;
        if(len == 10) {
                for(int i=0; i<9; ++i) equations[i] = equations[i+1];
                equations[9] = temp;
        }
        else equations[len++] = temp;
}
void ask() {
        printf("*********\n\
请选择运算符:\n\
加法运算,请按1;\n\
减法运算,请按2;\n\
乘法运算,请按3;\n\
除法运算,请按4;\n\
*****");
        int n;
        scanf("%d", &n);
        int a = rand(), b = rand(), answer, ans;
        char fuhao;
        switch(n) {
                case 1: fuhao = '+'; answer = a+b; break;
                case 2: fuhao = '-'; answer = a-b; break;
                case 3: fuhao = '*'; answer = a*b; break;
                case 4: fuhao = '/'; answer = a/b; break;
        }
        printf("%d%c%d=", a, fuhao, b);
        scanf("%d", &ans);
        if(ans == answer) printf("你很棒,加油!\n");
        else printf("很遗憾!\n");
        memory_equation(a, b, fuhao, ans, answer, ans == answer);
}
void print()
{
        for(int i=0; i<len; ++i) {
                equation x = equations[i];
                printf("%d%c%d=%d", x.a, x.fuhao, x.b, x.ans);
                if(x.is_correct) printf("正确\n");
                else printf("错误\n");
        }
}
int main()
{
        srand((unsigned int)time(0));
        while(true){
                ask();
                char yn;
                printf("是否要查询以前的答题情况(Y/N):");
                fflush(stdin);
                fflush(stdin);
                scanf("%c", &yn);
                if(yn == 'Y' || yn == 'y') print();
                printf("是否需要继续答题(Y/N):");
                fflush(stdin);
                scanf("%c", &yn);
                if(yn == 'N' || yn == 'n') break;
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-3 17:21:27 From FishC Mobile | 显示全部楼层
求大佬联系方式,教教小弟怎么学编程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-3 20:04:42 From FishC Mobile | 显示全部楼层
大佬,怎么控制随机数在100以内啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


把第34行改为
int a = rand()%100, b = rand()%100, answer, ans;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我编程能力也不行,如果你有问题可以发到这个论坛里,一般都会有人解答的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-4 17:24:48 From FishC Mobile | 显示全部楼层
大佬,这个还是不能完成查看做过的题啊,会出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我改一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我这里运行没有什么问题,你能把你出问题的图片发一下么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

点Y或者N他不能继续运行,会跳出来,显示错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不行啊,加上之后会出现更多错误了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-5 17:18:12 From FishC Mobile | 显示全部楼层
我用的是vs2022
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

能发一下截图么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 17:21:49 | 显示全部楼层
我这里没有什么问题
*********
请选择运算符:
加法运算,请按1;
减法运算,请按2;
乘法运算,请按3;
除法运算,请按4;
*****1
70+28=98
你很棒,加油!
是否要查询以前的答题情况(Y/N):Y
70+28=98正确
是否需要继续答题(Y/N):Y
*********
请选择运算符:
加法运算,请按1;
减法运算,请按2;
乘法运算,请按3;
除法运算,请按4;
*****
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

拍不了啊。点Y或者N之后会跳出来,有一个小长方形,左上角会写:已引发异常,显示调用堆栈等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

好像是 vscode 不支持 fflush 函数,我改一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

fflush(stdin);
 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有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-5 17:28:12 | 显示全部楼层
你试试这个
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
struct equation{
        int a;
        int b;
        char fuhao;
        int ans;
        int answer;
        bool is_correct;
};
equation equations[10];
int len = 0;
void memory_equation(int a, int b, char fuhao, int ans, int answer, bool is_correct) {
        equation temp;
        temp.a = a; temp.b = b; temp.fuhao = fuhao; temp.ans = ans; temp.answer = answer; temp.is_correct = is_correct;
        if(len == 10) {
                for(int i=0; i<9; ++i) equations[i] = equations[i+1];
                equations[9] = temp;
        }
        else equations[len++] = temp;
}
void ask() {
        printf("*********\n\
请选择运算符:\n\
加法运算,请按1;\n\
减法运算,请按2;\n\
乘法运算,请按3;\n\
除法运算,请按4;\n\
*****");
        int n;
        scanf("%d", &n);
        int a = rand()%100, b = rand()%100, answer, ans;
        char fuhao;
        switch(n) {
                case 1: fuhao = '+'; answer = a+b; break;
                case 2: fuhao = '-'; answer = a-b; break;
                case 3: fuhao = '*'; answer = a*b; break;
                case 4: fuhao = '/'; answer = a/b; break;
        }
        printf("%d%c%d=", a, fuhao, b);
        scanf("%d", &ans);
        if(ans == answer) printf("你很棒,加油!\n");
        else printf("很遗憾!\n");
        memory_equation(a, b, fuhao, ans, answer, ans == answer);
}
void print()
{
        for(int i=0; i<len; ++i) {
                equation x = equations[i];
                printf("%d%c%d=%d", x.a, x.fuhao, x.b, x.ans);
                if(x.is_correct) printf("正确\n");
                else printf("错误\n");
        }
}
int main()
{
        srand((unsigned int)time(0));
        while(true){
                ask();
                char yn;
                printf("是否要查询以前的答题情况(Y/N):");
                getchar();
                scanf("%c", &yn);
                if(yn == 'Y' || yn == 'y') print();
                printf("是否需要继续答题(Y/N):");
                getchar();
                scanf("%c", &yn);
                if(yn == 'N' || yn == 'n') break;
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

大佬,可以了,真心求一个联系方式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 11:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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