萌新写题第十二天
本文仅供参考!
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));
}
运行结果: