C语言的问题,要考试了,求助!

2025-03-09 13:55:31
推荐回答(4个)
回答1:

问题在change里:
void change(long int n,char a[]) //将十进制转换成二进制给数组a
{
long int i=0;
while(n!=0)
{
a[i]=n%2+'0';
n=n/2;
i++;
}
a[i]='\0';
}
改成这样。
因为你a是char数组,所以一定要在0和1后面加上‘0’,这样才是0和1的ASCII码,才能作为char或者字符串打印出来。
然后a[i]的最后一步应该是'\0',这个应该是你疏忽了。

回答2:

#include

#include

void
fun(char
str1[],char
str2[])
{
 char
*p
=
str1;
 while(*p++
!=
'\0');
 p--;
 while(*p++
=
*str2++);
 *str2
=
'\0';
}
int
main()
{
 char
str1[80]="This
Is
a
",str2[80]="c
Program";
   
printf("String1
is:
%s\n",str1);
   
printf("String2
is:
%s\n",str2);
   
fun(str1,str2);
   
printf("Result
is:
%s\n",str1);
    return
0;
}

回答3:

这是根据一楼改的结果

回答4:

函数传递有点忘了~经过强力鉴定,123楼均为正解。指针理解不深的话推荐一楼,吼吼~~
void fun(char str1[],char str2[])
{

int
i,
pos=0,
len
=
strlen(str1);

for
(i=1; ii+=2)
{

str2[pos]
=
str1[i];
pos
++;
}
str2[pos]
=
0;
}