萌新写题第十二天

本文仅供参考!

2.输入n个整数,将其逆序输出。要求用指针实现

代码:

#include<stdio.h>

 

int main()

{

       int n;

       printf("需要输入几个整数?");

       scanf("%d", &n);

       printf("\n");

       int m[n], m1[n], i, j;

       int *ptr = m, *pre = m1;

       printf("请输入整数:");

       for(i = 0; i < n; i++)

              scanf("%d", ptr + i);

       for(i = (n - 1), j = 0; -1 < i; i--, j++)

              *(pre + j) = *(ptr + i);

       for(i = 0; i < n; i++)

         printf(" %d ", *(pre + i));

       printf("\n");

      

}

运行结果:

萌新写题第十二天

3.输入10个正整数,输出其支撑数——比左边和右边相邻的数都大(用指针实现)

代码:

#include<stdio.h>

 

int main()

{

       int a[10], b[10], i, j, n = 0;

       int *ptr = a,*pb = b;

      

       printf("请输入数据:");

for(i = 0; i < 10; i++)

         scanf("%d", ptr + i);

      

//    for(i = 0; i < 10; i++)

         for(j = 1; j < 9; j++)

              if(*(ptr + j + 1) < *(ptr + j) && *(ptr + j) > *(ptr + j - 1))

              {

                  *(pb + n) = *(ptr + j);

                     n++;

              }

 

         printf("支撑数:");

         for(i = 0; i < n; i++)

              printf(" %d ", *(pb + i));

         printf("\n");

}

运行结果:

萌新写题第十二天

4.看黄山问题:黄山不是一座山而是一片山,假设这些山排成一排,先输入一个n表示有n坐山,然后输入n个数表示n座山对应的高度,那么从左向右看,有些山能看到,有些山看不到,统计能看到几座山并输出(用指针实现)

  代码:

#include<stdio.h>

 

int main()

{

       int n, i, j;

       printf("请输入黄山的数量:");

       scanf("%d", &n);

       int a[n], *ptr = a;

       int b[n], *pre = b;

       printf("请分别输入黄山的高度:\n");

       for(i = 0; i < n; i++)

       {

              printf("第%d座山:", i+1);

              scanf("%d", ptr + i);

}

       int max = -1, sum = 0;

      

       for(i = 0; i < n; i++)

         if(max < *(ptr + i))

         {

              max = *(ptr + i);

              *(pre + sum) = max;

              sum += 1;

         }

       printf("可以看见的山有%d座。\n", sum);

       for(j = 0; j < sum; j++)

         printf("第%d座: %d\n", j+1, *(pre + j));

}

运行结果:

萌新写题第十二天