首页 > 技术文章 > 前一半元素与后一半元素交换

abtious 2017-03-18 09:05 原文

#include<stdio.h>// 定义头文件,预处理命令 
int main()//定义主函数 
{void cha(int *x,int n);//函数声明 
int i;//定义整型变量i 
int a[6];//定义整型数组 
int*p;//定义指向整型变量的指针变量p 
p=a;//将整型数组首地址赋值给指针变量p,指针变量p指向数组 
printf("输入6个数组元素:\n");//打印“输入6个数组元素 :”字样 
for(i=0;i<6;i++,p++)//用for循环使p从p变到p+5 , 用i值的限制p值的循环次数 
scanf("%d,",p);//输入数组元素的六个值 
p=a;//将p的值再次赋值为a ,因为p的值刚才变成p+5 
cha(p,6);//调用cha函数 
for(i=0;i<6;i++,p++)//用 for循环输出经函数变换后的数组元素 ,用指针实现数组的遍历 
printf("%d,",*p);//打印数组元素 
return 0;//返回值类型为整型 
}
void cha(int *x,int n)//定义cha函数 
{int i,j,mid;//定义局部变量i,j,mid 
for(i=0;i<(n/2);i++)//用for循环将i的值从i=0变到i=(n/2)-1 
{
j=i+(n/2);//j赋值为i+(n/2) 
mid=*(x+i);//将x+i所指向的元素的值赋值给变量mid 
*(x+i)=*(x+j);//x+j所指向的元素赋值给x+i所指向的元素 
*(x+j)=mid;//最后将变量mid的值给x+j所指向的元素 
}
}

 

小结

一、我编的程序运行内容是先输入6个数组元素,然后将6个数组元素的前一半元素和后一半元素位置调换。

二、错误(1)编程时定义函数后,在引用函数时前面加上了函数的类型,因为看不懂错误提示导致很长时间没找出错误,不过我不能理解为啥不能加函数类型。看上去好像没啥错误

错误(2)我一开始将11行写的p=a;放到12行下面,因为在调用函数时用到p的值,而P值已经不是初始值,导致程序能运行,但答案不对。

三、(1)通过这次编程我懂得了要养成良好的编程习惯,避免一些小错误。

(2)要深刻理解语句的意义,不能模糊猜测,有时候能读懂语句,但自己敲不出代码。

推荐阅读