C 代码块给出了错误的解决方案,而在线编译器没有';T
各位 我正在使用代码块16.01和编译器GNU GCC。我当前的操作系统是32位Windows7 我是C编程的新手。这些天来,我一直在开发一个程序,它只输出输入正整数的倒数。例如:输入12345,输出将是54321 这是我的密码:C 代码块给出了错误的解决方案,而在线编译器没有';T,c,gcc,C,Gcc,各位 我正在使用代码块16.01和编译器GNU GCC。我当前的操作系统是32位Windows7 我是C编程的新手。这些天来,我一直在开发一个程序,它只输出输入正整数的倒数。例如:输入12345,输出将是54321 这是我的密码: #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int Number=0; int i=0,j=0; //In
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int Number=0;
int i=0,j=0;
//Input
printf("\nEnter your positive number:\t");
scanf(" %d",&Number);
//Force a valid input
while (Number<0){
printf("\nInvalid input.");
printf("\nEnter your positive number:\t");
scanf(" %d",&Number);
}
//Identifying the number of digits
for (i=1;;i++){
if((Number/(int)pow(10,i)<1))break;//Dividing for 10 until the result is < 1 then break
}
printf("\nYour input number is %d digits long.\n",i);
//Preparing for the reverse process
int D=i;
int NUMBER[D+1];
int Num1=Number;
i=D-1;j=0;
//Extracting the digits from the number
for(i=D-1;i>=0;i--){
NUMBER[i]=Num1%10;
Num1=Num1/10;
}
int ReversedDigits[D+1];
int ReversedNumber=0;
for(i=0,j=D-1;i<=D-1,j>=0;i++,j--){
ReversedDigits[i]=NUMBER[j];
ReversedNumber+=ReversedDigits[i]*(int)pow(10,j);
}
printf("\nThe reversed number is %d.\n",ReversedNumber);
}
#包括
#包括
#包括
int main()
{
整数=0;
int i=0,j=0;
//输入
printf(“\n输入您的正数:\t”);
scanf(“%d”和编号);
//强制一个有效的输入
虽然(Numberi=0
抛出第一次比较的结果。你是说&
而不是,
?另外,你能想象一下没有数组怎么做吗?这会使程序更快更简单。我倾向于使用字符串,但我的老师不允许我使用库字符串。h!所以我被困在此方法!@Ryan我刚刚将此添加到您发现的for循环错误中(与我原来的错误没有任何更改):printf(“\n%d”,ReversedDigits[i]”);它仍然工作正常,倒转的数字都是正确的!我认为这不是一个错误。@PhucHuyNguyenPhuong它可以不使用任何字符串或数组来完成-看。问题与pow有关。尝试打印(int)pow(10,2)…我的解决方案是使用(int)powf(10.0,1.0*j)。