编写一个能对0–10之间的整数进行四则运算的“软件”

C语言 码拜 8年前 (2015-11-15) 1077次浏览
编写一个能对0–10之间的整数进行四则运算的“软件
程序能接收用户输入的整数答案,并判断对错
程序结束时,统计出答对、答错的题目数量。
0——10的整数是随机生成的
用户可以用键盘输入来选择四则运算中的一种,例如输入1代表加法运算
用户用键盘输入一个字符来结束程序的运行并显示统计结果,例如输入K 程序结束并显示统计结果

(有那位愿意帮忙一下吗?编写一个完整的程序,本人是刚开始学的Csharp [C#]爱好者。谢谢!)
编写一个能对0--10之间的整数进行四则运算的“软件”

解决方案:40分
#include<stdio.h>
#include<time.h>
int a,b,c,ch,JieGuo,Lv;
void ShuoMing()
{
printf(“–程序说明–/\n”);
printf(“|输入 +号表示选择加法          |\n”);
printf(“|输入 -号表示选择加法          |\n”);
printf(“|输入 *号表示选择加法          |\n”);
printf(“|输入 /号表示选择加法          |\n”);
printf(“|输入00表示结束                |\n”);
printf(“–/\n”);
printf(“请输入你想要的运算:”);
}
void Add()//加法块
{
printf(“运行加法运算:\n”);
srand(time(0));
a=rand()%10;
b=rand()%10;
printf(“%d+%d=”,a,b);
c=a+b;
scanf(“%d”,&JieGuo);
if(JieGuo==c)
{
printf(“计算正确\n”);
Lv=Lv++;
}
else if(JieGuo!=00)
{
printf(“计算错误\n”);
}
}
void Red()//减法块
{
printf(“运行减法运算:\n”);
srand(time(0));
a=rand()%10;
b=rand()%10;
printf(“%d-%d=”,a,b);
c=a-b;
scanf(“%d”,&JieGuo);
if(JieGuo==c)
{
printf(“计算正确\n”);
Lv=Lv++;
}
else if(JieGuo!=00)
{
printf(“计算错误\n”);
}
}
void Take()//乘块
{
printf(“运行乘法运算:\n”);
srand(time(0));
a=rand()%10;
b=rand()%10;
printf(“%d×%d”,a,b);
c=a*b;
scanf(“%d”,&JieGuo);
if(JieGuo==c)
{
printf(“计算正确\n”);
Lv=Lv++;
}
else if(JieGuo!=00)
{
printf(“计算错误\n”);
}
}
void Shang()//除法块
{
printf(“运行除法运算:\n”);
srand(time(0));
a=rand()%10;
b=rand()%10;
printf(“%d÷%d=”,a,b);
c=a/b;
scanf(“%d”,&JieGuo);
if(JieGuo==c)
{
printf(“计算正确\n”);
Lv=Lv++;
}
else if(JieGuo!=00)
{
printf(“计算错误\n”);
}
}
void ShuRu()
{
scanf(“%c”,&ch);
if(ch==””+””)
Add();
if(ch==””-“”)
Red();
if(ch==””*””)
Take();
if(ch==””/””)
Shang();
}
int main()
{
ShuoMing();
ShuRu();
jj:if(JieGuo==00)
{
printf(“程序结束,%d个正确。”,Lv);
getch();
printf(“按任意键结束。Bye Myqq2196760287\n”);
exit(0);
}
if(ch==””+””)
{
Add();
}
if(ch==””-“”)
{
Red();
}
if(ch==””*””)
{
Take();
}
if(ch==””/””)
{
Shang();
}
goto jj;
}
解决方案:30分
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <string.h>
int right;
void Menu();//菜单说明
void Calculation_formula();//随机生成运算式
void swap(int *a,int *b);//交换数值
void reverse(char str[],int n);//数组逆转
int main()
{
    int number=0,accepted=0;
    //number是总的测试题数,accepted是正确题数
    int i,length,true_result;
    char result[5];
    Menu();
    while(1){
        i=0;
        true_result=0;
        Calculation_formula();
        scanf("%s",result);//以数字字符数组形式保存输入的结果
        if(result[1]==""0""&&result[0]==""0"")//结束标志
            break;
        length=strlen(result);
        reverse(result,length);
        while(result[i]!=""\0""){//将数字字符串转换成对应数值
            true_result+=(result[i]-48)*pow(10,i);
            i++;
        }
        if(true_result==right){
            accepted++;
            printf("计算正确!\n");
        }
        else{
            printf("计算错误!正确结果是:%d\n",right);
        }
        number++;
        fflush(stdin);
    }
    printf("测试结束!\n共%d道题目,通过%d道!\n",number,accepted);
    return 0;
}
void Menu()//菜单说明
{
    printf("\n\n");
    printf("\t --程序说明--\n");
    printf("\t|    输入+号表示选择加法    |\n");
    printf("\t|    输入-号表示选择减法    |\n");
    printf("\t|    输入*号表示选择乘法    |\n");
    printf("\t|    输入/号表示选择除法    |\n");
    printf("\t|    输入00表示结束程序     |\n");
    printf("\t --\n");
    printf("测试开始:\n");
}
void Calculation_formula()//运算式生成
{
    int temp1,temp2;//保存随机生成的运算数
    char c;//保存运算符
    int temp;//随机生成0-3表示相应运算符
    srand((unsigned)time(NULL));//将当前时间设为随机函数种子
    temp=rand()%4;
    temp1=rand()%10;
    temp2=rand()%10;
    switch (temp){
        case 0://加法
            c=""+"";
            right=temp1+temp2;
            break;
        case 1://减法
            c=""-"";
            if(temp1<temp2)//结果非负
                swap(&temp1,&temp2);
            right=temp1-temp2;
            break;
        case 2://乘法
            c=""*"";
            right=temp1*temp2;
            break;
        case 3://除法
            c=""/"";
            if(temp1==0&&temp2==0){//两运算数不能都是0
                do{
                    temp1=rand()%10;
                    temp2=rand()%10;
                }while(temp1||temp2);
            }
            if(temp1<temp2)//被除数应不小于除数
                swap(&temp1,&temp2);
            if(temp2==0||temp1%temp2){//除数不能是0且相除不能有余数
                do{
                   temp2=rand()%10;
                }while(!temp2||(temp1%temp2));
            }
            right=temp1/temp2;
            break;
    }
    printf("%d%c%d=",temp1,c,temp2);
}
void swap(int *a,int *b)//交换数值
{
    int p=*a;
    *a=*b;
    *b=p;
}
void reverse(char str[],int n)//将数组逆转
{
    char c;
    int i;
    for(i=0;i<n/2;i++){
        c=str[i];
        str[i]=str[n-i-1];
        str[n-i-1]=c;
    }
}
解决方案:30分
仅供参考:

//运用C语言开发一个“小学生算术四则运算测试系统”。该系统是让计算机充当一位给小学生布置作业的算术老师,为学生出题并阅卷。该系统要求实现下列功能:
//①为小学生出题(分别进行+、-、*、/等不同运算)。
//②学生做题后,进行评阅。学生每做一题后,评阅给出“答题正确,很好”或“答题错误,重做”等信息。
//③加、减、乘、除运算功能可以自由选择实现。
//④运算数值可控制在两位数的四则运算范围内。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int c,a,b,r,ri;
void main() {
    srand( (unsigned)time( NULL ) );
    system("cls");
    printf("小学生算术四则运算测试系统\n");
    while (1) {
        printf("1加法 2减法 3乘法 4除法 0退出:");fflush(stdout);
        rewind(stdin);
        scanf("%d",&c);
        if (0==c) break;
        switch (c) {
        case 1:
            a=rand()%100;
            b=rand()%100;
            r=a+b;
            while (1) {
                printf("%d+%d=?",a,b);fflush(stdout);
                rewind(stdin);
                scanf("%d",&ri);
                if (ri==r) {
                    printf("答题正确,很好!\n");
                    break;
                } else {
                    printf("答题错误,请重做。\n");
                }
            }
        break;
        case 2:
            a=1+rand()%99;
            b=rand()%a;
            r=a-b;
            while (1) {
                printf("%d-%d=?",a,b);fflush(stdout);
                rewind(stdin);
                scanf("%d",&ri);
                if (ri==r) {
                    printf("答题正确,很好!\n");
                    break;
                } else {
                    printf("答题错误,请重做。\n");
                }
            }
        break;
        case 3:
            a=rand()%99;
            b=rand()%99;
            r=a*b;
            while (1) {
                printf("%d*%d=?",a,b);fflush(stdout);
                rewind(stdin);
                scanf("%d",&ri);
                if (ri==r) {
                    printf("答题正确,很好!\n");
                    break;
                } else {
                    printf("答题错误,请重做。\n");
                }
            }
        break;
        case 4:
            a=2+rand()%998;
            b=1+rand()%(a/2);
            while (1) {
                if (0==a%b) break;
                b--;
            }
            r=a/b;
            while (1) {
                printf("%d/%d=?",a,b);fflush(stdout);
                rewind(stdin);
                scanf("%d",&ri);
                if (ri==r) {
                    printf("答题正确,很好!\n");
                    break;
                } else {
                    printf("答题错误,请重做。\n");
                }
            }
        break;
        }
    }
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明编写一个能对0–10之间的整数进行四则运算的“软件”
喜欢 (0)
[1034331897@qq.com]
分享 (0)