【发布时间】:2017-09-05 05:52:20
【问题描述】:
给你一个字符串 S。计算字符串 S 中所有数字出现的次数。
输入: 第一行包含字符串 S。
输出: 对于从 0 到 9 的每个数字,打印它们在字符串 S 中出现的次数。因此,打印 10 行,每行包含 2 个空格分隔的整数。第一个整数 i 和第二个整数 i 的出现次数。请参阅示例输出以进行说明。
约束:1≤|S|≤100
我试过这样做。但我遇到了错误。
错误:数组下标不是整数。和 错误:二进制操作数无效。
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
double a[100],i,k;
int b[10]={0,1,2,3,4,5,6,7,8,9},sum[10];
int j;
gets(a);
k=strlen(a);
for(i=0; i<10; i++){
sum[i]=0;
}
for(i=0; i<k; i++){
a[i]=a/(pow(10,k-i-1));
for(j=0; j<k; j++){
if(i+j<10 && a[i]==a[i+j])
sum[i]++;
else
break;
}
}
printf("%d/n",b[i]);
puts(sum[i]);
return 0;
}
请帮忙。
【问题讨论】:
-
你不应该使用
gets。此外,将一个 double 数组传递给 get 是行不通的 -
double a[100]-->char a[100+1];,double i, k-->int i, k;或size_t i, k; -
a/:您不能将/应用于数组本身。 -
你想要一本 C 书。