gpt4 book ai didi

c - 如何检查使用此程序输入的数字的基数?

转载 作者:行者123 更新时间:2023-11-30 20:27:51 25 4
gpt4 key购买 nike

我的程序将输入的数字转换为所需的基数。但我想检查该数字的当前基数。例如:基数 1 是 3,输入的数字是 4,所以这是不可能的。我编写了函数来检查这一点。但这不起作用。我的错在哪里?

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

int check(int tmp_number , int source_base)
{
int check = 0 ;
char msg[tmp_number];
sprintf(msg, "%d", tmp_number);
int i=0;
if(source_base>tmp_number)
{
return 1;
}
while( tmp_number )
{

if(check<source_base)
{
check = tmp_number % 10 ;
tmp_number /= 10 ;
i++;
}

}
if (sizeof(msg)==i)
{
return 1;
}
else
{
return 0;
}

}

int main()
{

int tmp_number=1;
int decimal=0;
int source_base,target_base;
char s[9];
int i=0;
do
{
printf("Enter the base1\n");
scanf("%d",&source_base);

printf("Enter the number\n");
scanf("%d",&tmp_number);
} while (!check(tmp_number,source_base));

printf("Enter the base2\n");
scanf("%d",&target_base);


while( tmp_number )
{
decimal += (tmp_number % 10) * pow( source_base, i ) ;
tmp_number /= 10 ;
++i ;
}
itoa(decimal, s, target_base);
printf("The result is %s\n", s);

getchar();
getchar();

return 1;
}

最佳答案

char msg[tmp_number];

创建一个非常大的数组(数字值的大小,而不是数字的长度),并且 sizeof(msg) == i 仅当数字恰好为 true 时才为 true 1。您可以通过查找数字的长度并创建该大小的数组来修复代码,但最好像这样重写它:

int check(int tmp_number , int source_base)
{

int check;
while( tmp_number )
{
check = tmp_number % 10;
tmp_number /= 10 ;

if(check >= source_base)
return 0;

}

return 1;

}

关于c - 如何检查使用此程序输入的数字的基数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16270927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com