当前位置: 代码迷 >> C语言 >> [求助]有关控制退出结构的问题
  详细解决方案

[求助]有关控制退出结构的问题

热度:134   发布时间:2007-07-13 09:15:04.0
[求助]有关控制退出结构的问题

#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结构?请指正

搜索更多相关的解决方案: 结构  顾客  int  break  

----------------解决方案--------------------------------------------------------

类型错误,修改后如下
#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"....)都值得怀疑

----------------解决方案--------------------------------------------------------
以下是引用yohji在2007-7-14 19:51:01的发言:
1. main ()不对,应为int main(void)
2. 任何放到循环里面的scanf("%c"....)都值得怀疑
这人的话哎!!!

----------------解决方案--------------------------------------------------------
2. 任何放到循环里面的scanf("%c"....)都值得怀疑

这句话何意,实在不知怀疑什么???

----------------解决方案--------------------------------------------------------
以下是引用yohji在2007-7-14 19:51:01的发言:
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()。后两个是推荐使用的,因为那是可移植的。

----------------解决方案--------------------------------------------------------
谢谢大家的帮助!
----------------解决方案--------------------------------------------------------
  相关解决方案