gpt4 book ai didi

c - C 中的数字比较给出不正确的结果

转载 作者:太空狗 更新时间:2023-10-29 16:11:52 27 4
gpt4 key购买 nike

我编写了一个程序来检查回文数。

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
main()
{
int n,i;
printf("Please enter a number: ");
scanf("%d", &n);
/* Function Prototypes */
int reverse(int *p);
i=reverse(&n);
printf("Number returned %d",i);
if (i == n)
{
printf("The number is a palindrome");
}
else
{
printf("The number is NOT a palindrome");
}

}
int reverse( int *p)
{
int rev=0;
while(*p !=0)
{
rev=rev*10;
rev=rev+ *p%10;
*p=*p/10;
}
return (rev);
}

但是不管数字是不是回文,总是显示“Number is not a palindrome”。

最佳答案

reverse 函数将其参数指向零。参数不必是指针,按值传递 n 可以解决问题。

这是固定代码,稍微重新格式化并添加了错误检查。

#include <stdio.h>

int reverse(int p) {
int rev = 0;
while (p != 0) {
rev = rev * 10;
rev = rev + p%10;
p = p/10;
}
return rev;
}

int main(void) {
int n, i;
printf("Please enter a number: ");
if (scanf("%d", &n) != 1) {
printf("failed to read number.\n");
return 1;
}
i = reverse(n);
if (i == n) {
printf("%d is a palindrome: reversing it gives %d\n", n, i);
} else {
printf("%d isn't a palindrome: reversing it gives %d\n", n, i);
}
return 0;
}

能够调试程序是一项重要的技能。这是一些初学者技术的好链接:http://ericlippert.com/2014/03/05/how-to-debug-small-programs/

关于c - C 中的数字比较给出不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29224234/

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