//C++头文件标准应该使用
//#include<cstdio>
#include <stdio.h>
////////////////////////////////////////////////////////////////////////////////////
/*
* 其实吧,看见您这杂乱的编码风格我是相当没心情帮你的
* 但是我为了论坛经验,还是硬着头皮看了,
* 评价: 您看书太不认真。任何一本书都不可能犯这么多低级错误。
* 还是认认真真踏踏实实的看书,一个例子一个例子的敲.
* 如果您的书真的是这么教的话,换一本吧!我没什么推荐的
* 网上有关新手推荐的书很多,多找基本。总有适合自己的
*
*/
////////////////////////////////////////////////////////////////////////////////////
//这句话是意思应该是函数声明吧!函数声明有往函数体里面放的么?
//下面对这函数的定义有两个参数,但是声明却是没有参数的
//C++默认空括号为无参意即 void reversal(void);
void reversal(int arr[],int nLen);
void main(void)
{
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[i]); //这里应该是需要打出a数组所有类容,你的下标呢?
}
printf("\n");
reversal(a,10); /* 调用自定义涵数进行反向显示排序,并把数组a的起始地址传送给形式参数x */
for (i=0;i<10;i++)
{
printf("%d ",a[i]); //这个是上面一样的,你数组的下标呢?
}
printf("\n");
getchar();
}
/*
* 函数定义:你的参数类型呢?
* 形参放的位置有往函数体放的么?
* C++是不能省略返回值,你的函数返回值呢?
*/
void reversal(int arr[],int nLen)
{
int m=(nLen-1)/2; /* 计算10个数需要循环几次,因为是两两调换第一个数组是x[0]故应该是int(9/2) */
int temp,i,j; /* 建立零时变量temp用于每次交换处理时零时存储x的值 */
//我简单说下交换的算法
//1.计算出需要交换的两个数的下标
//2.用一个临时变量存放位置在前的数
//3.将位置在前的数替换为位置在后的数
//4.将临时变量中的数放入位置在后的数中
for (i=0;i<=m;i++)
{
j=nLen-i-1;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
/* 次题需要注意的是:这里由于a[10]和x[10]是共同享内存地址位的所以进行交换后a[10]的实际值也就发生了改变 */
|