实验二

#include <stdio.h>
#include<time.h>
#include<stdlib.h>
int count=0;
void Ti(int n,int a[]);
int main()
{
    int n;
    int a[100];
    printf("请输入题目的个数:");
    scanf("%d",&n);
    Ti(n,a);
    printf("
回答正确的个数为:%d
错误的个数为:%d
",count,n-count);
    return 0;
}
void Ti(int n,int a[])
{
    int l;
    int p;
    int i,j,h,hh,k,g;
    int f;
    int b[100];
    float x,y,c[100],d[100];
    for(p=0;p<n;p++)
    {
        srand(time(NULL));
        i=(int)rand()%10;
        j=(int)rand()%10;
        h=(int)rand()%10;
        hh=(int)rand()%10;
        g=(int)rand()%3;
        f=((int)rand()%100)-100;
        k=(int)rand()%6;
        switch(k)
        {
        case 0:
            printf("%d+%d=
",i,j);
            printf("请作答:");
            scanf("%d",&b[p]);
            a[p]=i+j;
            if(a[p]==b[p])
            {
                printf("回答正确!
");
                count++;
            }
            else
            {
                printf("回答错误!
");
                printf("正确答案为:%d
",a[p]);
            }
            break;
        case 1:
            printf("%d-%d=
",i,j);
            printf("请作答:");
            scanf("%d",&b[p]);
            a[p]=i-j;
            if(a[p]==b[p])
            {
                printf("回答正确!
");
                count++;
            }
            else
            {
                printf("回答错误!
");
                printf("正确答案为:%d
",a[p]);
            }
            break;
        case 2:
            printf("%d*%d=
",i,j);
            printf("请作答:");
            scanf("%d",&b[p]);
            a[p]=i*j;    
            if(a[p]==b[p])
            {
                printf("回答正确!
");
                count++;
            }
            else
            {
                printf("回答错误!
");
                printf("正确答案为:%d
",a[p]);
            }
            break;
        case 3:
            if(j==0)
            {
                p--;
                break;
            }
            else{
                x=(float)i;
                y=(float)j;
                printf("%d/%d=
",i,j);
                printf("请作答:");
                scanf("%f",&d[p]);
                c[p]=x/y;
                if(c[p]==d[p])
                {
                    printf("回答正确!
");
                    count++;
                }
                else
                {
                    printf("回答错误!
");
                    printf("正确答案为:%.2f
",c[p]);
                }
                break;
            }
        case 4:
            printf("%d!=
",i);
            printf("请作答:");
            scanf("%d",&b[p]);
            if(i==0)
                a[p]=1;
            else
            {
                a[p]=1;
                for(l=1;l<=i;l++)
                    a[p]=a[p]*l;
            }
            if(a[p]==b[p])
            {
                printf("回答正确!
");
                count++;
            }
            else
            {
                printf("回答错误!
");
                printf("正确答案为:%d
",a[p]);
            }
            break;
        case 5:
            if(j==0)
            {
                p--;
                break;
            }
            else
            {
                x=(float)i;
                y=(float)j;
                   switch(g){
                case 0:
                    printf("(%d/%d+%d)*%d=
",i,j,h,hh);
                    printf("请作答:");
                    scanf("%f",&d[p]);
                    c[p]=(x/y+h)*hh;
                    break;
                case 1:
                    printf("(%d+%d*%d)=
",h,i,j);
                    printf("请作答:");
                    scanf("%f",&d[p]);
                    c[p]=h+x*y;
                    break;
                case 2:
                    printf("%d*(%d)=
",i,f);
                    printf("请作答:");
                    scanf("%f",&d[p]);
                    c[p]=x*(f);
                    break;
                }
                if(c[p]==d[p])
                {
                    printf("回答正确!
");
                    count++;
                }
                else
                {
                    printf("回答错误!
");
                    printf("正确答案为:%.2f
",c[p]);
                }
                break;
            }
        }        
    }
}




本程序在VC++6.0开发环境下调试的。
  1. 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3。
  2. 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8。
  3. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数。
  4. 程序可以出单个整数阶乘的题目:如:4!=24。
结对同伴的学号姓名:201306114457,叶鹏   博客地址:http://www.cnblogs.com/yeyepengpeng/ 
我做了:完成程序基本功能与1和4功能,负责敲打代码,测试和修改。
同伴做了:上述2和3的功能,搜集查阅资料,负责指正修改程序,提出修改和改进方案。
总结:通过这次实验使我复习了以前我学到的知识,并且使我更加掌握以前的知识。实验中我感觉到两个人一起结对做程序是一种快乐,同时也弥补了我一个人独自写程序的那种粗心大意,同伴的提醒使我更加的细心与谨慎,通过实验我更加的明白团队的重要性,不仅能提高我的个人能力,同时也能使他人也得到能力的提升。

#include <stdio.h>
#include<time.h>
#include<stdlib.h>
int count=0;
void Ti(int a[]);
void JX(int a[]);
void KH(int a[]);
int main()
{
    int a[100];
    int m;
    do
    {
        printf("      --------------
");
        printf("     1.简单的运算.
");
        printf("     2.含括号的运算.
");
        printf("     3.阶乘的运算.
");
        printf("     0.退出.
");
        printf("      --------------
");
        printf("请选择:");
        scanf("%d",&m);
        switch(m)
        {
        case 1:    
            Ti(a);
            break;
        case 2:
            KH(a);
            break;
        case 3:
            JX(a);
            break;        
        }
    }while(m!=0);
    return 0;
}
void Ti(int a[])
{
    int n,p;
    int i,j,k;
    int b[100];
    float x,y,c[100],d[100];
    count=0;
    printf("请输入题目的个数:");
    scanf("%d",&n);
    for(p=0;p<n;p++)
    {
        srand(time(NULL));
        i=(int)rand()%10;
        j=(int)rand()%10;
        k=(int)rand()%4;
        switch(k)
        {
        case 0:
            printf("%d+%d=
",i,j);
            printf("请作答:");
            scanf("%d",&b[p]);
            a[p]=i+j;
            if(a[p]==b[p])
            {
                printf("回答正确!
");
                count++;
            }
            else
            {
                printf("回答错误!
");
                printf("正确答案为:%d
",a[p]);
            }
            break;
        case 1:
            printf("%d-%d=
",i,j);
            printf("请作答:");
            scanf("%d",&b[p]);
            a[p]=i-j;
            if(a[p]==b[p])
            {
                printf("回答正确!
");
                count++;
            }
            else
            {
                printf("回答错误!
");
                printf("正确答案为:%d
",a[p]);
            }
            break;
        case 2:
            printf("%d*%d=
",i,j);
            printf("请作答:");
            scanf("%d",&b[p]);
            a[p]=i*j;    
            if(a[p]==b[p])
            {
                printf("回答正确!
");
                count++;
            }
            else
            {
                printf("回答错误!
");
                printf("正确答案为:%d
",a[p]);
            }
            break;
        case 3:
            if(j==0)
            {
                p--;
                break;
            }
            else
            {
                x=(float)i;
                y=(float)j;
                printf("%d/%d=
",i,j);
                printf("请作答:");
                scanf("%f",&d[p]);
                c[p]=x/y;
                if(c[p]==d[p])
                {
                    printf("回答正确!
");
                    count++;
                }
                else
                {
                    printf("回答错误!
");
                    printf("正确答案为:%.2f
",c[p]);
                }
                break;            
            }        
        }        
    }
    printf("
回答正确的个数为:%d
错误的个数为:%d
",count,n-count);    
}
void KH(int a[])
{
    int n;
    int i,j,h,hh,g;
    float x,y,c[100],d[100];
    int p;
    int f;
    count=0;
    printf("请输入题目的个数:");
    scanf("%d",&n);
    for(p=0;p<n;p++)
    {
        srand(time(NULL));
        i=(int)rand()%10;
        j=(int)rand()%10;
        h=(int)rand()%10;
        hh=(int)rand()%10;
        g=(int)rand()%3;
        f=((int)rand()%100)-100;
        if(j==0)
        {
            p--;
            continue;
        }
        else
        {
            x=(float)i;
            y=(float)j;
            switch(g)
            {
            case 0:
                printf("(%d/%d+%d)*%d=
",i,j,h,hh);
                printf("请作答:");
                scanf("%f",&d[p]);
                c[p]=(x/y+h)*hh;
                break;
            case 1:
                printf("(%d+%d*%d)=
",h,i,j);
                printf("请作答:");
                scanf("%f",&d[p]);
                c[p]=h+x*y;
                break;
            case 2:
                printf("%d*(%d)=
",i,f);
                printf("请作答:");
                scanf("%f",&d[p]);
                c[p]=x*(f);
                break;
            }
            if(c[p]==d[p])
            {
                printf("回答正确!
");
                count++;
            }
            else
            {
                printf("回答错误!
");
                printf("正确答案为:%.2f
",c[p]);
            }
            
        }
        
    }
    printf("
回答正确的个数为:%d
错误的个数为:%d
",count,n-count);
}
void JX(int a[])
{
    int b[100];
    int p;
    int l;
    int i;
    int n;
    count=0;
    printf("请输入题目的个数:");
    scanf("%d",&n);
    for(p=0;p<n;p++)
    {
        srand(time(NULL));
        i=(int)rand()%10;
        printf("%d!=
",i);
        printf("请作答:");
        scanf("%d",&b[p]);
        if(i==0)
            a[p]=1;
        else
        {
            a[p]=1;
            for(l=1;l<=i;l++)
                a[p]=a[p]*l;
        }
        if(a[p]==b[p])
        {
            printf("回答正确!
");
            count++;
        }
        else
        {
            printf("回答错误!
");
            printf("正确答案为:%d
",a[p]);
        }
    }
    printf("
回答正确的个数为:%d
错误的个数为:%d
",count,n-count);    
}

 
原文地址:https://www.cnblogs.com/chenqiuliang/p/4402117.html