黑马程序员——C语言基础——指针编程练习题

来源:互联网 发布:socket编写数据库脚本 编辑:程序博客网 时间:2024/06/07 05:53
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

今天复习了一下指针的相关知识,并且在网上搜了一道小的编程练习题,大概题意如下:

n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。

大概的思路流程如下:

1.首先定义一个数组和M、N两个任意整数变量。

2.声明一个函数,本题使用指针解决问题,所以参数为两个指针变量,无返回值。

3.循环为数组初始化序号。

4.对数组进行交换操作,分为两步。

1)将数组末尾三项交换至数组最前三项。

2)将交换后位于末尾的三项(原数组最前三项),提前至第M项之后。

5.循环输出结果。


以下是具体的代码实现:

#include <stdio.h>#define N 10#define M 3void swap(int *x, int *y){    int *temp;    temp = *x;    *x = *y;    *y = temp;    }int main(int argc, const char * argv[]) {    //定义数组    int array[N];    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]);    }}

打印结果为:

未改变数组为:12345678910改变后的数组为:  89101237456


顺利实现。

0 0
原创粉丝点击