输入一行数,使这行数逆序输出来。
#include <stdio.h>
void main()
{
void inv(int *x,int n); /*声明一个函数,形参为指针变量,int n可以理解为指针指向的地址的个数。*/
int i,a[10] = {3,7,9,11,0,6,7,5,4,2};
printf("The original array ;\n");
for( i = 0 ; i < 10 ; i++ ) /*利用循环语句将数组a的值打印出来。*/
{
printf("%d",a[i]);
}
printf("\n");
inv(a,10); /*调用函数,改变数组元素的次序。*/
printf("The array has inverted :\n");
for( i = 0 ; i < 10 ; i++ ) /*再次使用循环语句将函数改变的数组元素再次打印出来*/
{
printf("%d",a[i]);
}
printf("\n");
}
void inv(int *x,int n) /*定义函数,并将调用函数的实参数组名a(即数组a的首地址),以及元素个数传递给形参 指针变量x。*/
{
int *p,*i,*j,temp,m = ( n-1)/2;
i = x; /*将指针变量x的地址传送给指针变量i,下同*/
j = x+n-1; /*将数组a的最后一个地址传送给j,因为n = 10,j=x+9(即表示最后一个地址)。*/
p = x+m;
for(; i<=p;i++,j--)
{
temp = *i; /*将指针变量i的值赋给temp。*/
*i = *j;
*j = temp;
}
}
本函数为顺序结构,先输入,在调用函数改变顺序,再讲改变后的结果输出,最后在定义调用的函数,可以提供一种写代码的思路。