c语言程序:将一个五符号十进制证书转化为二进制形式,保存在形参数组中
发布网友
发布时间:2022-05-01 14:15
我来回答
共2个回答
热心网友
时间:2023-10-17 17:16
保存在形参数组中,在主函数中输出其二进制形式?
楼主是不是把题目弄错了,保存到形参数组中?形参的改变不能使实参改变!也就是说,无论形参数组a[16]中存的是什么,在主函数中,都不能将其输出(因为调用完函数后,主函数中的数组无任何变化)。
像这样的问题,一般都是用指针解决的(或者在fun()函数中输出数据也可解决问题,但这样的程序不够标准)。
所以函数原型应该是:void fun(unsigned x,int *a);
程序:
#include <stdio.h>
void fun(unsigned x,int *a);
int main(void)
{ int i,a[16];
unsigned int x;
scanf("%d",&x);
fun(x,a);
for(i=0;a[i]!=0;i++) printf("%c",a[i]);
printf("\n");
}
void fun(unsigned x,int *a)
{ int i,j,b[16];
if(!x) { a[0]='0';a[1]=0; }
else
{ for(i=0;x!=0;x/=2) b[i++]='0'+x%2;
for(j=0;i!=0;j++) a[j]=b[--i];
a[j]=0;
}
}
热心网友
时间:2023-10-17 17:16
怎么算 “二进制形式”啊 字符串 ,还是每个int里面放个0或1 ?。。
热心网友
时间:2023-10-17 17:16
保存在形参数组中,在主函数中输出其二进制形式?
楼主是不是把题目弄错了,保存到形参数组中?形参的改变不能使实参改变!也就是说,无论形参数组a[16]中存的是什么,在主函数中,都不能将其输出(因为调用完函数后,主函数中的数组无任何变化)。
像这样的问题,一般都是用指针解决的(或者在fun()函数中输出数据也可解决问题,但这样的程序不够标准)。
所以函数原型应该是:void fun(unsigned x,int *a);
程序:
#include <stdio.h>
void fun(unsigned x,int *a);
int main(void)
{ int i,a[16];
unsigned int x;
scanf("%d",&x);
fun(x,a);
for(i=0;a[i]!=0;i++) printf("%c",a[i]);
printf("\n");
}
void fun(unsigned x,int *a)
{ int i,j,b[16];
if(!x) { a[0]='0';a[1]=0; }
else
{ for(i=0;x!=0;x/=2) b[i++]='0'+x%2;
for(j=0;i!=0;j++) a[j]=b[--i];
a[j]=0;
}
}
热心网友
时间:2023-10-17 17:16
怎么算 “二进制形式”啊 字符串 ,还是每个int里面放个0或1 ?。。
热心网友
时间:2023-11-08 18:13
保存在形参数组中,在主函数中输出其二进制形式?
楼主是不是把题目弄错了,保存到形参数组中?形参的改变不能使实参改变!也就是说,无论形参数组a[16]中存的是什么,在主函数中,都不能将其输出(因为调用完函数后,主函数中的数组无任何变化)。
像这样的问题,一般都是用指针解决的(或者在fun()函数中输出数据也可解决问题,但这样的程序不够标准)。
所以函数原型应该是:void fun(unsigned x,int *a);
程序:
#include <stdio.h>
void fun(unsigned x,int *a);
int main(void)
{ int i,a[16];
unsigned int x;
scanf("%d",&x);
fun(x,a);
for(i=0;a[i]!=0;i++) printf("%c",a[i]);
printf("\n");
}
void fun(unsigned x,int *a)
{ int i,j,b[16];
if(!x) { a[0]='0';a[1]=0; }
else
{ for(i=0;x!=0;x/=2) b[i++]='0'+x%2;
for(j=0;i!=0;j++) a[j]=b[--i];
a[j]=0;
}
}
热心网友
时间:2023-11-08 18:14
怎么算 “二进制形式”啊 字符串 ,还是每个int里面放个0或1 ?。。