【发布时间】:2015-03-11 05:38:31
【问题描述】:
这是一个打印 6 个数字然后询问用户是否要继续的简单代码,但在某些时候我的继续标志的值会发生变化。任何想法? do-while 块末尾的 while 是否只接受一个条件?
代码如下:
void x(){
int i = 1, cont = 0;
char flag;
do{
if(cont == 6 && (flag != 'n' || flag != 'N')){
printf("(S/N)");
scanf("%c", &flag);
printf("\n :%c \n", flag);
if(flag == 's' || flag == 'S'){
cont = 0;
printf("\n");
}
}else{
printf("%d, ", i);
i++;
cont++;
}
}while(flag != 'n' || flag != 'N');
}
【问题讨论】:
-
第一次输入
flag后,还要在标准输入缓冲区中输入一个\n字符。这导致了问题 -
你应该测试
scanf的返回值和break是否返回!= 1。