哪位大神帮我看一下这个程序哪里错了? C语言问题,输入一个整数,输出0-9各数字在该整数中出现的次数

2024-11-22 19:59:51
推荐回答(5个)
回答1:

您的程序问题比较多。
#include
void main()
{
int a=0;b=0;c=o;d=0;e=0;f=0;g=0;h=0;i=0;j=0;k=0; // 变量声明之间要用逗号,非分号;
int figure[a]; //声明了一个空数组,后面scanf的时候会出错
scanf("%d",&a);
for(i=0;i scanf("%d",&figure[i]); // 要真想这样声明,需要用new声明一个动态数组
switch(fighre[i])
{
case '0':++a;break;
case '1':++b;break;
case '2':++c;break;
case '3':++d;break;
case '4':++e;break;
case '5':++f;break;
case '6':++g;break;
case '7':++h;break;
case '8':++i;break;
case '9':++j;break;
default:++k;break;
} //上面的程序不能实现你的功能。
printf("0=%d\n1=%d\n2=%d\n3=%d\n4=%d\n5=%d\n6=%d\n7=%d\n8=%d\n9=%d\n",a,b,c,d,e,f,g,h,i,j);
}

我写了一个,你看一下:
#include
#include
int main()
{
int data[10], i;
for(i=0;i < 10;i++)
data[i] = 0; //data[i]存i出现了多少次,如data[0]记录0出现了多少次
char str[1000]; //将输入作为字符串处理
scanf("%s",str);
int len = strlen(str);
for(i=0; i < len;i++)
{
data[str[i] - '0']++;
}
for(i=0;i < 10;i++)
printf("%d出现%d次\n", i, data[i]);
return 0;
}
希望能帮到你。

回答2:

#include
void main()
{
int a=0;b=0;c=o;d=0;e=0;f=0;g=0;h=0;i=0;j=0;k=0;
int figure[a]; //这个地方不能这么用,变量不能初始化数组。
scanf("%d",&a);
for(i=0;iscanf("%d",&figure[i]);
switch(fighre[i])
{
case '0':++a;break;
case '1':++b;break;
case '2':++c;break;
case '3':++d;break;
case '4':++e;break;
case '5':++f;break;
case '6':++g;break;
case '7':++h;break;
case '8':++i;break;
case '9':++j;break;
default:++k;break;
}
printf("0=%d\n1=%d\n2=%d\n3=%d\n4=%d\n5=%d\n6=%d\n7=%d\n8=%d\n9=%d\n",a,b,c,d,e,f,g,h,i,j);
}

回答3:

楼上的虽然指出了问题,却没给出解决办法。
把int figure这一行改成:
int* figure = new int[a];
这样就可以了。
当然,在main函数的 } 之前要加一句
delete [] figure; 来释放动态内存

回答4:

第四行 int a=0;b=0;c=o;d=0;e=0;f=0;g=0;h=0;i=0;j=0;k=0;
c=o;改成c=0;
0 (零) 错写成字母 o 了。

回答5:

好像你的a初始化为0,即数组figure[a]相当于figure[0],把scanf()和数组定义的顺序换下试试