1417: 二进制数的大小
题目描述
输入三个2 进制的数,要求将这三个二进制数对应的十进制整数按从小到大的顺序输。
要求程序定义一个bToD()函数和一个main()函数,bToD() 函数的功能是将二进制数转化为十进制整数,其余功能在main()函数中实现。
int bToD(char str[])
{
//函数返回二进制数str对应十进制整数
}
输入
输入三个2 进制的数,用空格隔开。所有数据均为非负数,二进制数长度不超过30。
输出
将对应的十进制整数按从小到大的顺序输出
样例输入
1101 110 1011
样例输出
6 11 13
代码如下:
#include <stdio.h>
#include <string.h>
int btod(char str[]) //二进制转换十进制函数
{
int n=0;
char p;
p=str;
while(§!=’\0’)
{
n=n*2+*p-‘0’;
p++;
}
return n;
}
int main()
{
int x,y,z,t;
char a[35],b[45],c[55]; //定义大于30位的三个字符数组
scanf("%s%s%s",a,b,c);
x=btod(a); //分别输入这三个字符数组,以空格为结束标志
y=btod(b); //返回十进制数进行比大小
z=btod©;
if(x>y)
{
t=x;x=y;y=t;
}
if(x>z)
{
t=x;x=z;z=t;
}
if(y>z)
{
t=y;y=z;z=t;
}
printf("%d %d %d",x,y,z); //依次输出排序后的结果
return 0;
}
总结:主要算法是用指针来实现对字符数组每一个元素的调用,再通过循环来实现十进制的转化。返回比大小即可。

195

被折叠的 条评论
为什么被折叠?



