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

#include<stdio.h>voidmain(){inta=0;b=0;c=o;d=0;e=0;f=0;g=0;h=0;i=0;j=0;k=0;intfigure[... #include <stdio.h>
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;i<a;i++0;);
scanf("%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);
}
展开
 我来答
wanglixin1001
2012-09-29 · TA获得超过4173个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:843万
展开全部
您的程序问题比较多。
#include <stdio.h>
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<a;i++0;);
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 <stdio.h>
#include <string.h>
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;
}
希望能帮到你。
化成雨6O
2012-09-29 · 超过25用户采纳过TA的回答
知道答主
回答量:140
采纳率:100%
帮助的人:52.1万
展开全部
#include <stdio.h>
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;i<a;i++0;);
scanf("%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);
}
追问
那么应该怎么写呢?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
s605954350
2012-09-29 · TA获得超过353个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:205万
展开全部
楼上的虽然指出了问题,却没给出解决办法。
把int figure这一行改成:
int* figure = new int[a];
这样就可以了。
当然,在main函数的 } 之前要加一句
delete [] figure; 来释放动态内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tgjitriohg1993
2012-10-09
知道答主
回答量:9
采纳率:0%
帮助的人:5万
展开全部
第四行 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 了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-09-29
展开全部
好像你的a初始化为0,即数组figure[a]相当于figure[0],把scanf()和数组定义的顺序换下试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式