搜索
查看: 1238|回复: 2
打印 上一主题 下一主题

[原创] 之前那个大一 作业求助的朋友 需要的 我发下吧

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-1 04:16:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 gaoyukonga 于 2013-7-1 05:20 编辑

//大一设计 求解
//本程序由忘记完成 论坛账号gaoyukonga
//@忘记 希望能帮助到您!
#include <stdio.h>
#include <stdlib.h>
int main()
{
//首先载入运算类型
        int a,i=0,i2=0,d=1;//a为类型 i为分数 i2为错题数、d为题目番号
    char yu='%';   
        printf("请输入运算数值位数!\n输入'1'为1位,运算包括('+'、'-'、'*')\n输入'2'为2位,运算包括('+'、'-'、'*'、'/')\n输入'3'为3位,运算包括('+'、'-'、'*'、'/'、'%c')\n",yu);
    scanf("%d",&a);
    if(a!=1 && a!=2 && a!=3){
    printf("请输入1-3!\n");
    }else if(a==1){
    //1位运算处理
    while(1){
    srand(time(0));
    int a1 = (rand()%9+1),b = (rand()%9+1),b1,b2,c = (rand()%3+1);    // 初始化计算值 - a1为计算值1、b为计算值2、b1为结果、b2为输入结果、c为符号
    char c1;//初始化计算符号
    if(c==1){c1='+'; b1=a1+b;}else if(c==2){c1='-'; b1=a1-b;}else if(c==3){c1='*'; b1=a1*b;}else{printf("系统出错!");}//符号、结果处理完成
    printf("题目%d:\n%d %c %d=?\n",d,a1,c1,b);//输出字符串 显示题目
    scanf("%d",&b2);//读入答案
   
    if(b2==b1){
                if(i2!=0){
                        if(i2>5){
                        i=i+2;
                        }else{
                        i=i+(10-i2*2);
                        printf("你答对了,继续努力!\n当前分数%d\n-----------------题目分割线------------------\n",i);
            d+=1;
                        }
                }else{
        i=i+(10-i2*2);
        printf("全正确,你非常聪明!加10分\n当前分数%d\n-----------------题目分割线------------------\n",i);
        d+=1;
        }
               
    }else{i2+=1;printf("你答错了继续努力\n-----------------题目分割线------------------\n");d+=1;}//处理答案   
    }
   
    }else if(a==2){
    //2位运算处理
    while(1){
    srand(time(0));
    int a1 = (rand()%90+10),b = (rand()%90+10),b1,b2,c = (rand()%4+1);    // 初始化计算值 - a1为计算值1、b为计算值2、b1为结果、b2为输入结果、c为符号
    char c1;//初始化计算符号
    if(c==1){c1='+'; b1=a1+b;}else if(c==2){c1='-'; b1=a1-b;}else if(c==3){c1='*'; b1=a1*b;}else if(c==4){c1='/';b1=a1/b;}else{printf("系统出错!");}//符号、结果处理完成
    printf("题目%d:\n%d %c %d=?\n",d,a1,c1,b);//输出字符串 显示题目
    scanf("%d",&b2);//读入答案
   
    if(b2==b1){
                if(i2!=0){
                        if(i2>5){
                        i=i+2;
                        }else{
                        i=i+(10-i2*2);
                        printf("你答对了,继续努力!\n当前分数%d\n-----------------题目分割线------------------\n",i);
            d+=1;
                        }
                }else{
        i=i+(10-i2*2);
        printf("全正确,你非常聪明!加10分\n当前分数%d\n-----------------题目分割线------------------\n",i);
        d+=1;
        }
               
    }else{i2+=1;printf("你答错了继续努力\n-----------------题目分割线------------------\n");d+=1;}//处理答案   
    }
   
    }else if(a==3){
    //3位运算处理
    while(1){
    srand(time(0));
    int a1 = (rand()%900+100),b = (rand()%900+100),b1,b2,c = (rand()%5+1);    // 初始化计算值 - a1为计算值1、b为计算值2、b1为结果、b2为输入结果、c为符号
    char c1;//初始化计算符号
    if(c==1){c1='+'; b1=a1+b;}else if(c==2){c1='-'; b1=a1-b;}else if(c==3){c1='*'; b1=a1*b;}else if(c==4){c1='/';b1=a1/b;}else if(c==5){c1='%';b1=a1%b;}else{printf("系统出错!");}//符号、结果处理完成
    printf("题目%d:\n%d %c %d=?\n",d,a1,c1,b);//输出字符串 显示题目
    scanf("%d",&b2);//读入答案
//很无耻的加了个获取答案的密码 哈哈!不要鄙视!!!
    if(b2==888888){printf("答案为:%d\n",b1);d+=1;}else{
    if(b2==b1){
                if(i2!=0){
                        if(i2>5){
                        i=i+2;
                        }else{
                        i=i+(10-i2*2);
                        printf("你答对了,继续努力!\n当前分数%d\n-----------------题目分割线------------------\n",i);
            d+=1;
                        }
                }else{
        i=i+(10-i2*2);
        printf("全正确,你非常聪明!加10分\n当前分数%d\n-----------------题目分割线------------------\n",i);
        d+=1;
        }
               
    }else{i2+=1;printf("你答错了继续努力\n-----------------题目分割线------------------\n");d+=1;}//处理答案   
    }
    }
    }
        return 0;
}


代码写的比较详细 大家仔细看下 应该有收获的! 希望支持 以后会长解题!
沙发
发表于 2013-7-1 17:25:32 | 只看该作者
实现上有问题,题目要求是10道题目,你的程序是放在死循环里面的;题目要求一道题目可以重新回答两次,跑了一下你这段代码没实现这点

另外一个函数100行,不多分几个吗。一般代码风格要求,一个函数不可以超过80x24x2的空间的
板凳
 楼主| 发表于 2013-7-1 19:51:59 | 只看该作者
rosynirvana 发表于 2013-7-1 17:25
实现上有问题,题目要求是10道题目,你的程序是放在死循环里面的;题目要求一道题目可以重新回答两次,跑了 ...

很感谢您的回复;但是这个只是一个例子,并没有考虑那么多。分开处理也是可以的,一直以来写代码都是能写一起就写一起;不过那样好像维护性和可更改性就不高了,谢谢您的建议。以后写的时候会注意!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表