大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这里先问下楼主怎么吧十进制数转换成二进制呢?
成都创新互联主营东乃网站建设的网络公司,主营网站建设方案,app开发定制,东乃h5成都小程序开发搭建,东乃网站营销推广欢迎东乃等地区企业咨询
好了,这是一个问题。就是取出每一个位判断。
这里提供一个十进制的int型数据转二进制的算法。你可以自己完成你要得了:
void itob(int num,char* buf)
{
int i;
char* tmp=buf;
int temp;
for(i=0;i32;++i){
temp=num(1(31-i));
temp=temp(31-i);
tmp[i]=(temp==0)?'0':'1';
}
buf[32]='\0';
}
一、char s[MAXLINE]; 即然定义为全局变量,何苦又去传参数?itob(n, s ,b);
二、return(s); 返回的是个指针(地址),为何函数返回值类型定义为char ? char itob(int n,char s[],int b) ,应该是char *itob(int n,char s[],int b)
三、 if(k=10)
s[i]=k+'a'-10;
k=10,则k+'a'-10;如何保证不超过255?一个无符号char的最大值是255,因为,它只能有一个字节
看不太懂你的代码想实现什么?作业题目呢?贴出来看看
按照你的程序改的,希望能帮到你,不清楚的可以HI我
#include stdio.h
int t=0; //考虑到你可能还没学指针,所以采用定义了一个全局变量t这种方法
void itob(int n,int s[])
{
int i=0,m;
while(n)
{
s[i]=n%2; /* +'\0';我不知道加'\0'为什么,加了貌似没什么用*/
i++;
n=n/2;
}
t=i-1; /*当n==0之前,i还是多自加了一遍的,所以减去1,现在数组最大的下标是t,即s[t]是最后一个元素*/
for(i=0;i=t/2;i++) /*t/2是因为交换只要进行到中间的一个元素,要是在交换下去等于把刚才对换的数据又换回来了*/
{
m=s[i];
s[i]=s[t-i];
s[t-i]=m;
}
}
void main()
{
void itob(int n, int s[]); /*这一行声明可以不写,因为你在使用前已经定义了*/
int x;int a[100];
int i;
printf("请输入一个整数:");
scanf("%d",x);
itob(x,a);
for(i=0;i=t;i++) /*下标是达到t的,所以i=t,而不是it*/
printf("%d",a[i]);
printf("\n");
}