注册 登录
编程论坛 C语言论坛

请问这个程序错在哪里?十分感谢w

Anado 发布于 2019-12-30 15:48, 2189 次点击
#include<stdio.h>
int main()
{
//从键盘输入若干个整数(数据个数应该小于50),用-1作为输入结束的标志。统计其值分别是0、1、2、3、4的个数。
//0:个数
//1:个数
//2:个数
//3:个数
//4:个数
    int a[50],i,c0=0,c1=0,c2=0,c3=0,c4=0;
    for(i=0;i<50;i++)
    {
    scanf("%d",&a[i]);
    if(a[i]=-1)
    break;
    }
    for(i=0;a[i]!=-1;i++)
    {
        if(a[i]==0)
        c0++;
        else if(a[i]==1)
        c1++;
        else if(a[i]==2)
        c2++;
        else if(a[i]==3)
        c3++;
        else if(a[i]==4)
        c4++;
    }
    printf("0:%d\n1:%d\n2:%d\n3:%d\n4:%d\n",c0,c1,c2,c3,c4);
}
5 回复
#2
forever742019-12-31 09:38
=
==
#3
sunnyshare2019-12-31 16:33
if(a[i]=-1)  
 if(a[i] == -1)
#4
zym20132019-12-31 23:34
第15行不应该用break;
改用continue;
跳过本次循环
break是用来跳出全部循环的。
#5
qjw502020-01-09 12:11
#include<stdio.h>
int main()
{
//从键盘输入若干个整数(数据个数应该小于50),用-1作为输入结束的标志。统计其值分别是0、1、2、3、4的个数。
//0:个数
//1:个数
//2:个数
//3:个数
//4:个数
    int a[50],i,c0=0,c1=0,c2=0,c3=0,c4=0,x;

    for(i=0;i<50;i++)
    {
    scanf("%d",&a[i]);

    if(a[i]!=-1)
    {
         x=a[i];
         if(x==0)
             c0++;        
         else if(x==1)
           c1++;   
         else if(x==2)
           c2++;
         else if(x==3)
         c3++;
         else if(x==4)
         c4++;
        
        
        // printf("C0:%dnC1:%dnC2:%dnC3:%dnC4:%dn",c0,c1,c2,c3,c4);

      
    }

    else
    {
        printf("输入-1即将退出n");
        break;
    }
    }

     printf("输入已经达到上限50次n");
     printf("C0:%dnC1:%dnC2:%dnC3:%dnC4:%dn",c0,c1,c2,c3,c4);
}


看下这个程序个人测试已经实现你需要的功能,也是刚学
#6
lijingui20102020-01-29 18:39
if(a[i]=-1)
    break;

改为
if(a[i] == -1)
    break;
1