主题:简单程序循环有问题
10th
[专家分:0] 发布于 2009-03-09 21:58:00
我是新手,用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个回复)
沙发
ChRise [专家分:50] 发布于 2009-03-09 23:04:00
用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;
}
}
板凳
10th [专家分:0] 发布于 2009-03-10 08:32:00
谢谢~~~
但我又有个疑问
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 楼
10th [专家分:0] 发布于 2009-03-15 11:57:00
先不管上面那个问题
原来只要改为输入字符串就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 楼
stjay [专家分:0] 发布于 2009-03-18 15:04:00
char c;
...
scanf("%c",&c);
改为
char c;
...
c=getch();
我来回复