C语言寒假大作战04

1 作业头:#

这个作业属于哪个课程|https://edu.cnblogs.com/campus/zswxy/CST2019-2
--|:--😐:--😐--:
这个作业要求在哪里|https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10279
这个作业的目标|同样用rand()函数随机生成口算题,且一并生成答案
作业正文|https://www.cnblogs.com/3165984153zb/p/12317885.html
参考文献|https://zhidao.baidu.com/question/271899014.html

2 设计思路和遇到的问题#


在第三次作业的基础上将rand()决定符号改成决定计算,然后加上计算的答案。

3 程序结果截图#



4 程序代码#

#include<stdio.h>
#include<stdlib.h>
void operation1(){
    int a,b,i,c;
    printf("现在是一年级题目:\n请输入生成个数>");
    scanf("%d",&a);
    for(i=0;i<a;i++){
        int shu1=rand()%11;
        int shu2=rand()%11;
        char fh[2]={'+','-'};
        b=rand()%2;
        if(fh[b]=='+') c=shu1+shu2;
        else c=shu1-shu2;
        printf("%2d %c %2d = %2d\n",shu1,fh[b],shu2,c);
    }
    printf("\n\n");
} 
void operation2(){
    int a,b,i;
    double c;
    printf("现在是二年级题目:\n请输入生成个数>");
    scanf("%d",&a);
    for(i=0;i<a;i++){
        int shu1=rand()%101;
        int shu2=rand()%101;
        int shu3=rand()%100+1;
        char fh[2]={'*','/'};
        b=rand()%2;
        if(fh[b]=='/'){
         c=shu1*0.1/shu3;
        printf("%2d %c %2d = %2g\n",shu1,fh[b],shu3,c);} 
        else{ c=shu1*shu2;
        printf("%2d %c %2d = %2g\n",shu1,fh[b],shu2,c);} 
    }
    printf("\n\n");
}
void operation3(){
    int a,b,c,d,i,b1;
    double answer;
    printf("现在是三年级题目:\n请输入生成个数>");
    scanf("%d",&a);
    for(i=0;i<a;i++){
        int shu1=rand()%101;
        int shu2=rand()%101;
        int shu3=rand()%101;
        int shu4=rand()%100+1;
        char fh[4]={'+','-','*','/'};
        b=rand()%4;
        b1=rand()%4;
        if(fh[b]=='/'&&shu2==0) shu2=shu4;
        if(fh[b1]=='/'&&shu3==0) shu3=shu4;
        switch(fh[b])
        {
            case '+':c=1;break;
            case '-':c=2;break;
            case '*':c=3;break;
            case '/':c=4;break;
        }
        switch(fh[b1])
        {
            case '+':d=1;break;
            case '-':d=2;break;
            case '*':d=3;break;
            case '/':d=4;break;
        }
        switch(c)
        {
            case 1:
                if(d==1) answer=shu1+shu2+shu3;
                else if(d==2) answer=shu1+shu2-shu3;
                else if(d==3) answer=shu1+shu2*shu3;
                else answer=shu1+shu2*0.1/shu3;
            case 2:
                if(d==1) answer=shu1-shu2+shu3;
                else if(d==2) answer=shu1-shu2-shu3;
                else if(d==3) answer=shu1-shu2*shu3;
                else answer=shu1-shu2*0.1/shu3;
            case 3:
                if(d==1) answer=shu1*shu2+shu3;
                else if(d==2) answer=shu1*shu2-shu3;
                else if(d==3) answer=shu1*shu2*shu3;
                else answer=shu1*shu2*0.1/shu3;
            case 4:
                if(d==1) answer=shu1*0.1/shu2+shu3;
                else if(d==2) answer=shu1*0.1/shu2-shu3;
                else if(d==3) answer=shu1*0.1/shu2*shu3;
                else answer=shu1*0.1/shu2*0.1/shu3;
        }
        printf("%2d %c %2d %c %2d = %2g\n",shu1,fh[b],shu2,fh[b1],shu3,answer);
        
    }
    printf("\n\n");
}
void menu(){
    printf("操作列表:\n1)一年级    2)二年级    3)三年级\n4)帮助     5)退出程序\n请输入操作>");
} 
void help(){
    printf("帮助信息:\n您需要输入命令代号来进行操作,且\n一年级题目为不超过十位的加减法;\n二年级题目为不超过百位的乘除法;\n三年级题目为不超过百位的加减乘除混合题目.\n\n");
} 
void error(){
    printf("Error!!!\n错误操作指令,请重新输入\n\n"); 
}
int main(){
    int Grade=1;
    printf("========口算生成器========\n欢迎使用口算生成器:)\n\n");
    help();
    menu();
    while(Grade!=5){
        scanf("%d",&Grade);
        printf("<执行操作:)\n\n");
        switch(Grade){
            case 1:operation1();break;
            case 2:operation2();break;
            case 3:operation3();break;
            case 4:help();break;
            case 5:printf("程序结束,欢迎下次使用  任意键结束......\n");break;
            default:error();break;
        }if(Grade!=5) menu();
    }
    return 0;
}

5 Gitee上传截图与链接#



链接
https://gitee.com/zhaobozhaobo

posted @ 2020-02-16 18:05  揽星辰  阅读(108)  评论(0)    收藏  举报