| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6165 人关注过本帖
标题:怎么做到输入Y继续循环,输入N退出循环
只看楼主 加入收藏
zggdsgs
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2015-4-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
怎么做到输入Y继续循环,输入N退出循环
下面的输入N可以退出循环,但是输入任意都能继续执行循环,怎么才能做到输入Y才能继续循环,输入其他都不能?

int Input(SqList &L,int n){
    int i=0;
    char j,a[10];
    while(j!='n'&&j!='N'){   
        printf("\t编号:");   
        scanf("\t%d",&L.elem[n+i].num);   
        printf("\t姓名:");  
        scanf("\t%s",&L.elem[n+i].name);   
        printf("\t年龄:");   
        scanf("\t%s",&L.elem[n+i].age);   
        printf("\t电话号码:");   
        scanf("\t%s",&L.elem[n+i].phone);   
        printf("\t通讯住址:");   
        scanf("\t%s",&L.elem[n+i].adds);   
        printf("\t电子邮箱:");
        scanf("\t%s",&L.elem[n+i].email);   
        gets(a);
        printf("\n\t是否继续添加 (Y/N)");
        scanf("\t%c",&j);
        i++;  
    }
    return(n+i);
}
搜索更多相关主题的帖子: 电话 姓名 
2015-06-21 11:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
想用Y和N,就寫直接代碼檢測Y和N,而不是衹寫N不寫Y。總想省點什麽,就必然要付出(運行不滿意的)代價——上帝很公平的。

授人以渔,不授人以鱼。
2015-06-21 11:37
zggdsgs
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2015-4-6
收藏
得分:0 
回复 2楼 TonyDeng
额,就是不知道怎么检验yn
2015-06-21 12:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你接收輸入的代碼有毛病,判斷的邏輯也有毛病,怎麽教得清楚。

授人以渔,不授人以鱼。
2015-06-21 13:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
別的不說你,光是下面這兩行,你的編譯器沒發出警告和警示,而自己也完全沒有意識,就很難教下去了。
char j,a[10];
     while(j!='n'&&j!='N'){    


還有這種,也不知道在哪學回來的:
scanf("\t%c",&j);

寫了這麽一句scanf(),多寫一句printf("%c",c)檢測一下實際讀到什麽東西,是一種調試意識,這是最應該學會的,但卻居然是絕大多數新手根本不懂的,也不知道現在的老師怎麽教學生的,可能他自己也沒這種意識。寫這麽一句printf()的用意是檢測如此的scanf()是否能夠達到期望的目標,若是過關,則再在代碼把printf()刪掉,這是教你自己調試和學習的訣竅,告訴你這麽一條,已經是塞錢給你了,要不要隨便吧。

[ 本帖最后由 TonyDeng 于 2015-6-21 14:11 编辑 ]

授人以渔,不授人以鱼。
2015-06-21 14:03
jxb8888
Rank: 2
等 级:论坛游民
帖 子:21
专家分:32
注 册:2015-4-28
收藏
得分:10 
scanf("\t%d",&L.elem[n+i].num);  
这个用法应该是:
 scanf("%d",&L.elem[n+i].num);
因为scanf()只认输入的数据,
2015-06-21 14:58
jxb8888
Rank: 2
等 级:论坛游民
帖 子:21
专家分:32
注 册:2015-4-28
收藏
得分:0 
想用Y和N,你应该写一个带返回值的判读函数,
int returninput()
{
char ini;
printf("pls input yes or no ? ");
scanf("%c",ini);
if (ini =='y' ||ini=='Y')
return 1;
if ((ini =='n' ||ini=='N')
return 0;
}
2015-06-21 15:05
jxb8888
Rank: 2
等 级:论坛游民
帖 子:21
专家分:32
注 册:2015-4-28
收藏
得分:0 
好吧,我也是半桶水,我更改一下


#include <stdio.h>

int returninput()
{
    char ini;
    printf("pls input yes or no ?  ");
    scanf("%c",&ini);
   
    if (ini == 'y' || ini =='Y')
    printf("yes!");
   
    if (ini=='n' || ini =='N')
    printf("no!");

}

int main(int argc, char *argv[])
{
   
    returninput();
   
    getch();
    return 0;
}
2015-06-21 15:24
jxb8888
Rank: 2
等 级:论坛游民
帖 子:21
专家分:32
注 册:2015-4-28
收藏
得分:0 
好吧,我也是半桶水,我更改一下


#include <stdio.h>

int returninput()
{
    char ini;
    printf("pls input yes or no ?  ");
    scanf("%c",&ini);
   
    if (ini == 'y' || ini =='Y')
    printf("yes!");
   
    if (ini=='n' || ini =='N')
    printf("no!");

}

int main(int argc, char *argv[])
{
   
    returninput();
   
    getch();
    return 0;
}
2015-06-21 15:26
jxb8888
Rank: 2
等 级:论坛游民
帖 子:21
专家分:32
注 册:2015-4-28
收藏
得分:0 
while(gets(input)=='y' || input[0]!='\0')        /*输入不能为空*/

这个方法更好
2015-06-21 15:36
快速回复:怎么做到输入Y继续循环,输入N退出循环
数据加载中...
 
   



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

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