我需要反转用户在 C 中输入的 5 位数字。代码没有语法错误(没有错误波浪线)但代码仍然没有 运行
I need to reverse the 5 digit number input by the user in C. Code has no syntax error (no error squiggles) but still code doesn't run
我使用的逻辑可能有一些错误。有人可以向我指出吗?
//Reverse the number
#include<stdio.h>
int main()
{
int m,a,b,c,d,e,n;
printf("\nEnter a five digit number: ");
scanf("%d",m);
a = m/10000; //1st digit
b = (m - a*10000)/1000; //2nd digit
c = ((m-a*10000) - b*1000)/100; //3rd digit
d = (((m-a*10000) - b*1000) - c*100)/10; //4th digit
e = ((((m-a*10000) - b*1000) - c*100) - d*10); //5th digit
n = e*10000 + d*1000 + c*100 + b*10 + a; //reverse of the number
printf("Reverse of the number given by you is %d\n", n);
return 0;
}
正如评论中已经指出的,您的错误在这里:
scanf("%d",m); --> scanf("%d", &m);
^ ^^
wrong correct
因为 scanf
必须传递一个指向要存储转换值的对象的指针。
您的计算可以通过使用 %
来简化
e = m % 10; //5th digit
m = m / 10;
d = m % 10; //4th digit
m = m / 10;
c = m % 10; //3rd digit
m = m / 10;
b = m % 10; //2nd digit
m = m / 10;
a = m % 10; //1st digit
如您所见,每次计算都是相同的,因此您可以使用循环。
int factor = 10000;
n = 0;
while(m != 0)
{
n = n + (m % 10) * factor;
m = m / 10;
factor = factor / 10;
}
注意:上面的循环仅在输入 正好 5 位时有效。更通用的解决方案可能是:
n = 0;
while(m != 0)
{
n = n * 10;
n = n + (m % 10);
m = m / 10;
}
我使用的逻辑可能有一些错误。有人可以向我指出吗?
//Reverse the number
#include<stdio.h>
int main()
{
int m,a,b,c,d,e,n;
printf("\nEnter a five digit number: ");
scanf("%d",m);
a = m/10000; //1st digit
b = (m - a*10000)/1000; //2nd digit
c = ((m-a*10000) - b*1000)/100; //3rd digit
d = (((m-a*10000) - b*1000) - c*100)/10; //4th digit
e = ((((m-a*10000) - b*1000) - c*100) - d*10); //5th digit
n = e*10000 + d*1000 + c*100 + b*10 + a; //reverse of the number
printf("Reverse of the number given by you is %d\n", n);
return 0;
}
正如评论中已经指出的,您的错误在这里:
scanf("%d",m); --> scanf("%d", &m);
^ ^^
wrong correct
因为 scanf
必须传递一个指向要存储转换值的对象的指针。
您的计算可以通过使用 %
来简化
e = m % 10; //5th digit
m = m / 10;
d = m % 10; //4th digit
m = m / 10;
c = m % 10; //3rd digit
m = m / 10;
b = m % 10; //2nd digit
m = m / 10;
a = m % 10; //1st digit
如您所见,每次计算都是相同的,因此您可以使用循环。
int factor = 10000;
n = 0;
while(m != 0)
{
n = n + (m % 10) * factor;
m = m / 10;
factor = factor / 10;
}
注意:上面的循环仅在输入 正好 5 位时有效。更通用的解决方案可能是:
n = 0;
while(m != 0)
{
n = n * 10;
n = n + (m % 10);
m = m / 10;
}