c语言编程作业小学生计算机辅助教学系统

发布网友

我来回答

2个回答

热心网友

#include <stdio.h>
#include <stdlib.h>
#ifndef RedContritio
         #include <string.h>
#else 
#message("This is RedContritio's energy")
#endif
#include <time.h> //用到了time函数 
int jia(int a,int b) {
    return a+b;
}
 char solutation[999] = "\0";
int jian(int a,int b) {
    return a-b;
}
  
int cheng(int a,int b) {
    return a*b;
}
  
float chu(int a,int b) {
    return 1.0*a/b;
}
int solve(int a,int b,int c) {
    if(c==1)return jia(a,b);
    if(c==2)return jian(a,b);
    if(c==3)return cheng(a,b);
    if(c==4)return (int)chu(a,b);
}
int main() {
    int a,b,c,answer;
    char cmd;
    srand(time(NULL)); //用时间做种,每次产生随机数不一样
  
    printf("enter to start,-1 to quit:");
    while((cmd=getchar())!='-') {
        a = rand() % 10+1;  //产生1-10的随机数
        b= rand() % 10+1;
        c= rand() %4+1;
        answer=solve(a,b,c);
        char ys;
        switch(c) {
            case 1:
                ys='+';
                break;
            case 2:
                ys='-';
                break;
            case 3:
                ys='*';
                break;
            case 4:
                ys='/';
                break;
        }
  
        printf("%d %c %d = ?\n",a,ys,b);
  
        int r=0,solution;
        while(!r) {
            printf("please input your answer.\n");
            memset(solutation,0,sizeof(solutation));
            scanf("%s",solutation);
            solution = atoi(solutation);
            if(!(solution-answer)) { //除法出现小数这里是向下取整,不是四舍五入
                puts("Right!");
                r=1;
            } else puts("Wrong!Please try again.");
        }
  
        printf("continue?(-1 to quit):");
        getchar();//处理缓冲区的多余回车
    }
    return 0;
}

望采纳,多余的printf是为了增强交互性,不需要可删掉。另除法不是很完善,自己可规定小数精度,对代码进行修改。

热心网友

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int i,a,b,y=0,d;
char op;
int rate;
double c;
srand(time(NULL));
for(i=1;i<=10;i++)
{
b=rand()%10+1;
a=rand()%10+1;
d=rand()%4;
if(b==0||a<b)
{
i-=1;
continue;
}
if(0==d){op='*';}else if(1==d){op='-';}else if(2==d){op='+';}else{op='/';}
printf("%d %c %d=",a,op,b);
scanf(" %lf",&c);
switch(op)
{
case '+' : if(c==a+b){printf("Right\n");y++;break;}else {printf("Wrong!\n");break;}
case '-' : if(c==a-b){printf("Right\n");y++;break;}else {printf("Wrong!\n");break;}
case '*' : if(c==a*b){printf("Right\n");y++;break;}else {printf("Wrong!\n");break;}
case '/' : if(c==(double)a/b){printf("Right\n");y++;break;}else {printf("Wrong!\n");break;}/*这里有问题望改善*/
default :printf("输入错误\n");
}
}
rate= y*10;
printf("正确率%d%% 总分%d\n",rate,rate);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com