主题:问:输出结果是什么,为什么,谢谢
wangxsw
[专家分:20] 发布于 2008-04-23 21:17:00
#include<stdio.h>
main()
{
int a[20],c[5],i,n=0,x;
scanf("%d",&x);
while(x!=-1)
{
if (x>=0&&x<=4)
a[n++]=x;
scanf("%d",&x); }
for(i=0;i<5;i++)
c[i]=0;
for(i=0;i<n;i++)
{
c[a[i]]++;
}
for(i=0;i<5;i++)
{
printf("%4d",c[i]);
printf("\n");
}
}
回复列表 (共10个回复)
沙发
黄磊huanglei [专家分:490] 发布于 2008-04-24 17:18:00
貌似是统计你输入的数x在0到4之间的个数,用c[i]打印,不过你的程序有问题的,while不知在哪里结束,应该是在打印的那个for之前吧
板凳
shuyan50 [专家分:0] 发布于 2008-04-24 22:24:00
请问一下:
if (x>=0&&x<=4)
a[n++]=x;
scanf("%d",&x);
这段是干嘛的,还有在while中没有控制语句啊,这样不是会循环下去吗?而且还不会报错
4 楼
oyd7141 [专家分:10] 发布于 2008-09-12 10:13:00
int a[20],
while(x!=-1)
{
if (x>=0&&x<=4)
a[n++]=x;
scanf("%d",&x); }
这里会溢出吧????!!!!!而且while的花括号打那么远,好多人没看到呢!
5 楼
oyd7141 [专家分:10] 发布于 2008-09-12 10:56:00
输出结果应该是输入的0到4的个数吧
6 楼
lovon1921 [专家分:0] 发布于 2008-09-12 13:20:00
输出结果应该是输入的0到4的个数吧
7 楼
songkaisk [专家分:0] 发布于 2008-10-09 22:03:00
这个程序是用户输入数字,然后输出是统计输入的数字中0,1,2,3,4的个数。
像5楼说的
if (x>=0&&x<=4)
a[n++]=x;
这里a[]容易溢出,不过程序倒是没什么错。系统在存到a[20]时就停止往a里存数据了,但是这不影响后面c数组的循环,所以结果是对的。
如果输入的没有1到4,那么不管输入多少数字,结果会输出00000,如果输入2个0,3个1,2个2,5个3,4个4,那么结果就是23254.
算法挺奇妙的,楼主想出来的??
8 楼
xjaodong [专家分:20] 发布于 2008-11-16 16:50:00
果然很好玩
9 楼
beifengzhuanyong [专家分:0] 发布于 2009-03-23 16:32:00
统计20个整数中0,1,2,3,4各自出现的次数并依次输出。
问题:
(1)依次输入5个0,5个1,5个2,5个3,紧接着输入-1。结果依次输出5,5,5,5,0
(2)依次输入5个0,5个1,5个2,5个3,然后再输入 4 个4,最后输入-1,结果:5,5,5,5,0
(3)依次输入5个0,5个1,5个2,5个3,然后再输入 5 个4,最后输入-1,结果:6,5,5,5,0
输入24个1,结果:3,20,0,0,0
输入25个1,结果:4,20,0,0,0
这叫一个恐怖啊。
建议:while改用for,控制输入次数以及 n++ 的次数,问题就在 n++ 可能大于 a数组个数。
10 楼
leo622 [专家分:0] 发布于 2009-04-14 21:29:00
做个简单的测试 假如我第一次输入的x就是-1呢?
数组a无法完成初始化
你的程序想做什么?
我来回复