当前位置: 代码迷 >> C语言 >> [求助]不知道咋做了,一个小题,麻烦看看
  详细解决方案

[求助]不知道咋做了,一个小题,麻烦看看

热度:345   发布时间:2006-09-03 21:23:36.0
[求助]不知道咋做了,一个小题,麻烦看看


编写一个C程序,定义两个字符数组,并初始化数组的值,然后组合这个两个数组的值并存储在第三个数组中,要求用指向数组的指针实现。例如:

》字符数组arr1

H e l l o
》字符数组arr2

W o r l d

将两个数组合并后存储在数组arr3中,arr3 中元素的值应该为:
H e l l o w o r l d

#include<stdio.h>
#define N 5
void main()
{
char a[]={'H','e','l','l','o'},b[]={'W','o','r','l','d'};
char c[N+5];

char i,k,*o,*p,*q;
o=a;p=b;q=c;

for(i=0;i<N;i++,*o++)
{
*q=*o;

}

c[N+5]=*q;

for(i=0;i<N+5;i++,*p++,*q++)
{
if(i>5)
{

这不知道咋写了
printf("%c",*q);
}
}
printf("\n");
}

搜索更多相关的解决方案: 麻烦  

----------------解决方案--------------------------------------------------------

您对字符串的理解有所偏差.
char a[]={'H','e','l','l','o'};
这是不标准的字符串.C语言中字符串都以'\0'结尾。您可以直接这样定义:char a[]="Hello";
所以您那个char c[N+5]长度也是不对的,因为至少还要保存一个'\0'结束符.
指针p递增的是地址,p++才是有意义的.


----------------解决方案--------------------------------------------------------

我还是想不出来啊,麻烦帮我改一下,可以吗,谢谢啊


----------------解决方案--------------------------------------------------------

win-tc 环境运行成功,红色部分改为 *q会出现错误,谁知道为什么



#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
main()
{

char a[]={'H','e','l','l','o'},b[]={'W','o','r','l','d'};
char c[11];

char i,k,*o,*p,*q;
o=a;p=b;q=c;

for(i=0;i<5;i++)
{ *q=*o;
q++;
o++;

printf("%c",c[i]);
}
for(i=5;i<10;i++){
*q=*p;
p++;
q++;
printf("%c",c[i]);
}

printf("\n");

getch();
return(0);
}


----------------解决方案--------------------------------------------------------
以下是引用小虾米123在2006-9-3 21:23:36的发言:


编写一个C程序,定义两个字符数组,并初始化数组的值,然后组合这个两个数组的值并存储在第三个数组中,要求用指向数组的指针实现。例如:

》字符数组arr1

H e l l o
》字符数组arr2

W o r l d

将两个数组合并后存储在数组arr3中,arr3 中元素的值应该为:
H e l l o w o r l d

#include<stdio.h>
#define N 5
void main()
{
char a[N]={'H','e','l','l','o'},b[]={'W','o','r','l','d'};
char c[N+5];

char i,k,*o,*p,*q;
o=a;p=b;q=c;

for(i=0;i<N;i++,o++)
{
*q=*o;
q++;

}
for(i=0;i<5;i++,p++)
{
*q=*p;
q++;
}


q=c;

for(i=0;i<N+5;i++,q++)
{
printf("%c",*q);

}
printf("\n");
getch();
}

1.字符数组!=字符串
2.用指针进行对数组的操作,针对地址改变(自增处理下一个元素),而不是指针指向的内容.
3.要记住指针所指向在数组中的位置.
4.按理说,这里还不是真正的指针处理,我觉得用字符串+指针会更好做一些.


----------------解决方案--------------------------------------------------------

#include<stdio.h>
#define N 10
void main()
{
char a[5]={'H','e','l','l','o'},b[5]={'W','o','r','l','d'};
char c[N],*p1,*p2,*p3;

int i,j;
p1=a;p2=b;p3=c;

for(i=0;i<5;i++)
{
*p3=*(p1+i);
p3++;
}
for(j=0;j<N;j++)
{
*p3=*(p2+j);
p3++;
printf("%c",c[j]);
}
printf("\n");
}
谢谢你们,老师讲了个简单点的


----------------解决方案--------------------------------------------------------
  相关解决方案