gpt4 book ai didi

c - 为什么我会得到此代码的错误输出(打印数组中的回文数)?

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

find the number of palindromes in an array

我所做的是首先找出该数字的位数,然后将第一个余数与第 1 个数字项相乘,然后将余数二与第 2 个数字项相乘,依此类推。如果 sum == num 则加 1 来运行。

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

int main() {
int a[30], i, n, cont = 0, j, rem, run = 0, sum = 0, b[300], c[300];

printf("Enter the number of elements\n");

scanf("%d", &n);

printf("Enter the array elements\n");

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

for (i = 0; i < n; i++) {
c[i] = a[i];
b[i] = a[i];
cont = 0;

while (b[i] != 0) {
b[i] = b[i] / 10;
cont++;
}
sum = 0;

while (a[i] != 0) {
rem = a[i] % 10;
sum = sum + rem * pow(10, cont - 1);
cont--;
a[i] = a[i] / 10;
}
if (sum == c[i])
run++;
}
printf("%d\n", run);
}

forwhile 循环有问题吗?

最佳答案

您的程序可以运行,但可以进行一些注释

  • 检查scanf的结果
  • 检查n的范围
  • 您不需要数组bc,即使您将它们用作数组,它们的大小也可以是30,如a

建议:

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

#define N 30

int main()
{
int a[N],i,n,run=0;

printf("Enter the number of elements\n");
if ((scanf("%d",&n) != 1) || (n < 1) || (n > N)) {
puts("invalid number of element");
return -1;
}

printf("Enter the array elements\n");

for(i=0;i<n;i++)
{
if (scanf("%d",&a[i]) != 1)
{
puts("invalid number");
i -= 1;
continue;
}
}

for(i=0;i<n;i++)
{
int b = a[i];
int cont=0;

while(b!=0)
{
b=b/10;
cont++;
}

int sum=0;

b = a[i];
while(b!=0)
{
int rem=b%10;

sum=sum+rem*pow(10,cont-1);
cont--;
b /= 10;
}

if(sum==a[i]) {
printf("%d is a palindrome\n", a[i]);
run++;
}
}

printf("%d\n",run);
}

编译和执行:

pi@raspberrypi:/tmp $ gcc -pedantic -Wextra p.c -lm
pi@raspberrypi:/tmp $ ./a.out
Enter the number of elements
3
Enter the array elements
1
12
12321
1 is a palindrome
12321 is a palindrome
2

请注意,您还可以将数字读取为字符串,以使其更通用并避免微积分

关于c - 为什么我会得到此代码的错误输出(打印数组中的回文数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54957490/

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