回 帖 发 新 帖 刷新版面

主题:问:输出结果是什么,为什么,谢谢

#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个回复)

沙发

貌似是统计你输入的数x在0到4之间的个数,用c[i]打印,不过你的程序有问题的,while不知在哪里结束,应该是在打印的那个for之前吧

板凳

请问一下:
if (x>=0&&x<=4)
            a[n++]=x;
        scanf("%d",&x);   
这段是干嘛的,还有在while中没有控制语句啊,这样不是会循环下去吗?而且还不会报错

3 楼

不懂,不懂,怎么这么多不懂的地方啊,才发现C++还是什么都不会。

4 楼


int a[20],

  while(x!=-1)
    {
        if (x>=0&&x<=4)
            a[n++]=x;
        scanf("%d",&x);                                 }

这里会溢出吧????!!!!!而且while的花括号打那么远,好多人没看到呢!

5 楼

输出结果应该是输入的0到4的个数吧

6 楼

输出结果应该是输入的0到4的个数吧

7 楼

这个程序是用户输入数字,然后输出是统计输入的数字中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 楼

果然很好玩

9 楼

统计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 楼

做个简单的测试  假如我第一次输入的x就是-1呢?

数组a无法完成初始化

你的程序想做什么?

我来回复

您尚未登录,请登录后再回复。点此登录或注册