指针编程(1)

 

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。编写一函数实现上述功能,在主函数中输入n 个整数,并输出调整后的n个数。

思路一:将这n个数存放在一个数组中,利用指针数组指向每一个数组元素,再调整位置。

 1 #include <stdio.h>
 2 
 3 /**
 4  *num[]:输入的数; 
 5  *n:输入数的个数; 
 6  *m:调前数的个数.
 7  */ 
 8 void move(int num[], int n, int m)
 9 {
10     int *p[n], *b[n];
11     int i;
12     
13     for(i = 0; i < n; i++)
14     {
15         p[i] = &num[i];
16     }
17     
18     for(i = 0; i < m; i++)
19     {
20         b[i] = p[i+n-m];
21     }
22     for(i = m; i < n; i++)
23     {
24         b[i] = p[i-m];
25     }
26 
27     printf("Now,they are:\n");
28     for(i = 0; i < n; i++)
29     {
30         printf("%d  ",*b[i]);
31     }
32 }
33 
34 int main()
35 {
36     int n, m, i;
37     
38     printf("How many numbers:\n");
39     scanf("%d",&n);
40     
41     int num[n];
42     
43     printf("Please input these %d numbers:\n", n);
44     for(i = 0; i < n; i++)
45     {
46         scanf("%d", &num[i]);
47     }
48     
49     printf("How many places you want to move:\n");
50     scanf("%d", &m);
51     
52     move(num, n, m);
53     
54     return 0;
55 }

 思路二:将这n个数存放在一个数组中,用指针指向该数组,利用指针调整数组中元素的位置。

#include <stdio.h>

/**
 *array[]:输入的数; 
 *n:输入数的个数; 
 *m:调前数的个数.
 */ 
void move(int array[], int n, int m)
{
    int *p, array_end;
    array_end = *(array+n-1);
    for(p = array+n-1; p > array; p--)
    {
        *p = *(p-1);
    }
    *array = array_end;
    m--;
    if(m > 0) move(array, n, m);
}

int main() { int n, m, i; printf("How many numbers:\n"); scanf("%d",&n); int num[n]; printf("Please input these %d numbers:\n", n); for(i = 0; i < n; i++) { scanf("%d", &num[i]); } printf("How many places you want to move:\n"); scanf("%d", &m); move(num, n, m); printf("Now,they are:\n"); for(i = 0; i < n; i++) { printf("%d ",num[i]); } return 0; }

 或者不用函数的递归有:

 1 void move(int array[], int n, int m)
 2 {
 3     int *p, array_end, i;
 4     for(i = 0; i < m; i++)
 5     {
 6         array_end = *(array+n-1);
 7         for(p = array+n-1; p > array; p--)
 8         {
 9             *p = *(p-1);
10         }
11         *array = array_end;
12     }
13 }

 

posted @ 2017-09-27 10:04  捡了个贝壳  阅读(262)  评论(0编辑  收藏  举报