| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 338 人关注过本帖
标题:大家来看看我的编程里的问题吧
只看楼主 加入收藏
Hong91
Rank: 2
等 级:论坛游民
帖 子:28
专家分:19
注 册:2010-3-27
结帖率:71.43%
收藏
已结贴  问题点数:10 回复次数:2 
大家来看看我的编程里的问题吧
这个是我课程设计的一部分。现在只做了练习部分的内容。发现用函数返回答对的题目数量有问题。大家来帮我看下怎么修改吧。我改了好久还是么结果
程序代码:
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
void main()
{    int caozuo,weishu=0,tishu=0,zongfen=0,suanfa=0,i,shu1,shu2,a,hd,da,ii;
    int plus(int tishu,int a);
    int minus(int tishu,int a);
    int multiply(int tishu,int a);
    int devide(int tishu,int a);
    int random(int tishu,int a);

   
struct cy
{
    char name[10];
    float fs;
}cy;

srand((unsigned)time(NULL));

   
loop:
    printf("        算术练习\n");
    printf(" 1 练习\n");
    printf(" 2 测验\n");
    printf(" 3 设置\n");
    printf(" 4 查看测验成绩\n");
    printf(" 0 退出\n\n");
    printf("请输入您要进行的操作:");
    scanf("%d",&caozuo);
    if((caozuo!=1)&&(caozuo!=2)&&(caozuo!=3)&&(caozuo!=4)&&(caozuo!=0))
        {
        printf("\n提示:\n输入有误,请重新操作\n\n\n");
        goto loop;
        }
    system("cls");
    switch(caozuo)
    {
        case 1 :
        {
       
            if(tishu==0)
            {
                system("cls");
                printf("请先进行设置!\n按任意键返回主菜单。");
                getchar();
                getchar();
                system("cls");
                goto loop;
               
            }
   
       
            switch(suanfa)
            {
                case 1:plus(tishu,a);break;
           
                case 2:minus(tishu,a);break;
           
                case 3:multiply(tishu,a);break;
           
                case 4:devide(tishu,a);break;
           
                case 5:random(tishu,a);break;
       
            }
            printf("总答题数:%d\t答对%d题\t正确率%f",tishu,ii,ii/tishu);
            getchar();}
            break;
       
    case 2:
    case 3:
    printf("设置:\n");
       
    chongf1:
    printf("\n数据位数(1~3):\n");
    scanf("%d",&weishu);
    if((weishu<1)||(weishu>3))
        {
        printf("超出数据范围!\n");   
        goto chongf1;
        }
        switch(weishu)
            {
            case 1:a=9;break;
            case 2:a=99;break;
            case 3:a=999;break;
            default:;
            }
       
   
   
    chongf2:
    printf("\n测试模式题数:\n");
    scanf("%d",&tishu);
    if(tishu<0)
        {
        printf("题数输入错误!\n");
        goto chongf2;
        }
   
   
    chongf3:
    printf("\n测试模式总分:\n");
    scanf("%d",&zongfen);
    if(zongfen<0)
        {
        printf("总分输入错误!\n");
        goto chongf3;
        }
   
    chongfu4:
   
    printf("\n运算为:1.加法 2.减法 3.乘法 4.除法 5.任意\n");
    scanf("%d",&suanfa);
    if(suanfa<1||suanfa>5)
        {
        printf("运算输入错误");
        goto chongfu4;
        }
       
    printf("========================\n");
    printf("数据位数:%d\n",weishu);
    printf("测试模式题数:%d\n",tishu);
    printf("测试模式总分:%d\n",zongfen);
    switch(suanfa)
    {
        case 1:printf("运算符号:+");break;
        case 2:printf("运算符号:-");break;
        case 3:printf("运算符号:*");break;
        case 4:printf("运算符号:/");break;
        case 5:printf("运算符号:任意");break;
    }
    getchar();
    getchar();
    system("cls");
    goto loop;
   
   
        case 4 :
       
        case 0 :exit(0);
}
}

int plus(int tishu,int a)
{    int hd,da,shu1,shu2,i,ii=0;
                for(i=1;i<=tishu;i++)
                        {
                        shu1=rand()%a;
                        shu2=rand()%a;
                        da=shu1+shu2;
                        printf("%d) %d+%d=",i,shu1,shu2);
                        scanf("%d",&hd);
                        if(hd==da)
                        {
                            printf("√\n\n");
                            ii++;
                        }
                        else printf("×正确答案:%d\n\n",da);
                        }
    return (ii*1.0);
}

int minus(int tishu,int a)
{    int hd,da,shu1,shu2,i,ii=0;
                for(i=1;i<=tishu;i++)
                        {shu1=rand()%a;
                        shu2=rand()%a;
                        da=shu1-shu2;
                        printf("%d) %d-%d=",i,shu1,shu2);
                        scanf("%d",&hd);
                        if(hd==da)
                        {
                            printf("√\n\n");
                            ii++;
                        }
                        else printf("×正确答案:%d\n\n",da);}
    return (ii*1.0);
}

int multiply(int tishu,int a)
{    int hd,da,shu1,shu2,i,ii=0;
                for(i=1;i<=tishu;i++)
                        {
                        shu1=rand()%a;
                        shu2=rand()%a;
                        da=shu1*shu2;
                        printf("%d) %d*%d=",i,shu1,shu2);
                        scanf("%d",&hd);
                        if(hd==da)
                        {
                            printf("√\n\n");
                            ii++;
                        }
                        else printf("×正确答案:%d\n\n",da);}
    return (ii*1.0);
}

int devide(int tishu,int a)
{    int shu1,shu2,i,ii=0;
    int check(int A,int B);
    float hd,da;
                for(i=1;i<=tishu;i++)
                        {loop:
                        shu1=rand()%a;
                        shu2=rand()%a;
                        if(check(shu1,shu2)==-1||shu2==0)
                            goto loop;
                        da=shu1*1.0/shu2;
                        printf("%d) %d/%d=",i,shu1,shu2);
                        scanf("%f",&hd);
                        if(hd==da)
                        {
                            printf("√\n\n");
                            ii++;
                        }
                        else printf("×正确答案:%d\n\n",da);}
    return (ii*1.0);
}

int check(int A,int B)
    {    float temp;
    temp=(float)A/(float)B;
    if(temp*B==(float)A){
        return 1;
    }
    return -1;
}

int random(int tishu,int a)
{    int check(int A,int B);
    int hd,da,shu1,shu2,i,ii=0,b;
    for(i=1;i<=tishu;i++)
    {
    b=rand()%4;
    loop:
    shu1=rand()%a;
    shu2=rand()%a;
    switch(b)
    {
        case 1:
        {da=shu1+shu2;
        printf("%d) %d+%d=",i,shu1,shu2);
        scanf("%d",&hd);
        if(hd==da)
            {printf("√\n\n");
            ii++;}
        else printf("×    正确答案%d\n\n",da);}
        break;
       
       
        case 2:
        {da=shu1-shu2;
        printf("%d) %d-%d=",i,shu1,shu2);
        scanf("%d",&hd);
        if(hd==da)
            printf("√\n\n");
        else printf("×    正确答案%d\n\n",da);}
        break;
       
       
        case 3:
        {da=shu1*shu2;
        printf("%d) %d*%d=",i,shu1,shu2);
        scanf("%d",&hd);
        if(hd==da)
            printf("√\n\n");
        else printf("×    正确答案%d\n\n",da);}
        break;
       
       
        case 4:
        {if(check(shu1,shu2)==-1||shu2==0)
        goto loop;
        da=shu1*1.0/shu2;
        printf("%d) %d/%d=",i,shu1,shu2);
        scanf("%f",&hd);
        if(hd==da)
            {
                printf("√\n\n");
                ii++;
            }
        else printf("×正确答案:%d\n\n",da);}
       
    }
    }
        return(ii*1.0);
}

搜索更多相关主题的帖子: 课程 
2010-07-06 01:01
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:10 
那你就看看计算答案部分有没有出错。
或者是答对题目的数目的计数器有没有问题?

南国利剑
2010-07-06 03:45
Hong91
Rank: 2
等 级:论坛游民
帖 子:28
专家分:19
注 册:2010-3-27
收藏
得分:0 
回复 2楼 南国利剑
计算答案全部正确。就是答对题目统计出错
2010-07-06 07:34
快速回复:大家来看看我的编程里的问题吧
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020776 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved