用c语言编程序,要求输入0结束,开头的while有问题吗?为什么是死循环?

#include<stdio.h>intmain(){intm,n,i,j,count;inta[10][10],b[10][10];while(scanf("%d",&... #include<stdio.h>
int main()
{
int m,n,i,j,count;
int a[10][10],b[10][10];
while(scanf("%d",&m)!=0 && m!=EOF)
{
count=0;
scanf("%d",&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&b[i][j]);
a[i][j]+=b[i][j];
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]!=0)
break;
}
if(j==n)
count++;
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[j][i]!=0)
break;
}
if(j==m)
count++;
}
printf("%d\n",count);

}
return 0;
}
展开
 我来答
山和煦答南
2019-07-04 · TA获得超过3.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:984万
展开全部
为什么不是呢?
程序的流程是这样到。getchar()每次读取一个字符,然后putchar()将该字符输出,然后返回值也是显示到那个字符的值,与!字符比较,来作为while循环到条件。
这里前5个字符都使循环成立,所以getchar()继续读,读完putchar()显示出来,然后判断while循环不成立,循环结束。但是!已经显示出来了。如果你输入qwert!abc,那么abc是肯定不会显示出来的。
zyh1141298056
2012-03-31 · TA获得超过1308个赞
知道小有建树答主
回答量:500
采纳率:100%
帮助的人:587万
展开全部
你的m是个整数,而EOF表示的是文件结束,为它定义的值好像是-1.也就是说当你m输入为-1时,它应该就结束了。如果你想以输入0结束并判断是否到了末尾的话,就把你的两个判断换一下:
while(scanf("%d",&m) != EOF && m != 0)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
这名也好起
2012-03-31 · TA获得超过335个赞
知道小有建树答主
回答量:465
采纳率:0%
帮助的人:288万
展开全部
没有个注释怎么看啊 你这要实现什么 这么多循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式