程序需要显示一个第一个数字更大的数字,只有在两个变量的数字相同的情况下才有效。尝试用这些数字4506 29985,它应该显示4506,但程序显示29985,程序是用C语言编写的。
#include <stdlib.h>
#include <stdio.h>
int disassembly1 (int a)
{
while (a>=10)
{
a /= 10;
}
return a;
}
int disassembly2 (int b)
{
while (b>=10)
{
b /= 10;
}
return b;
}
int main ()
{
int A1, B1, a, b;
printf("Int 2 numbers:\n");
scanf_s("%d %d", &A1, &B1);
a = A1;
b = B1;
disassembly1(A1);
disassembly2(B1);
if (a > b || ((a == b) && (A1 > B1)))
printf("%d\n", A1);
else
printf("%d\n", B1);
system("pause");
}发布于 2020-12-18 04:24:25
首先,disassembly1和disassembly2是同一个函数,不应该写两次。
其次,也是更重要的是,函数disassembly返回第一个数字,但您需要将其存储在一个变量中。
一个可以工作的代码(有几处改动):
#include <stdlib.h>
#include <stdio.h>
int disassembly(int a)
{
while (a>=10)
{
a /= 10;
}
return a;
}
int main()
{
int a, b, a_digit, b_digit;
printf("Int 2 numbers:\n");
scanf_s("%d %d", &a, &b);
a_digit = disassembly(a);
b_digit = disassembly(b);
if (a_digit > b_digit || ((a_digit == b_digit) && (a > b)))
printf("%d\n", a);
else
printf("%d\n", b);
system("pause");
return 0;
}此外,名称disassembly与函数含义不匹配。我建议将其更改为类似于get_first_digit的内容。
发布于 2020-12-18 04:23:58
您的代码不读取从函数返回的值,从而使变量a和b保持不变。
更改:
disassembly1(A1);
disassembly2(B1);至:
a = disassembly1(A1);
b = disassembly2(B1);其他建议:
定义并使用function的一个实例:int disassembly(int x);,然后调用它两次。
a = disassembly(A1);
b = disassembly(B1);发布于 2020-12-18 04:29:15
这是一个简单得多的版本(这是matlab/octave,但可以很容易地移植到c)
a = 4506;
b = 29985;
isAbigger = floor(a/10^(floor(log10(a)))) > floor(b/10^(floor(log10(b))));https://stackoverflow.com/questions/65347732
复制相似问题