| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 649 人关注过本帖
标题:捉急啊,麻烦哪位大神给看看
取消只看楼主 加入收藏
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
结帖率:100%
收藏
已结贴  问题点数:13 回复次数:5 
捉急啊,麻烦哪位大神给看看
课程设计《背单词》的一个小函数,功能是实现单词的测试,并最后给出得分
结构体是
typedef struct
{
    char en[40];
    char ch1[40];
    char ch2[40];
}Word;
Word wo[100];



void test(Word wo[],int n)
{
    int m,i,sum=0,s=0;
    char signs[40];
    printf("\n\t┏━━━━━━━━┓");
    printf("\n\t┃   测试的方式   ┃");
    printf("\n\t┃   1.英译汉     ┃");
    printf("\n\t┃   2.汉译英     ┃");
    printf("\n\t┗━━━━━━━━┛");
    printf("\t\t 请选择测试的方式");
    scanf("%d",&m);
    system("cls");
    if(m==1)
    {
        for(i=0;i<n;i++)  可以肯定是最后一次循环结束出的错,但是不知道错在那
        {
            printf("\n\t单词为%s\n\t其汉语意思为???(只写一个意思即可得分)",wo[i].en);
            scanf("%s",signs);
            if((strcmp(wo[i].ch1,signs)==0)||(strcmp(wo[i].ch2,signs)==0))
            {
                printf("\n\t好厉害!!!!!\n\n");
                s=s+1;
            }
        }
        sum=(s/n)*100;
        printf("\n\t\t您的最后得分是   %f",sum);
    }
    if(m==2)
    {
        for(i=0;i<n;i++)
        {
            printf("单词的汉语意思为%s %s则该单词是???",wo[i].ch1,wo[i].ch2);
            scanf("%s",signs);
            if(strcmp(wo[i].en,signs)==0)
            {
                printf("\n\t好厉害!!!!!\n\n");
                s=s+1;
            }
        }
        sum=(s/n)*100;
        printf("\n\t\t您的最后得分是   %f",sum);
    }
}
搜索更多相关主题的帖子: 英译汉 背单词 结构体 Word 课程 
2013-07-20 14:44
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:0 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct
{
    char en[40];
    char ch1[40];
    char ch2[40];
}Word;
Word wo[100];
        
int meau()
{
        char c;                 
        do{
        system("cls");
        printf("\t\t\t  *******背单词******* \n");                              
        printf("\t\t\t┏━━━━━━━━━━┓ \n");                  
        printf("\t\t\t┃    1. 单词添加     ┃ \n");
        printf("\t\t\t┃    2. 单词浏览     ┃ \n");
        printf("\t\t\t┃    3. 单词测试     ┃ \n");
        printf("\t\t\t┃    4. 单词删除     ┃ \n");
        printf("\t\t\t┃    5. 单词另存     ┃ \n");
        printf("\t\t\t┃    0. 退出程序     ┃ \n");
        printf("\t\t\t┃                    ┃ \n");
        printf("\t\t\t┗━━━━━━━━━━┛ \n");        
        printf("\t\t请您选择想要运行的功能\n\t\t提示:\n\t\t\t请输入数字(0-3):\n\n\t\t选择实现功能:");
        scanf("%c",&c);
        }while(c<'0'||c>'5');
        return(c-'0');
}
int add(Word wo[],int n)
{
    char signs[10];
    int i=0;
    system("cls");
    printf("\n\n\n\n\n\n\t\t请添加你认为很重要但是不怎么熟悉的单词");
    do
    {
        printf("\n\n\t请添加第%d个单词 ",n+i+1);
        scanf("%s",wo[n+i].en);
        printf("\t请输入该单词的第一个汉语意思   ");
        scanf("%s",wo[n+i].ch1);
        printf("\t请输入该单词的第二个汉语意思   ");
        scanf("%s",wo[n+i].ch2);
        i++;
        printf("\n\n\t是否继续添加??\n\t提示\n\t输入no不继续,其他单词继续");
        scanf("%s",signs);
    }while(strcmp(signs,"no")!=0);
    return (n+i);
}
void test(Word wo[],int n)
{
    printf("\n\t\t此次测试是百分制,大侠多多努力");
    int m,i,sum=0,s=0;
    char signs[40];
    printf("\n\t┏━━━━━━━━┓");
    printf("\n\t┃   测试的方式   ┃");
    printf("\n\t┃   1.英译汉     ┃");
    printf("\n\t┃   2.汉译英     ┃");
    printf("\n\t┗━━━━━━━━┛");
    printf("\t\t 请选择测试的方式");
    scanf("%d",&m);
    system("cls");
    if(m==1)
    {
        for(i=0;i<n;i++)
        {
            printf("\n\t单词为%s\n\t其汉语意思为???(只写一个意思即得分)",wo[i].en);
            scanf("%s",signs);
            if((strcmp(wo[i].ch1,signs)==0)||(strcmp(wo[i].ch2,signs)==0))
            {
                printf("\n\t好厉害!!!!!\n\n");
                s=s+1;
            }
        }
        sum=(s/n)*100;
        printf("\n\t\t您的最后得分是   %f",sum);
    }
    if(m==2)
    {
        for(i=0;i<n;i++)
        {
            printf("单词的汉语意思为%s %s则该单词是???",wo[i].ch1,wo[i].ch2);
            scanf("%s",signs);
            if(strcmp(wo[i].en,signs)==0)
            {
                printf("\n\t好厉害!!!!!\n\n");
                s=s+1;
            }
        }
        sum=(s/n)*100;
        printf("\n\t\t您的最后得分是   %f",sum);
    }
}

void look(Word wo[],int n)
{
    int i;

    printf("\n┏━━━━━━━┳━━━━━━━━┳━━━━━━┓");
    printf("\n┃     单词         汉语意思1      汉语意思2┃");
    printf("\n┗━━━━━━━┻━━━━━━━━┻━━━━━━┛");
    for(i=0;i<n;i++)
    {   
        printf("\n  %s\t\t\t%s\t\t%s",wo[i].en,wo[i].ch1,wo[i].ch2);
        if(i%3==0)
            printf("\n━━━━━━━━━━━━━━━━━━━━━━━");
    }
    printf("\n┗━━━━━━━━━━━━━━━━━━━━━━━┛");
}
int Dele(Word wo[],int n)
{
    int i,j;
    char signs[30];
    printf("\n\t请输入想要斩尽,不想要再见到的单词\n");
    scanf("%s",signs);
    for (i=0;i<n;i++)
    {
        if(strcmp(wo[i].en,signs)==0)
        {
            for(j=i;j<n-1;j++)
            {
                strcpy(wo[j].en,wo[j].en);
                strcpy(wo[j].ch1,wo[j].ch1);
                strcpy(wo[j].ch2,wo[j].ch2);
            }
            break;
        }
        else
            if(i==(n-1))
                printf("\n\t单词库内无此单词\n");
    }
    return (n-1);
}

void save(Word wo[],int n)
{
    int i=0;
    FILE *fp;                                            
    char filename[20];                                                            
    printf("\n\t\t文件名输入提示:\n\t\t尽量在文件名的最后加后缀,决定文件的格式\n\t请输入所保存的文件名:");
    scanf("\t%s",filename);
    if((fp=fopen(filename,"w"))==NULL)                  
    {
        printf("\t无法打开文件\n");
        system("pause");
        return;
    }
    fprintf(fp,"*****************单词本********************\n");
    fprintf(fp," 单词          汉语意思1          汉语意思2  \n");
    fprintf(fp,"------------------------------------------------------\n");
    while(i<n)
    {
    fprintf(fp,"\n\t%s\t\t%s\t\t%s",wo[i].en,wo[i].ch1,wo[i].ch2);
        i++;
    }
    fprintf(fp,"----------------------------------------------------\n");
    fprintf(fp,"*********************共有%d条记录*********************\n",n);
    fclose(fp);                                         
    printf("保存成功!\n");
}

void main()                                       
{               
    int  n=0;
    printf("\n\n\n\n\n\n\n\n\t\t\t  欢迎使背单词程序\n\n\n\n\n\t\t\t 希望大侠此次多多斩尽与单词间的纠纷\n\n\n\n\n\n\n\n\n");
    system("pause");
    for(;;)                                   
    {
        switch(meau())
        {
case 1:
        printf("\n\t单词添加\n");                        
        n=add(wo,n);
        break;
case 2:
        printf("\n\t\t\t 单词浏览\n");                     
        look(wo,n);
        system("pause");
        break;

case 3:
        printf("\n\t单词测试\n");
        test(wo,n);                                 
        printf("\t");
        system("pause");
        break;
case 4:
       printf("\n\t单词删除\n");
        n=Dele(wo,n);
       printf("\t");
       break;

case 5:
       printf("\n\t单词另存");
       save(wo,n);
       printf("\t");
       break;
case 0:
        printf("\n\t\t谢谢使用,再见!\n");                        
        printf("\n\t\t");
        system("pause");
        exit(0);
        }
    }
}

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-07-20 14:53
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:0 
调试 那个单词测试的功能

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-07-20 14:54
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:0 
以下是引用love云彩在2013-7-20 15:21:37的发言:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct
{
    char en[40];
    char ch1[40];
    char ch2[40];
}Word;
Word wo[100];
      

int meau()
{
        char c;               

        do{
        system("cls");
        printf("\t\t\t  *******背单词******* \n");                             

        printf("\t\t\t┏━━━━━━━━━━┓ \n");                 

        printf("\t\t\t┃    1. 单词添加     ┃ \n");
        printf("\t\t\t┃    2. 单词浏览     ┃ \n");
        printf("\t\t\t┃    3. 单词测试     ┃ \n");
        printf("\t\t\t┃    4. 单词删除     ┃ \n");
        printf("\t\t\t┃    5. 单词另存     ┃ \n");
        printf("\t\t\t┃    0. 退出程序     ┃ \n");
        printf("\t\t\t┃                    ┃ \n");
        printf("\t\t\t┗━━━━━━━━━━┛ \n");      

        printf("\t\t请您选择想要运行的功能\n\t\t提示:\n\t\t\t请输入数字(0-3):\n\n\t\t选择实现功能:");
        scanf("%c",&c);
        }while(c<'0'||c>'5');
        return(c-'0');
}
int add(Word wo[],int n)
{
    char signs[10];
    int i=0;
    system("cls");
    printf("\n\n\n\n\n\n\t\t请添加你认为很重要但是不怎么熟悉的单词");
    do
    {
        printf("\n\n\t请添加第%d个单词 ",n+i+1);
        scanf("%s",wo[n+i].en);
        printf("\t请输入该单词的第一个汉语意思   ");
        scanf("%s",wo[n+i].ch1);
        printf("\t请输入该单词的第二个汉语意思   ");
        scanf("%s",wo[n+i].ch2);
        i++;
        printf("\n\n\t是否继续添加??\n\t提示\n\t输入no不继续,其他单词继续");
        scanf("%s",signs);
    }while(strcmp(signs,"no")!=0);
    return (n+i);
}
void test(Word wo[],int n)
{
    printf("\n\t\t此次测试是百分制,大侠多多努力");
    int m,i,sum=0,s=0;
    char signs[40];
    printf("\n\t┏━━━━━━━━┓");
    printf("\n\t┃   测试的方式   ┃");
    printf("\n\t┃   1.英译汉     ┃");
    printf("\n\t┃   2.汉译英     ┃");
    printf("\n\t┗━━━━━━━━┛");
    printf("\t\t 请选择测试的方式");
    scanf("%d",&m);
    system("cls");
    if(m==1)
    {
        for(i=0;i<n;i++)
        {
            printf("\n\t单词为%s\n\t其汉语意思为???(只写一个意思即得分)",wo.en);
            scanf("%s",signs);
            if((strcmp(wo.ch1,signs)==0)||(strcmp(wo.ch2,signs)==0))
            {
                printf("\n\t好厉害!!!!!\n\n");
                s=s+1;
            }
        }
        sum=(s/n)*100;
        printf("\n\t\t您的最后得分是   %f",sum);
    }
    if(m==2)
    {
        for(i=0;i<n;i++)
        {
            printf("单词的汉语意思为%s %s则该单词是???",wo.ch1,wo.ch2);
            scanf("%s",signs);
            if(strcmp(wo.en,signs)==0)
            {
                printf("\n\t好厉害!!!!!\n\n");
                s=s+1;
            }
        }
        sum=(s/n)*100;
        printf("\n\t\t您的最后得分是   %f",sum);
    }
}

void look(Word wo[],int n)
{
    int i;

    printf("\n┏━━━━━━━┳━━━━━━━━┳━━━━━━┓");
    printf("\n┃     单词         汉语意思1      汉语意思2┃");
    printf("\n┗━━━━━━━┻━━━━━━━━┻━━━━━━┛");
    for(i=0;i<n;i++)
    {  

        printf("\n  %s\t\t\t%s\t\t%s",wo.en,wo.ch1,wo.ch2);
        if(i%3==0)
            printf("\n━━━━━━━━━━━━━━━━━━━━━━━");
    }
    printf("\n┗━━━━━━━━━━━━━━━━━━━━━━━┛");
}
int Dele(Word wo[],int n)
{
    int i,j;
    char signs[30];
    printf("\n\t请输入想要斩尽,不想要再见到的单词\n");
    scanf("%s",signs);
    for (i=0;i<n;i++)
    {
        if(strcmp(wo.en,signs)==0)
        {
            for(j=i;j<n-1;j++)
            {
                strcpy(wo[j].en,wo[j].en);
                strcpy(wo[j].ch1,wo[j].ch1);
                strcpy(wo[j].ch2,wo[j].ch2);
            }
            break;
        }
        else
            if(i==(n-1))
                printf("\n\t单词库内无此单词\n");
    }
    return (n-1);
}

void save(Word wo[],int n)
{
    int i=0;
    FILE *fp;                                          

    char filename[20];                                                           

    printf("\n\t\t文件名输入提示:\n\t\t尽量在文件名的最后加后缀,决定文件的格式\n\t请输入所保存的文件名:");
    scanf("\t%s",filename);
    if((fp=fopen(filename,"w"))==NULL)                 

    {
        printf("\t无法打开文件\n");
        system("pause");
        return;
    }
    fprintf(fp,"*****************单词本********************\n");
    fprintf(fp," 单词          汉语意思1          汉语意思2  \n");
    fprintf(fp,"------------------------------------------------------\n");
    while(i<n)
    {
    fprintf(fp,"\n\t%s\t\t%s\t\t%s",wo.en,wo.ch1,wo.ch2);
        i++;
    }
    fprintf(fp,"----------------------------------------------------\n");
    fprintf(fp,"*********************共有%d条记录*********************\n",n);
    fclose(fp);                                       

    printf("保存成功!\n");
}

void main()                                      

{              

    int  n=0;
    printf("\n\n\n\n\n\n\n\n\t\t\t  欢迎使背单词程序\n\n\n\n\n\t\t\t 希望大侠此次多多斩尽与单词间的纠纷\n\n\n\n\n\n\n\n\n");
        switch(meau())
        {
case 1:
        printf("\n\t单词添加\n");                       

        n=add(wo,n);
        break;
case 2:
        printf("\n\t\t\t 单词浏览\n");                    

        look(wo,n);
        system("pause");
        break;

case 3:
        printf("\n\t单词测试\n");
        test(wo,n);                                

        printf("\t");
        system("pause");
        break;
case 4:
       printf("\n\t单词删除\n");
        n=Dele(wo,n);
       printf("\t");
       break;

case 5:
       printf("\n\t单词另存");
       save(wo,n);
       printf("\t");
       break;
case 0:
        printf("\n\t\t谢谢使用,再见!\n");                       

        printf("\n\t\t");
        system("pause");
        exit(0);
        }
   

}
//我只是在主函数里面帮你删除了for循环,然后可以进入主界面,我先是测试了单词添加功能,发现在输入单词的意思之后输入no退出,结果整个程序都退出了,主要是你没有设置在添加单词信息完毕后回到主界面的menu()函数,不然你怎么选择测试单词这个功能来测试?还有那个test()单词测试函数,函数标头里面的int n,n这个参数是表示输入的单词个数吧,这个n的具体数值怎么来的?难不成你是想通过add()函数的返回值传送给test()里的参数n?如果是的话,那这样写n=add(Word wo[],int n)//这里的n是指test函数里面的参数n;
 //我也只是大概调试了一番,还有其他的出错,比如说虽然程序能正确运行,但是一到了小模块的功能实现的时候,就诸多问题了,

这样改完后就不能实现菜单的反复利用了,至于n的问题嘛,其实我原想的是添加一个可以读入文件的函数,这不是还没有来得及加吗,所以我是想先执行添加功能后再执行以后的功能,主要是调试单词测试功能时出错了,你再用我一开始的代码调调,看看

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-07-20 15:31
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:0 
如果我想加上一个可以读入文件的函数,怎么加

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-07-20 16:32
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:0 
还有就是测试时我想让单词随机出现,可能实现吗??????

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-07-20 16:44
快速回复:捉急啊,麻烦哪位大神给看看
数据加载中...
 
   



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

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