【发布时间】:2021-03-07 18:37:18
【问题描述】:
我试图在不使用库函数和数组的情况下检测一个数字是否为回文。我不认为逻辑是这里的问题。我在扫描和一些循环之后引入了 printf 作为检查点,但我认为代码甚至没有读取输入,因为它无法打印输入的值
#include<stdio.h>
int main()
{
long a,b,x,i,j,d,y;
long g=0;
long n=0;
long c=10;
printf("Enter a number: ");
scanf("%li",&a); \\takes input
printf("%li",a); \\prints the scanned input(Checkpoint)
do{
n++;
b=a/10;
}while(b!=0); \\to determine the number of digits in input
printf("%li",n); \\(checkpoint)
x=a;
for(i=0;i<n;i++)
y=c*10;
printf("%li",y); \\(checkpoint)
for(j=0;j<n;j++) \\store the reverse value of input in g
{
d=x%c;
y=y/10;
g=g+(d*y);
x=x/10;
}
if(g==a) \\check if number is palindrome
{
printf("Palindrome");
}
else
{
printf("Not a palindrome");
}
return(0);
}
【问题讨论】:
-
始终检查
scanfreturns 的内容。 -
嗨,欢迎来到 SO!你的“评论标记”是错误的:它应该是
//,而不是`\\`。 -
请不要在您的帖子中标记多种不同的语言,仅使用您实际编程语言的标签。
-
由于您不打印任何换行符,因此您没有刷新输出缓冲区,因此您看不到检查点,因此您不会注意到您的第一个循环永远不会结束。 (如果
a/10和a始终不变,b怎么会变为零?)
标签: c fatal-error