打印

[转帖] 挑战30天C++入门极限

本主题由 829939 于 2008-1-12 03:58 设置高亮

re关于数组问题

a[5]这个数组只有a[1]~a[4]这5个元素!
没有a[5]这个元素!

TOP

好文章,收藏了!

TOP

的确```

入门的时候千万不能着急,要把没一个概念,细节都弄清楚```
否则,到用的时候你才知道后悔```
文章写得很好,顶```
最后,推荐一个看书网站(中华电脑书库):http://www.pcbookcn.com
你发如雪,闪亮了黑夜

TOP

收藏了 呵呵................................
逃离了都市的喧嚣 逃离的生活的烦躁我在虚幻的空间里寻找 X是我最终的依靠..

TOP

很精彩啊,谢谢楼主啊,不顶不行,太棒了。

TOP


就写这么多就要挑战30天极限!!

TOP

老子硬是强迫自己把这篇文章看完了````(有发泄的成分````所以自称为老子```望见谅)```谢谢作者的好文章!!!!

但是最开始的两段代码没看懂```VC++编译也有一个错```望指点```
CODE:
#include <stdio.h>

void main(void)
{

void reversal();
static int a[10] = {0,1,2,3,4,5,6,7,8,9}; /* 建立一个数组并初始化 */
int i;
for (i=0;i<10;i++)
{
printf("%d ",a);
}
printf("\n");
reversal(a,10); /* 调用自定义涵数进行反向显示排序,并把数组a的起始地址传送给形式参数x */

for (i=0;i<10;i++)
{
printf("%d ",a);
}
printf("\n");

}

void reversal(x,n)
int x[],n; /* 定义形式参数 */
{
int m=(n-1)/2; /* 计算10个数需要循环几次,因为是两两调换第一个数组是x[0]故应该是int(9/2) */
int temp,i,j; /* 建立零时变量temp用于每次交换处理时零时存储x的值 */
for (i=0;i<=m;i++)
{
j=n-1-i; /* 反向计算出被调换的数组下标,例如x[0] 对应的x[n-1-i]就是x[9] */
temp=x;
x=x[j];
x[j]=temp;
}
}

/* 次题需要注意的是:这里由于a[10]和x[10]是共同享内存地址位的所以进行交换后a[10]的实际值也就发生了改变 */


#include <stdio.h>

void main(void)
{

void reversal();
static int a[10] = {0,1,2,3,4,5,6,7,8,9}; /* 建立一个数组并初始化 */
int i;
for (i=0;i<10;i++)
{
printf("%d ",a);
}
printf("\n");
reversal(a,10); /* 调用自定义涵数进行反向显示排序,并把数组a的起始地址传送给形式参数x */

for (i=0;i<10;i++)
{
printf("%d ",a);
}
printf("\n");

}

void reversal(x,n)
int *x,n; /* 定义x为指针变量 */
{
int temp,*p,*i,*j; /* 这里需要注意的是temp用与交换的时候临时存储数据的 */
i = x; /* 利用指针变量i存储数组a的起始地址 */
p = x + ((n-1)/2); /* 计算最后一次循环的时候数组a的地址 */
j = x + n - 1; /* 计算数组a也就是a[9]的结束地址好用于交换 */
for (;i<=p;i++,j--) /* 利用循环和指针进行数组元素值的交换 */
{
temp=*i; /* 用temp临时存储*i也就是循环中a实际的值 */
*i=*j;
*j=temp;
}
}

[ 本帖最后由 lzlsl 于 2007-6-7 21:59 编辑 ]

TOP

唉,看来我的路还很长呢!357773721
!!!有好多要学的。。。 。。。。。。最后顶顶啦!!
我是中国人,所以必须为人民服务。

TOP

楼主写的太精彩了。绝对支持

TOP

感觉不错哦,,,,哈,,继续教下去就好,,,

TOP

Processed in 0.156918 second(s), 6 queries, Gzip enabled.