回 帖 发 新 帖 刷新版面

主题:简单程序循环有问题

我是新手,用vc++6来学习C语言

大家看看这是什么问题? 
为何不能直接跳出循环?还要再循环一次。。。 
#include<stdio.h> 
void main() 

int i=1,j; 
char c; 
while(i==1) 

printf("first step\n"); 
scanf("%d",&j); 
printf("\n"); 
printf("Try again (Y/N)?\n"); 
scanf("%c",&c); 
printf("\n"); 
if(c=='N'||c=='n') 
i=0; 




如果不用字符来判断的话改为int c; 
最后哪里用if(c==1)的话就可以了
这是为何? 

回复列表 (共4个回复)

沙发


用VC++6.0编译C程序时,定义了一个字符型变量后,运行到scanf("%c",&c);时,通过调试工具可以看出c已经有了一个值。可改成下面的程序
#include<stdio.h> 
#include <string.h>
void main() 

    int i=1,j; 
    char c[10];
    while(i==1) 
    { 
        printf("first step\n"); 
        scanf("%d",&j); 
        printf("\n"); 
        printf("Try again (Y/N)?\n"); 
        memset(c,0,10);            
        scanf("%s",c); 
        if (c[1] != '\0')
        {
            c[0] = 'e';
        }
        printf("\n"); 
        if(c[0]=='N'||c[0]=='n') 
            i=0; 
    } 

板凳


谢谢~~~
但我又有个疑问
if (c[1] != '\0')
        {
            c[0] = 'e';
        }
为何要加这个??(我是新手,是在不懂为何要把e[0]='e')
如果我打NO的话又要循环的~~~

还有如果我添加打印出c的话为何又不能循环了??好奇怪。。。

#include<stdio.h> 
#include <string.h>
void main() 

    int i=1,j; 
    char c[10];
    while(i==1) 
    { 
        printf("first step\n"); 
        scanf("%d",&j); 
        printf("\n"); 
        printf("Try again (Y/N)?\n"); 
        memset(c,0,10);
        for(i=0;i<=8;i++)
            printf("%d",c);
        scanf("%s",c);
        if (c[1] != '\0')
        {
            c[0] = 'e';
        }
        printf("\n"); 
        if(c[0]=='N'||c[0]=='n') 
            i=0; 
    } 


这样按了y后不能循环
如果只是printf("%d\n",c);
或者printf("%s\n",c);的话都没问题

3 楼

先不管上面那个问题
原来只要改为输入字符串就OK了,虽然还不知道为何输入单个字符会有错误
#include<stdio.h> 
void main() 

int i=1,j; 
char c; 
while(i==1) 

printf("first step\n"); 
scanf("%d",&j); 
printf("\n"); 
printf("Try again (Y/N)?\n"); 
scanf("%s",&c); 
if(c=='N'||c=='n') 
i=0; 


4 楼

char c;
...
scanf("%c",&c);
改为
char c;
...
c=getch();

我来回复

您尚未登录,请登录后再回复。点此登录或注册