| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 383 人关注过本帖
标题:为什么while没有按照预定的意思去执行,请各位帮忙回答一下,谢谢!
只看楼主 加入收藏
张敏樱木花道
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:137
注 册:2011-3-26
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:9 
为什么while没有按照预定的意思去执行,请各位帮忙回答一下,谢谢!
#include<stdio.h> /*这只是部分代码*/
main()
  {
    int k,yes=1;
    char ch;
    struct link *head,*newnum;
    head=creat();
    while(yes)/*为什么while没有按照指定的意思去执行*/
    {
        printf("please input COMEIN number: ");
        scanf("%d",&k);
        newnum=(struct link*)malloc(sizeof(struct link));
        newnum->data=k;
        newnum->next=NULL;
        head=comein(head,newnum);
        printf("do you want to continue?(Y/N)\n");
        scanf("%c",&ch);
        if(ch=='y'||ch=='Y') yes=1;
        else yes=0;/*这段代码感觉没起作用*/
    }
    output(head);
    getch();
  }
以上只是程序的部分代码。问题是这样的。我想用creat()函数创建一个空链表,然后用comein()函数尽心插入。目标是进行重复插入,所以我用了一个while循环来达到目的,可是。运行后发现scanf("%c",&ch);
                if(ch=='y'||ch=='Y') yes=1;
                   else yes=0;
这串代码根本不起作用,直接跳出了while循环,执行了output()函数。但程序输出了 do you want to continue?(Y/N)\n",我按y后无直接退出程序。
请大家帮忙解释一下,小弟万分感激!谢谢……
搜索更多相关主题的帖子: please include continue 预定 
2011-03-30 15:21
njkido
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:224
专家分:1184
注 册:2011-3-8
收藏
得分:5 
试试这个

scanf("%c",&ch);
fflush( stdin );//add
2011-03-30 15:41
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:5 
try:
程序代码:
while(1) {
。。。
。。。
printf("do you want to continue?(Y/N)\n");
ch=getchar();
if(ch!='Y') { continue; }else{ break; }
}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-30 16:38
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:5 
跟输入流有关,建议用fflush(stdin);

我的地盘
2011-03-30 16:59
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
或者这样试一试
                scanf ("%c",&ch);
                getchar();
                if(ch=='Y'||ch=='y') { continue; }else{ break;}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-30 17:03
张敏樱木花道
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:137
注 册:2011-3-26
收藏
得分:0 
回复 5楼 ansic
我试过了,你说的方法还是不行。
2011-03-30 22:43
张敏樱木花道
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:137
注 册:2011-3-26
收藏
得分:0 
回复 3楼 ansic
还是不行啊……
2011-03-30 22:45
张敏樱木花道
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:137
注 册:2011-3-26
收藏
得分:0 
回复 2楼 njkido
试过了,还是不行……
2011-03-30 22:46
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:0 
如果还是不行的话,把你源代码都贴出来看看

我的地盘
2011-04-02 18:10
dengjinbao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:64
专家分:119
注 册:2011-3-22
收藏
得分:0 
while(yes==1)//你这里写成yes根本不能判断 所以要这么改
    {
        printf("please input COMEIN number: ");
        scanf("%d",&k);
        newnum=(struct link*)malloc(sizeof(struct link));
        newnum->data=k;
        newnum->next=NULL;
        head=comein(head,newnum);
        printf("do you want to continue?(Y/N)\n");
        scanf("%c",&ch);
        if(ch=='y'||ch=='Y') yes=1;
        else yes=0;/*这段代码感觉没起作用*/
    }
2011-04-02 18:24
快速回复:为什么while没有按照预定的意思去执行,请各位帮忙回答一下,谢谢!
数据加载中...
 
   



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

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