| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 756 人关注过本帖
标题:请教:为什么会循环两次?
只看楼主 加入收藏
zyuce
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2012-11-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
请教:为什么会循环两次?
程序代码:
#include<stdio.h>
char input;
/*函数声明*/
char Menu();
/*主函数*/
int main()
{
    input=Menu();
    return 0;
}
/*主菜单*/
char Menu()
{
    printf("**************************************************************************\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                    欢迎使用成绩管理系统!                  *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("**************************************************************************\n\n");
    printf("                           1.读取/保存文件\n");
    printf("                           2.增加/删除\n");
    printf("                           3.查看成绩\n");
    printf("                           q.退出\n");
    printf("     请选择:");
    scanf("%c",&input);
    if(input!='1'&&input!='2'&&input!='3'&&input!='q')
    {
        printf("输入有误!请重新输入\n");
        input=Menu();
    }
    return(input);
}






图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册
2012-11-25 22:11
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
这个。。。。。。。应该就是这样的吧

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-25 22:20
一个人的孤独
Rank: 2
等 级:论坛游民
帖 子:45
专家分:56
注 册:2012-10-15
收藏
得分:0 
我想是因为
        你那input=menu();里边又包含了一个input=menu();
        所以会一直输出menu菜单,只要你执行了if语句。
2012-11-25 22:22
一个人的孤独
Rank: 2
等 级:论坛游民
帖 子:45
专家分:56
注 册:2012-10-15
收藏
得分:0 
把那input=menu();放到menu外面就只能循环一次了
2012-11-25 22:24
youngdavid
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:698
注 册:2012-9-24
收藏
得分:20 
这是因为你scanf第一次输入一个字符并按回车,字符被赋值给input了,遗留一个回车在缓冲区,下次循环的时候直接读取回车赋值给input并接下来判断输入有误。讲如下语句放在scanf后面吸收缓冲区遗留的回车就可以了。
while(getchar()!='\n')
continue;
2012-11-25 22:40
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
程序代码:
#include<stdio.h>
char input;
/*函数声明*/
char Menu();
/*主函数*/
int main()
{
    input=Menu();
    return 0;
}
/*主菜单*/
char Menu()
{
    printf("**************************************************************************\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                    欢迎使用成绩管理系统!                  *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("**************************************************************************\n\n");
    printf("                           1.读取/保存文件\n");
    printf("                           2.增加/删除\n");
    printf("                           3.查看成绩\n");
    printf("                           q.退出\n");
    printf("     请选择:");
    scanf("%c",&input);
    while(input!='1'&&input!='2'&&input!='3'&&input!='q')//这里用循环啊亲,不是if
    {
        printf("输入有误!请重新输入\n");
        scanf("%c",&input);
        Menu();
    }
    

   
    return(input);
}








重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-25 22:55
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
就因为没有直接回答,我的分~~~~~~

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-25 22:57
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
收藏
得分:0 
求积分!
2012-11-25 22:58
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用一个孩子在2012-11-25 22:57:15的发言:

就因为没有直接回答,我的分~~~~~~
那么在意分干嘛

DO IT YOURSELF !
2012-11-25 22:58
fu2751653
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:38
专家分:100
注 册:2011-4-11
收藏
得分:0 
看看 。。。。。。。。
2012-11-25 23:01
快速回复:请教:为什么会循环两次?
数据加载中...
 
   



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

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