C 代码块给出了错误的解决方案,而在线编译器没有';T

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

各位

我正在使用代码块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;
    //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”和编号);
//强制一个有效的输入

虽然(Number
i=0
抛出第一次比较的结果。你是说
&
而不是
?另外,你能想象一下没有数组怎么做吗?这会使程序更快更简单。我倾向于使用字符串,但我的老师不允许我使用库字符串。h!所以我被困在此方法!@Ryan我刚刚将此添加到您发现的for循环错误中(与我原来的错误没有任何更改):printf(“\n%d”,ReversedDigits[i]”);它仍然工作正常,倒转的数字都是正确的!我认为这不是一个错误。@PhucHuyNguyenPhuong它可以不使用任何字符串或数组来完成-看。问题与pow有关。尝试打印(int)pow(10,2)…我的解决方案是使用(int)powf(10.0,1.0*j)。