gpt4 book ai didi

c - 数字中出现了多少次数字 (Number-ception) C

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

我需要有关 C 语言问题的帮助。所以我基本上试图找出如何查看一个数字在一个数字中出现了多少次,例如:

16 in 5167163 = 2
33 in 34333 = 1

但问题是数字不应该重叠,比如 333 中的 33 只有 1 次。我需要知道如何做到这一点。

到目前为止的代码:

#include <stdio.h>
#include <math.h>

int main()
{
int n,i,j;
scanf("%d",&n);
int a[n][2];

for(i=0;i<n;i++)
{
for(j=0;j<2;j++)
{
scanf("%d",&a[i][j]);
}
}


return 0;
}

最佳答案

尝试以下操作

#include <stdio.h>
#include <stdlib.h>

size_t count( int x, int y )
{
const unsigned int BASE = 10;
unsigned int a = abs( x );
size_t n = 0;


do
{
unsigned int z = a;
unsigned int b = abs( y );
_Bool equal = 0;

do
{
equal = a % BASE == b % BASE;
a /= BASE;
b /= BASE;
} while ( equal && a != 0 && b != 0 );

if ( b == 0 && equal )
{
++n;
}
else
{
a = z / BASE;
}
} while ( a );

return n;
}

int main(void)
{
printf( "count( 5167163, 16 ) = %zu\n", count( 5167163, 16 ) );
printf( "count( 34333, 33 ) = %zu\n", count( 34333, 33) );
printf( "count( 1000, 0 ) = %zu\n", count( 1000, 0) );
printf( "count( 12323, 123 ) = %zu\n", count( 12323, 123 ) );
printf( "count( 33333, 33 ) = %zu\n", count( 33333, 33 ) );

return 0;
}

输出为

count( 5167163, 16 ) = 2
count( 34333, 33 ) = 1
count( 1000, 0 ) = 3
count( 12323, 123 ) = 1
count( 33333, 33 ) = 2

如果您的编译器不支持 _Bool 类型,您可以使用 int 类型。

int equal = 0;

关于c - 数字中出现了多少次数字 (Number-ception) C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27657653/

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