#include <stdio.h>
#include<math.h>
int binary_to_decimal(int n){
int ostatok, i=0, pom, decimal=0;
pom=n;
while(pom)
{
ostatok=pom%10;
decimal+=ostatok*pow(2,i);
pom/=10;
i++;
}
return decimal;
}
int main()
{
int m, n, i, max=0, number;
scanf(" %d %d", &n, &m);
int array[n];
for(i=0; i<n ;i++){
scanf(" %d", &number);
binary_to_decimal(number);
if(number>m) // this if statement doesn't seem to be doing it's job
array[i]=number;
if(array[i]>max)
max=array[i];
}
for(i=0; i<n ;i++)
{
printf(" %d %d\n", array[i], binary_to_decimal(array[i]));
}
printf("Max %d %d", max, binary_to_decimal(max));
return 0;
}
程序是:输入两个int
和m
值。 n
用作比较值,而m
是用户在循环中输入的二进制数。如果输入的数字大于数字n
,则以二进制然后十进制的形式打印出输入数字的值。最后,以二进制和十进制打印出具有最大值的数字。
我的问题是m
,我在这里比较if
和输入的数字,我似乎找不到问题。
答案 0 :(得分:3)
调用binary_to_decimal(number)不会更改您的号码。 尝试类似的东西:
number = binary_to_decimal(number);