gpt4 book ai didi

计算数字中数字重复的次数

转载 作者:行者123 更新时间:2023-11-30 18:35:41 25 4
gpt4 key购买 nike

给定一个字符串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/puts 进行数组输入输出一样,这些方法仅适用于字符串(即 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;
}

运行此代码会产生以下输出:

~/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

关于计算数字中数字重复的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46047809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com