删除整形数组中最小值(C语言)
请编写一道程序,该程序的功能是找出并且删除一维整形数组a[100]中的最小值元素.要求如下:
1.数组个元素通过键盘输入获得初始值.
2. 所有对数组元素的引用必须通过指针
完成
#include <stdio.h>
#include <limits.h> // 包含极值宏定义
// 1 输入并查找最小值 2.删除最小值 3.输出删除后的效果
int main () {
int a[100], *p, i = 0;
int min = INT_MAX, min_sub; // min 存储最小值, min_sub存储最小值下标
p = a; // 指针指向数组
do {
printf("请输入第%d个元素:", i + 1);
scanf("%d", p + i);
if (*(p + i) < min && *(p + i) != -1) {
min = *(p + i); // 存储最小值以及最小值下标
min_sub = i;
}
} while (*(p + i++) != -1);
// 删除最小值(使用覆盖的方法)
for (int j = min_sub + 1; j < i; j++) {
*(p + j - 1) = *(p + j); // 后面元素依次往前挪进行覆盖
}
// 输出验证
for (int j = 0; j < i - 1; j++) {
printf("%d\t\n", *(p + j));
}
return 0;
}