注册 登录
编程论坛 C++教室

虽是小程序,但很能锻炼人

壮志在我胸 发布于 2009-09-24 17:47, 1346 次点击
#include"stdio.h"

void main()
{
    int flag=1;
    char c,*p,a[100];
    p=a;
    while(flag==1)
    {
        printf("请输入N个整数");
        gets(p);
        puts(p);
        puts("Do you want to continue ?N/Y\n");
        c=getchar();
        if(c=='n'||c=='N') flag=0;
        else
            printf("please continue");
    }
        
}
这个小程序的的目的是如果输入N,就结束程序(这个可以做到),如果输入Y,想执行“please continue,请输入N个整数”然后可以继续输入数据,可结果执行却是“please continue,请输入N个整数,Do you want to continue ?N/Y”全出来啦!
11 回复
#2
壮志在我胸2009-09-24 21:25
没人会吗?????会的就大方点吗,传授传授,我会感激不尽,不会的加我好友,共同探讨探讨!!!
#3
shl3052009-09-24 21:55
c=getchar();
只读了一个字符,当你输入Y时后面还跟着一个回车符号,因此Y读给了c但是回车还在输入中,故下一次
调用gets()时直接读到了回车,也就是结束符号,因此这时p已经读到东西了,只不过内容是空的,什么也没有,但
只要读到了,就不会再等待你的输入了。
在 c=getchar();后面在加一条getchar()语句,将回车符读走就可以了
#4
壮志在我胸2009-09-24 22:25
太感谢了!!!能加你好友吗?以后有问题共同探讨,哈哈
#5
智奇CC2009-09-25 14:28
貌似这是C语言吧的程序?这里不是C++教室吗??搞得我学C++的搞混了,,,
#6
pywepe2009-09-25 17:18
回复 楼主 壮志在我胸
*p
很危险
长度好像是8
#7
newCpp2009-09-27 05:17
用while循环应该可以的吧
#8
小兰012009-09-29 11:20
把else printf()那句去掉,用goto 语句,
 
#include"stdio.h"
 
void main()
{
    int flag=1;
    char c,*p,a[100];
    p=a;
    a:  while(flag==1)
    {
        printf("请输入N个整数");
        gets(p);
        puts(p);
        puts("Do you want to continue ?N/Y\n");
        c=getchar();
        if(c=='n'||c=='N') flag=0;
        goto: a    }
         
}
或者
#include"stdio.h"
 
void main()
{
    int flag=1;
    char c,*p,a[100];
    p=a;
    while(flag==1)
    {
        printf("请输入N个整数");
        gets(p);
        puts(p);
        puts("Do you want to continue ?N/Y\n");
        c=getchar();
        if(c=='n'||c=='N') flag=0;
         continue;//break;
    }
         
}

#9
jolixiaoai2009-10-02 14:53
5楼的说对了,这确实是C的程序……貌似楼主不止一次走错教室了……
#10
壮志在我胸2009-10-10 12:50
回复 9楼 jolixiaoai
谢谢你的提醒,要不然我还不知道呢
#11
pywepe2009-10-11 20:19
以下是引用小兰01在2009-9-29 11:20:20的发言:

把else printf()那句去掉,用goto 语句,
 
#include"stdio.h"
 
void main()
{
    int flag=1;
    char c,*p,a[100];
    p=a;
    a:  while(flag==1)
    {
        printf("请输入N个整数");
      ...
坚决反对goto
#12
songxj322009-10-28 13:12
学习了
1