#include<stdio.h>
main ()
{
int i, j=0;
for (i=0; i<3; i++) {
while (j!='y'||j!='n') {
printf("是否还有顾客? 是=y, 否=n\n");
scanf("%d", &j);
}
if (j=='n')
break;
}
}
无法用j来控制退出for结构?请指正
----------------解决方案--------------------------------------------------------
类型错误,修改后如下
#include<stdio.h>
main ()
{
char i, j=0;
for (i=0; i<3; i++) {
while (j!='y'||j!='n') {
printf("是否还有顾客? 是=y, 否=n\n");
scanf("%c", &j);
}
if (j=='n')
break;
}
}
----------------解决方案--------------------------------------------------------
1. main ()不对,应为int main(void)
2. 任何放到循环里面的scanf("%c"....)都值得怀疑
----------------解决方案--------------------------------------------------------
1. main ()不对,应为int main(void)
2. 任何放到循环里面的scanf("%c"....)都值得怀疑
----------------解决方案--------------------------------------------------------
2. 任何放到循环里面的scanf("%c"....)都值得怀疑
这句话何意,实在不知怀疑什么???
----------------解决方案--------------------------------------------------------
1. main ()不对,应为int main(void)
2. 任何放到循环里面的scanf("%c"....)都值得怀疑
1.main()在TC中是正确的,而出学者和书籍中大都用它(TC),因此不应说错;
并且并非只有int main(void)是唯一标准的,因为还有int main(int argc,char **argv)等标准C形式
2.放在循环中的scanf("%c"...)为何值得怀疑,完全可以通过scanf("%c"...)实现多字符读入,比如
char s[200];
int i;
for(i=0;i<200;i++) scanf("%c",&s[i]);
----------------解决方案--------------------------------------------------------
解释一下那两句话:
第一句是说:void foo()和void foo(void)其实是不一样的,建议你看一下我的文章:http://www.xiyoulinux.cn/blog/?p=34
而且,默认返回int类型也是将要被遗弃的特性,你不应该使用。
第二句是说:循环里的scanf("%c"...)经常存在缓冲区的问题,我已经被问过不下10次这种问题了!在win可以简单地用fflush(stdin)解决,或者用"%*c%c"代替"%c",或者setvbuf()。后两个是推荐使用的,因为那是可移植的。
----------------解决方案--------------------------------------------------------
谢谢大家的帮助!
----------------解决方案--------------------------------------------------------