给定一个由字母和数字组成的字符串 s,找到给定字符串中每个数字的出现频率。
我已经尝试过了,我的代码如下。请解释为什么它不起作用。
#include <stdio.h>
#include <string.h>
#include<ctype.h>
int main() {
char str[100];
fgets(str,1000,stdin);
int n;
n=strlen(str);
int sum[10]={0,0,0,0,0,0,0,0,0,0};
int i;
for(i=0;i<n;i++){
if(isdigit(str[i])){
sum[str[i]]=sum[str[i]]+1;
}
}
for(i=0;i<10;i++){
printf("%d ",sum[i]);
}
return 0;
}
将您的累积线更改为
sum[str[i]-'0']++;
它可能会做你想做的事(尽管你没有准确解释它一开始没有做什么)。
注意 str[i] 是一个 char,即使它是第 j 个数字,其对应的 int 值也不会是 j。