尽管逻辑正确,输出错误
问题描述:
五位数字的反转。尽管逻辑正确,输出错误
#include<stdio.h>
#include<conio.h>
int main()
{
int a, l1, l2, l3, l4, l5, m1, m2, m3, m4;
clrscr();
printf("Enter a number: ");
scanf("%d",&a);
l1 = a % 10;
m1 = a/10;
l2 = m1 % 10;
m2 = m1/10;
l3 = m2 % 10;
m3 = m2/10;
l4 = m3 % 10;
m4 = m3/10;
l5 = m4/10;
printf("\n%d%d%d%d%d", l1, l2, l3, l4, l5);
getch();
return 0;
}
我认为逻辑是正确的,但输出只有到来的输入12345,并给予负数其他输出。
答
有一点问题,在这里,从我可以告诉,而不是做最后一位数字的整数除法用10做一个模块或简单地打印它是
l5=m4/10;
变化
逻辑l5=m4%10;
答
您允许使用循环吗?尝试这样的事情也许:
int main()
{
int nb;
int res = 0;
int if_negative = 1;
printf ("%s\n", "Enter number: ");
scanf ("%d", nb);
if (nb < 0) //check if negative
{
if_negative = -1;
nb *= -1;
}
while (nb != 0)
{
res = res * 10 + (nb % 10); //build up the answer
nb /= 10;
}
res *= if_negative;
**** // the rest of your code
}
那么,如果答案错了,那么逻辑也一定是错误的。你有没有做过任何调试? – Carcigenicate
尝试使用gdb来调试你的程序,并btw conio.h?你使用哪个编译器? – LethalProgrammer
如果您只是将数字作为字符串读取,并按相反顺序打印出字符,则更容易做到。 – FredK