指针练习之最值问题
利用指针完成一个C程序:要求输入n个整数构成一个序列,搜索这一序列的最大/最小值及该值在序列中的位置。
约定:
1. 首先输入元素个数,如果元素个数非法,则输出error后退出程序(error后不接回车或换行等符号)。
2. 然后依次输入各元素,以空格分割
3. 输出中所有标点符号都为英文符号
4. 目标元素在序列中的位置从1开始计算
样例输入:
6
145 23 1 0 234 99
样例输出:
max:234,position:5
min:0,position:4
注意:以上输出后都有换行符,除此之外,任何多余输出皆视为错误。
#include<stdio.h>
int main() {
int a[50], * P = a, i, n;
scanf_s("%d", &n);
if (n <= 0) {
printf("error");
}
else {
for (i = 0;i < n;i++) {
scanf_s("%d", P + i);
}
int temp = *P, temp2 = *P, k = 1, k2 = 1;
for (i = 0;i < n;i++) {
if (*(P + i) > temp) {
k = 1;
temp = *(P + i);
k += i;
}
}
for (i = 0;i < n;i++) {
if (*(P + i) < temp2) {
k2 = 1;
temp2 = *(P + i);
k2 += i;
}
}
printf("max:%d,position:%d\nmin:%d,position:%d\n", temp, k, temp2, k2);
}
return 0;
}