C语言 逆序一个数组的代码实现
2015-07-08 21:38
351 查看
//这是一道经典的面试题
#include <stdio.h>
/**
* 逆序数组用for
*
* @param a 数组名
* @param len 数组长度
*/
void nixuArr(int a[],int len){
//定义一个指数组指针
int *p=a;
//定义下标并且实现转换
for (int i=0,j=len-1; i<j; i++,j--) {
int temp;
temp =*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
/**
* 逆序数组用wile
*
* @param a 数组名
* @param len 数组长度
*/
void nixuArr2(int a[],int len){
//定义一个数组指针
int *p=a;
//定义下标
int j=len-1;
int i=0;
while (i<j) {
//实现下标转换
int temp;
temp = *(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
i++,j--;
}
}
int main(int argc, const char * argv[]) {
// 输入一个数组
int arr[10]={1,2,3,4,5,6,7,8,9,10};
//带入函数
nixuArr(arr,10);
//遍历数组并且打印
for (int i=0; i<10; i++) {
printf("%d\t",arr);
}
return 0;
}
#include <stdio.h>
/**
* 逆序数组用for
*
* @param a 数组名
* @param len 数组长度
*/
void nixuArr(int a[],int len){
//定义一个指数组指针
int *p=a;
//定义下标并且实现转换
for (int i=0,j=len-1; i<j; i++,j--) {
int temp;
temp =*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
/**
* 逆序数组用wile
*
* @param a 数组名
* @param len 数组长度
*/
void nixuArr2(int a[],int len){
//定义一个数组指针
int *p=a;
//定义下标
int j=len-1;
int i=0;
while (i<j) {
//实现下标转换
int temp;
temp = *(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
i++,j--;
}
}
int main(int argc, const char * argv[]) {
// 输入一个数组
int arr[10]={1,2,3,4,5,6,7,8,9,10};
//带入函数
nixuArr(arr,10);
//遍历数组并且打印
for (int i=0; i<10; i++) {
printf("%d\t",arr);
}
return 0;
}
相关文章推荐
- C语言 if语句的使用注意总结
- LeetCode-Two Sum-解题报告
- LeetCode-Add Two Numbers-解题报告
- 堆栈帧的组织——C/C++内存管理必须掌握
- LeetCode-Median of Two Sorted Arrays-解题报告
- LeetCode-Reverse Integer-解题报告
- C语言 switch语句的使用总结
- LeetCode-String to Integer (atoi) -解题报告
- C语言 用for语句老实现打印九九乘法口诀表
- Armadillo C++ linear algebra library 学习笔记(2)——矩阵的基本操作(1)
- C++常用类 shared_ptr
- C语言 if语句的介绍和使用
- C语言中的static
- LeetCode-Permutations-解题报告
- C语言的32个保留字
- LeetCode-Pow(x, n)-解题报告
- 浙江工业大学简易绩点计算器c++版
- C++ cin编程错误
- Armadillo C++ linear algebra library 学习笔记(1)——简介与安装
- LeetCode-Sqrt(x)-解题报告