-
qq_一只珂_0
ch[i]的话是字符型,然后放在a[ch[i]]就不对了,改成a[ch[i]-'0']
-
剑主
#include<stdio.h>#include<string.h>int main(){ char ch[80]; int i,a[10]; for(i=0;i<10;i++) a[i]=0; scanf("%s",ch); i=0; while(ch[i]!='\0') { if(ch[i]>='0'&&ch[i]<='9') a[ch[i]-'0']+=1; //ch[i]是字符型数组,要转化为整型数组要用ch[i]-'0'再把它赋给a数组。 i++; } for(i=0;i<10;i++) printf("%d出现了%d次\n",i,a[i]); return 0;}
-
进击的学霸No1
#include<stdio.h>
#include<string.h>
void main()
{
char ch[80];
int i,a[10],j,t;
for(i=0;i<10;i++)
a[i]=0;
//gets(ch);
scanf("%s",ch);
t=strlen(ch);
printf("%s\n",ch);
printf("字符串的长度是%d\n",t);
for(i=0;i<=t;i++)
{
if(ch[i]== '0')
a[0]++;
if(ch[i]== '1')
a[1]++;
if(ch[i]== '2')
a[2]++;
if(ch[i]== '3')
a[3]++;
if(ch[i]== '4')
a[4]++;
if(ch[i]== '5')
a[5]++;
if(ch[i]== '6')
a[6]++;
if(ch[i]== '7')
a[7]++;
if(ch[i]== '8')
a[8]++;
if(ch[i]== '9')
a[9]++;
}
for(i=0;i<10;i++)
printf("数字%d出现%d次\n",i,a[i]);
}这是我的想法,繁琐了点,应该可以用switch语句吧关于你的代码if(ch[i]>='0'&&ch[i]<='9') a[ch[i]]++;这句代码就像楼上说的那样,它的值是个字符,就像'0'这样,是不能作为下标的
-
qq_荒原冰竹_0
#include <stdlib.h>#include <stdio.h>int main(int arg,char * args){ char ch[80]; int count = 0; //用来统计字符出现次数 printf("请输入你的字符.\n"); int i = 0; for(i = 0;i < strlen(ch);i ++) { gets(ch); } while(ch[i] != '\0') { if(ch[i] == 'c') //此处判断为假设你要查找的字符是c { count++; } } printf("字符c出现的次数为%d次!\n",count); /*以上代码中可能出现的函数使用方法不是很正确,毕竟是用记事本写的代码。如便难以出错请查询函数用法自行改正。。。。。。。 */ return 0; }
-
慕田峪7504017
写的好烂,a[ch[i]]++是什么鬼,单单就这个数组下标越界就什么都不说了,为什么最后还要用一个for,你是要上天吗?
-
晴天的青天
测试网站
-
慕后端7201363
buzhidao o
-
qq_荒原冰竹_0
第一个for循环,应该改为i++,保证循环次数10次。另外while循环下的if条件判断不对,你要打印的是字符出现的次数,a[10]这个数组其实没必要。定义一个变量统计就可以,打印的语句也有问题。
-
嗷呜呜呜呜呜呜呜
rrrr
-
嗷呜呜呜呜呜呜呜
hhh
-
逸薄云天
什么时候才能不用void main.
-
书旅
a[ch[i]]++这个很明显不对,c语言里边有下标是字符的情况吗