| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1153 人关注过本帖
标题:求大神这个程序有个问题不知如何解决。
只看楼主 加入收藏
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
回复 19楼 TonyDeng
void EtoC_infor()
    {

    char b[20];
    int z,x=41;
    int   i;
    system("cls");//清屏
    i = intest();
    printf("【%s】请输入中文意思:",s[i].en);
    scanf("%s",b);
    for(z=0;strcmp(b,s[i].ch)!=0;z=z)
    {printf("抱歉,你答错了。\n");
    printf("【%s】请再次输入中文意思:",s[i].en);
    scanf("%s",b);c=c+1;}
    printf("\n恭喜你,回答正确,加1分!\n\n");d=d+1;
    printf("\n  Enter 2 继续输入  Enter 0 返回主菜单",s[i].en,s[i].ch);
    }
改成这个。
2012-11-20 23:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
scanf("%s",b);

改后运行有什么结果?看看你的操作画面。

[ 本帖最后由 TonyDeng 于 2012-11-20 23:33 编辑 ]

授人以渔,不授人以鱼。
2012-11-20 23:31
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2012-11-20 23:36
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
回复 22楼 TonyDeng
第三次直接不按2,就出现下一个了,每两个出现一次。
2012-11-20 23:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
既然是输入正确,那么每一次这个函数都返回了,问题在调用处,main()那里。很混乱。

授人以渔,不授人以鱼。
2012-11-20 23:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
main()两大块(这种重复往往是错误的根源),正好对应你两次,你跟踪一下这里的流程。

授人以渔,不授人以鱼。
2012-11-20 23:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
与其改你原先的代码,不如重新写一个:

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

#define MAX_CHAR  20    // 最大字符
#define MAX_NUM  100    // 单词的最大个数

struct word
{
   char en[MAX_CHAR];    // 英文形式
   char ch[MAX_CHAR];    //中文形式
};

word s[MAX_NUM] = {
    { "agree", "同意" },
    { "youth", "年轻" }
};

int show_main_menu(void);
void EtoC_infor(void);

int main(void)
{
    int choice;

    do
    {
        choice = show_main_menu();
        switch (choice)
        {
        case 2:
            EtoC_infor();
            break;
        }
    } while (choice != 9);

    return 0;
}

int show_main_menu(void)
{
    int choice;

    system("CLS");
    printf_s("\n");
    printf_s("                                                                         \n");
    printf_s("           ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※    \n");
    printf_s("                                                                         \n");
    printf_s("                              背   单   词  系  统                       \n");
    printf_s("                                                                         \n");
    printf_s("                   1、背诵(中to英)      2、背诵(英to中)                  \n");
    printf_s("                                                                         \n");      
    printf_s("                   3、添加单词信息      4、删除单词信息                  \n");
    printf_s("                                                                         \n");
    printf_s("                   5、修改单词信息      6、显示单词信息                  \n");
    printf_s("                                                                         \n");
    printf_s("                   7、查询成绩          8、查询单词信息                  \n");
    printf_s("                                                                         \n");
    printf_s("                   9、退出                                               \n");
    printf_s("                                                                         \n");
    printf_s("           ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※    \n");
    printf_s("\n");
    printf_s("                    选择您需要的操作序号(1-9),按回车确认:");

    do
    {
        choice = _getch();
    } while ((choice < '1') && (choice > '9'));
    _putch(choice);

    return choice - '0';
}

void EtoC_infor(void)
{
    printf_s("\n\n");
    for (int index = 0; index < 2; ++index)
    {
        system("CLS");
        bool correct = false;
        while (!correct)
        {
            printf_s("【%s】请输入中文意思: ", s[index].en);
            char buffer[MAX_CHAR];
            gets_s(buffer, MAX_CHAR);
            if (strcmp(buffer, s[index].ch) == 0)
            {
                printf_s("\t恭喜你,回答正确,加1分!\n\n");
                correct = true;
            }
            else
            {
                printf_s("\t抱歉,你答错了。\n\n");
            }
        }
        printf_s("\n  Enter 2 继续输入  Enter 0 返回主菜单");
        int choice;
        do
        {
            choice = _getch();
        } while ((choice != '0') && (choice != '2'));
        _putch(choice);
        _putch('\n');
    }
}


上面的代码,如果你的编译器不支持后缀带_s的安全型函数,就把相应的_s删掉,用旧式函数。

授人以渔,不授人以鱼。
2012-11-21 10:12
冰冻零点
Rank: 3Rank: 3
来 自:西安电子科技大学
等 级:论坛游侠
帖 子:81
专家分:136
注 册:2012-9-18
收藏
得分:3 
看看

好好学习,天天向上
2012-11-21 10:21
lwb603569640
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:283
专家分:436
注 册:2012-11-9
收藏
得分:3 
这么简单的程序  还怕外泄    那就不要问咯。。。。郁闷的  楼主

自由、民主、宪政!
2012-11-21 10:23
冰冻零点
Rank: 3Rank: 3
来 自:西安电子科技大学
等 级:论坛游侠
帖 子:81
专家分:136
注 册:2012-9-18
收藏
得分:0 
回复 27楼 TonyDeng
求教,for ( int index = 0 ; index < 2 ; ++index)作用是什么?
另外函数最后的choose作用是什么?

好好学习,天天向上
2012-11-21 11:28
快速回复:求大神这个程序有个问题不知如何解决。
数据加载中...
 
   



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

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