| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 808 人关注过本帖
标题:[求助]一道数组题,大家研究一下~!
只看楼主 加入收藏
dearbot
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-12
收藏
 问题点数:0 回复次数:8 
[求助]一道数组题,大家研究一下~!
#include<stdio.h>
main()
{
char a1[5]={'H','e','l','l','o'};
char a2[5]={'W','o','r','l','d'}; //定义三个字符数组,并初始化a1,a2
char a3[10];
char *p1,*p2,*p3; //定义三个指针
int i;
p1=a1;
p2=a2; //分别把字符数组a1,a2,a3赋给指针p1,p2,p3
p3=a3;
for(i=0;i<5;i++,p1++,p3++) //先把a1的值赋给a3
a3[i]=a1[i];
for(i=0;i<5;i++,p2++,p3++) //在把a2的值赋给a3
a3[i+5]=a2[i];
for(i=0;i<10;i++,p3++) //最后输出
printf("%c",a3[i]);
printf("\n");
}

-------------------------------------------------------------------------------------------------------------------------------------

以上就是源代码,小弟有一点不明白:"在把a2的值赋给a3"时,for循环下的"a3[i+5]=a2[i]"数组"a3[i]"为什么要写成"a3[i+5]",就是为什么要加个5呢?
第二点就是:"为什么两个数组不能直接相加?"

HELP~!(*&^%$#@!~!!!!!! THANK U VERY MUCH!

搜索更多相关主题的帖子: 研究 main char include 
2007-08-30 20:04
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
首先,a3有10个元素,a1,a2各5个,
这题是想把a1中的元素放到a3的前5个位置上,把a2中的元素放到a3的后5个位置上,
所以是a3[i+5]=a2[i];
其次,数组不能进行抽象操作,也就是不能整体操作啦,
只能对其中的元素进行单独操作.
如不能写A[5]=B[5]
而要写for(int i(0);i<5;i++)
A[i]=B[i];

这可是基础知识啊!

[此贴子已经被作者于2007-9-1 15:13:43编辑过]


2007-08-30 22:47
冰的热度
Rank: 2
等 级:禁止访问
威 望:5
帖 子:404
专家分:0
注 册:2006-12-2
收藏
得分:0 
意思是把a1的五个元素放到a3中,这个时候a3[0]=H,a3[1]=e,a3[2]=l,a3[3]=l,a3[4]=o
然后把a2的五个元素接着往下放,所以a3[5]=W,a3[6]=o,a3[7]=r,a3[8]=l,a3[9]=d

实际上是起到一个连接作用,如果不+5,那么得到的结果是a3[0]=W,a3[1]=o,a3[2]=r,a3[3]=l,a3[4]=d.

也就是a2的五个元素把a1的五个元素覆盖了,你自己改改,运行一下就知道了

科学是永恒之迷...... 我的博客http://blog..cn/u/1267727974 阅读我的blog,懂与不懂都是收获!
2007-09-01 15:01
dearbot
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-12
收藏
得分:0 
回复:(blueboy82006)首先,a3有10个元素,a1,a2各5个...
谢谢以上各位的解答,我会努力加油地~!

我需要信心,恒心,勇气!
2007-09-01 22:37
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 

这题定义指针根本毫无意义


自我放逐。。。
2007-09-01 22:51
penganlph
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-7-7
收藏
得分:0 
对,指针没什么意义。
2007-09-03 21:11
qwl1982
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-9-3
收藏
得分:0 
主要作用是两个数组的连接,
a3[10]的前5个元素a3[0]-a3[4]存放的是a1[5]的5个元素
后5个元素a[5]-a[9]存放a2[5]的5个元素
因为是用变量i来控制数组元素的存取
在第二个for循环的时候需要在a3[10]数组的第6个位置开始存放a2[5]的5个元素
所以赋值写成a3[i+5]=a2[i];
也可以修改成
for(i=5;i<10;i++;)
a3[i]=a2[i-5];
道理是一样的。

2007-09-04 01:41
faee0
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-5-28
收藏
得分:0 
用指针显示LZ有水平,哇哈哈~~
2007-09-11 14:30
ondy
Rank: 1
等 级:新手上路
威 望:1
帖 子:88
专家分:0
注 册:2007-9-4
收藏
得分:0 

汗!i+5是把数组里的无素放在后面!!
你指针没一点用
LZ请注意风格!!
main() 前面写 int 后面写 return 0;

[此贴子已经被作者于2007-9-11 20:13:08编辑过]


2007-09-11 20:11
快速回复:[求助]一道数组题,大家研究一下~!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012674 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved