C++ 奇怪的代码错误
这是关于我今天早些时候发布的。我制作了一个程序来识别和打印给定数字的数字。当我使用1、2、4位数字时,程序运行正常(我最多输入4位),但当我输入3位数字时,它打印错误的数字并突然结束。帮帮我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
#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函数,我已经包含了它。.谈论死亡的橙色条和完全相同的答案=/