C 计算数字中数字重复的次数
给您一个字符串S。计算字符串S中所有数字的出现次数 输入: 第一行包含字符串S 输出: 对于从0到9的每个数字,打印它们在字符串S中出现的次数。因此,打印10行,每行包含2个空格分隔的整数。第一个整数i和出现i的第二个整数计数。请参见示例输出以获得澄清 限制条件:1≤||≤一百 我试着这样做。但我有错误 错误:数组下标不是整数。及 错误:二进制操作数无效C 计算数字中数字重复的次数,c,arrays,string,C,Arrays,String,给您一个字符串S。计算字符串S中所有数字的出现次数 输入: 第一行包含字符串S 输出: 对于从0到9的每个数字,打印它们在字符串S中出现的次数。因此,打印10行,每行包含2个空格分隔的整数。第一个整数i和出现i的第二个整数计数。请参见示例输出以获得澄清 限制条件:1≤||≤一百 我试着这样做。但我有错误 错误:数组下标不是整数。及 错误:二进制操作数无效 #include <stdio.h> #include <string.h> #include <math.h&
#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;
}
#包括
#包括
#包括
int main()
{
双a[100],i,k;
intb[10]={0,1,2,3,4,5,6,7,8,9},和[10];
int j;
获得(a);
k=strlen(a);
对于(i=0;i您在代码中犯了一些错误。就像对数组输入输出使用get
/put
一样,这些方法仅适用于字符串(即char[]
)。为了查找数字的出现,您可以简单地维护一个数组,并继续使用所需偏移量递增位置(可用'0'
字符减去字符即可找到。请参见以下代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char a[100];
int b[10]={0,1,2,3,4,5,6,7,8,9},sum[10];
int j, i, k;
fgets(a, 100, stdin);
k=strlen(a);
a[k-1] = '\0'; // trim the last newline
k--;
for(i=0; i<10; i++)
sum[i]=0;
for(i=0; i<k; i++){
int offset = a[i] - '0';
sum[offset]++;
}
for(int i = 0; i < 10; i++)
printf("%d : %d\n", i, sum[i]);
return 0;
}
您不应该使用get
。此外,将一个double数组传递到get中不会起作用double a[100]
-->char a[100+1],double i,k
-->int i,k;
或size\u t i,k;
这看起来像是一个家庭作业问题。无论如何,这里有一些以前已经回答过的类似问题:1.2.3.4.5。a/
:你不能将/
应用到数组本身。你想要一本C书。
~/Documents/src : $ gcc testArrSub.c
~/Documents/src : $ ./a.out
12344567889005532
0 : 2
1 : 1
2 : 2
3 : 2
4 : 2
5 : 3
6 : 1
7 : 1
8 : 2
9 : 1