黑马程序员——C语言基础——指针编程练习题
2015-06-01 23:07
309 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
今天复习了一下指针的相关知识,并且在网上搜了一道小的编程练习题,大概题意如下:
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
大概的思路流程如下:
1.首先定义一个数组和M、N两个任意整数变量。
2.声明一个函数,本题使用指针解决问题,所以参数为两个指针变量,无返回值。
3.循环为数组初始化序号。
4.对数组进行交换操作,分为两步。
1)将数组末尾三项交换至数组最前三项。
2)将交换后位于末尾的三项(原数组最前三项),提前至第M项之后。
5.循环输出结果。
以下是具体的代码实现:
打印结果为:
顺利实现。
今天复习了一下指针的相关知识,并且在网上搜了一道小的编程练习题,大概题意如下:
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
大概的思路流程如下:
1.首先定义一个数组和M、N两个任意整数变量。
2.声明一个函数,本题使用指针解决问题,所以参数为两个指针变量,无返回值。
3.循环为数组初始化序号。
4.对数组进行交换操作,分为两步。
1)将数组末尾三项交换至数组最前三项。
2)将交换后位于末尾的三项(原数组最前三项),提前至第M项之后。
5.循环输出结果。
以下是具体的代码实现:
#include <stdio.h> #define N 10 #define M 3 void swap(int *x, int *y){ int *temp; temp = *x; *x = *y; *y = temp; } int main(int argc, const char * argv[]) { //定义数组 int array ; printf("未改变数组为:\t"); //循环为数组赋值 for (int i = 0; i < N; i++) { array[i] = i + 1; printf("%d\t",array[i]); } //循环M次,对数组进行操作 for (int i = 0; i < M; i++) { //首先将数组最后三个数组项放到数组前三位。 swap(&array[N - i - 1], &array[M - i - 1]); //然后将变更后的数组的最后三位,放在仅此于前M个项之后 swap(&array[N - i - 1], &array[(M - i + M - 1)]); } //最后输出操作之后的数组 printf("\n改变后的数组为:"); for (int i = 0; i < N; i++) { printf("%d\t",array[i]); } }
打印结果为:
未改变数组为: 1 2 3 4 5 6 7 8 9 10 改变后的数组为: 8 9 10 1 2 3 7 4 5 6
顺利实现。
相关文章推荐
- private:c/c++ 我的一些容易出错的地方 =>持续更新
- C++ 不用 < > 与 : ?运算符判断 a,b大小
- c++学习的50条忠告
- c语言学习感受
- [Emacs学习笔记]使用Emacs写c语言并编译运行
- C++ 深拷贝 与 浅拷贝
- C/C++连接MySql数据库
- Effective C++ 之 Item 5:了解C++默默编写并调用哪些函数
- c语言结构体自引用和互引用原理及示例程序
- dev c++无法调试的问题
- c++中的几个“常”
- C++ const和#define区别
- C/C++库文件的生成与使用
- c++的auto_ptr
- C语言的代码内存布局详解
- c++ --> 变量、常量与运算符
- C语言初学者编程规范—命名规则
- 转 Rose 如何生成Ansi C++ 代码
- 12个有趣的C语言面试题
- Logistic回归模型的Python及C++实现