180、编写一个程序,读取100个整数并将它们存储在一个数组中。然后,程序应将重复的值替换为 -99。使用指针算术来处理数组。例如,如果数组是 {5, 5, 5, 5, 5},程序应将其变为 {5, -99, -99, -99, -99};如果是 {-2, 3, -2, 50, 3},应将其变为 {-2, 3, -99, 50, -99}。
#include <stdio.h>
#define SIZE 100
int main(void) {
int arr[SIZE];
int *p, *q;
// 读取100个整数
for (p = arr; p < arr + SIZE; p++) {
printf("Enter an integer: ");
scanf("%d", p);
}
// 替换重复值
for (p = arr; p < arr + SIZE; p++) {
for (q = p + 1; q < arr + SIZE; q++) {
if (*q == *p) {
*q = -99;
}
}
}
// 输出结果
for (p = arr; p < arr + SIZE; p++) {
printf("%d ", *p);
}
printf("\n");
return 0;
}
181、使用指针 ptr 完成以下程序,将整数读入并存储到数组 arr 中,限制条件是仅当输入的数字小于最后存储的数字时才进行存储。值 -1 不应存储在数组中。如果用户输入 0 或者数组没有剩余空间,数字的插入应终止,程序应显示数组中存储了多少个数字。程序应按以下方式提示用户输入数字:输入数字_1: 输入数字_2: … 程序框架如下:int main(void) { int *ptr, arr[100];… }
#include <stdio.h>
#define SIZE 100
int main(void) {
int *ptr, arr[SIZE];
ptr = arr;
int num, last_num = 999999; // 初始化为一个较大的值
int count = 0;
int i = 1;
while (1) {
printf("Enter number_%d: ", i);
scanf("%d", &num);
if (num == 0 || ptr - arr == SIZE) {
break;
}
if (num != -1 && num < last_num) {
*ptr = num;
last_num = num;
ptr++;
count++;
}
i++;
}
printf("%d numbers were stored in the array.", count);
return 0;
}
182、使用迭代循环完成以下程序,以逆序显示数组元素。不允许使用数字(例如,不能写成 arr[0]、p[1] 或 p + 2)。程序框架如下:int main(void) { int *p, arr[] = {10, 20, 30, 40};… }
以下是完成该需求的代码:
#include <stdio.h>
int main(void) {
int *p, arr[] = {10, 20, 30, 40};
p = arr;
// 移动指针到数组末尾
while (*p) {
p++;
}
p--; // 回退一个位置,指向最后一个元素
// 逆序输出数组元素
while (p >= arr) {
printf("%d\n", *p);
p--;
}
return 0;
}
上述代码先将指针 p 移动到数组末尾,然后回退一个位置指向最后一个元素,接着通过循环逆序输出数组元素。

最低0.47元/天 解锁文章
1406

被折叠的 条评论
为什么被折叠?



