• 实验1 总结


    #include<stdio.h>
    #include<stdlib.h>
    #include <time.h>
    #define N 30
    main()
    {
        int a,b,k,j=0,i,n,num1,num2,num3,num4;
        int e,f,g,h,getanswer;//e为记录用户的题量,f为用户的答题答案 
        char op,op1;
        int num5,num6,num7,num8;//临时变量
        srand(time(NULL));
        do{
        printf("\n请输入数字类型(1.整数 2.真分数) -1为退出程序:     ");
        while(!(scanf("%d",&n)))
    {
    printf("\n 非法输入,请重新输入:");
    fflush(stdin);
    }
        
        switch(n)
        {
        case 1:
            {
                printf("用户请输入题量:");
                while(!(scanf("%d",&e)))
                {
                    printf("\n 非法输入,请重新输入:");
                    fflush(stdin);
                }
                for(i=0;i<e;i++)
                {
                    a=rand()%100+1;
                    b=rand()%100+1;
                    k=rand()%4+1;
                    printf("%d",a);
                    switch(k)
                    {
                    case 1:printf("+");
                        op='+';
                        break;
                    case 2:printf("-");
                            op='-';
                            break;
                    case 3:printf("*");
                            op='*';
                            break;
                    case 4:printf("/");
                            op='/';
                            break;
                    }
                    printf("%d=",b);
                    while(!(scanf("%d",&f)))
                    {
                        printf("\n 非法输入,请重新输入:");
                        fflush(stdin);
                    }
                    switch(op)
                    {   
                    case '+':   
                        getanswer=a+b;   
                        break;
                    case '-':   
                        getanswer=a-b;
                        break;
                    case '*':   
                        getanswer=a*b;
                        break;
                    case '/':  
                        getanswer=a/b;   
                        break; 
                    }
                    if(f==getanswer)
                    {
                        printf("\n做对了\n");
                        j++;
                    }
                    else
                    {
                        printf("\n做错了\n");
                    }
                }
                    printf("用户总共答对了%d道题目!",j);
                break;
            }
                break;
        case 2:
            {    printf("用户请输入题量:");
                while(!(scanf("%d",&e)))
                {
                    printf("\n 非法输入,请重新输入:");
                    fflush(stdin);
                }
                for(i=0;i<e;i++)
                {
                    num1=rand()%10+1;
                    num2=rand()%10+1;
                    num3=rand()%10+1;
                    num4=rand()%10+1;
                    if(num1>num2)
                    {
                        num5=num1;
                        num1=num2;
                        num2=num5;
                    }
                    if(num3>num4)
                    {
                        num5=num3;
                        num3=num4;
                        num4=num5;
                    }
                    op='+';
                    num6=num1*num4+num2*num3;
                    num7=num2*num4;
                    num8=num6;
                    while(num8>1)
                    {
                        if(num6%num8==0 && num7%num8==0)
                        {
                            num6=num6/num8;
                            num7=num7/num8;
                        }
                        num8--;
                    }
                    printf("\n(%d/%d)%c(%d/%d)=",num1,num2,op,num3,num4);
    
    
                        
                    while(!(scanf("%d%c%d",&g,&op1,&h)))
                    {
                        printf("\n 非法输入,请重新输入:");
                        fflush(stdin);
                    }
                    
                    if((g==num6)&&(h==num7))
                    {
                        printf("\n做对了\n");
                        j++;
                    }
                    else
                    {
                        printf("\n做错了\n");
                    }
                }
                    printf("用户总共答对了%d道题目!",j);
            }
            break;
        
            
            }
        }while(n!=-1);
    }

    总结:通过这个实验,我留意到许多小的细节,就是一些容错的问题,在这么多的程序锻炼中,我往往注重的是结果能否实现出来,而并没有考虑到当用户输入错误的时候系统无法继续执行下去的问题,这个bug在现实中是不可允许的。这是我的收获之一。其次就是一个真分数的化简过程,虽然这个只是个数学问题,但是也用了我一些时间去解决这个问题,这是一个数学问题在计算机中展示的一个过程。一开始我只能做到公分的模式,当答案是化简结果的时候会显示错误。通过和同学的交流和学习,我修改了这个bug,当用户输入最简的时候会显示正确而不是显示错误。我觉得通过这个实验,我能够与同学交流一些我没留意的问题,我知道我所思考的思维并不缜密,所以以后的程序中,我希望我能够做到的是我写的程序尽量少的出现bug,尽量好的把程序做得更加完美!

  • 相关阅读:
    听豆瓣架构变迁分享会总结
    业界对生成图片缩略图的做法归纳
    58和百姓网的技术学习
    减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同
    网站速度问题排查与定位经验
    调度思想-现实中的事物与技术里面其实存在类似道理
    关于图片或者文件在数据库的存储方式归纳
    mysql单表体积和一个库设计多少张表为妥
    php的变量引用与销毁机制
    选择技术方案权衡时,考虑对其可控性很重要
  • 原文地址:https://www.cnblogs.com/Russelling/p/4393843.html
Copyright © 2020-2023  润新知