C++ 奇怪的代码错误

C++ 奇怪的代码错误,c++,c,C++,C,这是关于我今天早些时候发布的。我制作了一个程序来识别和打印给定数字的数字。当我使用1、2、4位数字时,程序运行正常(我最多输入4位),但当我输入3位数字时,它打印错误的数字并突然结束。帮帮我 #include <stdio.h> #include <stdlib.h> #include <digits.h> int getDigit(long); int main() { int ctr, digits, dig, multiNo, number; p

这是关于我今天早些时候发布的。我制作了一个程序来识别和打印给定数字的数字。当我使用1、2、4位数字时,程序运行正常(我最多输入4位),但当我输入3位数字时,它打印错误的数字并突然结束。帮帮我

#include <stdio.h>
#include <stdlib.h>
#include <digits.h>
int getDigit(long);
int main()
{
  int ctr, digits, dig, multiNo, number;
  printf("Enter the number(4 digits max): ");
  scanf("%d", &number);
  printf("\n");
  digits = getDigit(number);
  if (digits == 1)
     printf("%d\n", number);
  else              
  {
    multiNo = pow(10, (digits-1));
    ctr = 1;
    dig = (number/multiNo);
    printf("%d ", dig);    
    while (ctr < digits)  
    {     
      number %= multiNo;
      multiNo/= 10;
      dig = (number/multiNo);
      printf("%d ", dig);
      ctr++;
    }
  }
  printf("\n\n");
  system("PAUSE");
  return 0;
}

int getDigit(long num)
{
  long divider = 10; 
  int digit, i;
  for (i=1; i<=9; i++)
  {
    digit = (num/divider);
    if (digit == 0)
      break;
    else
      divider *= 10;
  }
  return i;
}
#包括
#包括
#包括
int getDigit(长);
int main()
{
int ctr、数字、数字、多编号、数字;
printf(“输入数字(最多4位):”;
scanf(“%d”和编号);
printf(“\n”);
数字=getDigit(数字);
如果(位数==1)
printf(“%d\n”,数字);
其他的
{
多编号=功率(10,(数字-1));
ctr=1;
dig=(数字/多编号);
printf(“%d”,dig);
while(中心<位数)
{     
数字%=多编号;
multiNo/=10;
dig=(数字/多编号);
printf(“%d”,dig);
ctr++;
}
}
printf(“\n\n”);
系统(“暂停”);
返回0;
}
int getDigit(长数值)
{
长分隔线=10;
整数位数,i;

对于(i=1;i代码看起来很好。请检查
getDigit(number);
的返回值


我刚硬编码为
digits=3/*getDigit(number)*/;
,代码为3位数字打印正确的值。

由于我没有你的getDigit()函数,我只让我的版本返回3,所以我可以测试一个3位数字,它工作正常。我猜你的getDigit()有问题


您的程序运行正常。

将main的顶部更改为:

//  printf("Enter the number(4 digits max): ");
//  scanf("%d", &number);
for(int x=1;x<10000;x++){
    number=x;
//printf(“输入数字(最多4位):”;
//scanf(“%d”和编号);

对于(int x=1;x它对我有效,但您需要澄清您为'pow'传递的第一个参数的类型,即

multiNo = pow((double)10, (digits-1));
更简单的逻辑:

void print_digits(unsigned number) {
    unsigned next = number / 10;
    if ( next ) {
        print_digits( next );
    }

    printf( "-%d-", number % 10 );
    return;
}

作为一个懒惰的程序员,我会这样打印数字:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
  char Digits[ 129 ];
  printf( "Enter digits: " );
  gets( Digits );
  if( strlen( Digits ) < 1 )
  {
     printf( "\nNo digits!" );
     system( "PAUSE" );
     return 0;
  }
  printf( "Number of digits: %d\n\n", strlen( Digits ) );
  for( int Loop = 0; Loop < strlen( Digits ); Loop++ )
     printf( "Digit %d: %d\n", Loop, Digits[ Loop ] );
  system( "PAUSE" );
  return 0;
}
#包括
#包括
#包括
int main()
{
字符数字[129];
printf(“输入数字:”);
获取(位数);
if(strlen(数字)<1)
{
printf(“\n无数字!”);
系统(“暂停”);
返回0;
}
printf(“位数:%d\n\n”,strlen(位数));
for(int-Loop=0;Loop
您是否可以发布getDigit(int)函数,以便此代码可以编译和运行?看起来该函数正在执行getNumberOfDigits(int),但我们不能完全确定。它给出了错误的输入数字。即使使用getDigit()也可以正常工作每3位数字一个!!同时检查getDigit函数,我已经包含了它。.谈论死亡的橙色条和完全相同的答案=/