### C语言一维数组顺序查找练习题
以下是几个关于C语言中一维数组顺序查找的经典习题:
#### 练习1:查找目标值的位置
编写一个程序,输入若干整数存入一维数组 `arr` 中,并指定一个目标值 `target`。通过顺序查找的方式,在数组中找到该目标值并返回其索引位置;如果未找到,则输出提示信息。
```c
#include <stdio.h>
int main() {
int arr[10], target, foundIndex = -1;
printf("请输入10个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
printf("请输入要查找的目标值:");
scanf("%d", &target);
for (int i = 0; i < 10; i++) {
if (arr[i] == target) {
foundIndex = i;
break;
}
}
if (foundIndex != -1) {
printf("目标值%d位于索引位置:%d\n", target, foundIndex)[^3];
} else {
printf("目标值%d不在数组中。\n", target)[^4];
}
return 0;
}
```
---
#### 练习2:统计某个数值出现次数
给定一组数据存储在一维数组中,要求用户输入一个特定的数值,利用顺序查找的方法统计这个数值在数组中的总出现次数。
```c
#include <stdio.h>
int main() {
int arr[15], valueToCount, count = 0;
printf("请输入15个整数:\n");
for (int i = 0; i < 15; i++) {
scanf("%d", &arr[i]);
}
printf("请输入要统计的数值:");
scanf("%d", &valueToCount);
for (int i = 0; i < 15; i++) {
if (arr[i] == valueToCount) {
count++;
}
}
printf("数值%d出现了%d次。\n", valueToCount, count)[^5];
return 0;
}
```
---
#### 练习3:删除第一个匹配项
创建一个函数实现从一维数组中移除第一次出现的目标值的功能。具体来说,先让用户定义一个数组以及目标值,再调用此函数完成操作后打印修改后的数组。
```c
#include <stdio.h>
#define MAX_SIZE 20
void removeFirstOccurrence(int array[], int size, int targetValue, int* newSize) {
int indexToRemove = -1;
for (int i = 0; i < size && indexToRemove == -1; ++i) {
if (array[i] == targetValue) {
indexToRemove = i;
}
}
if (indexToRemove >= 0) {
for (int j = indexToRemove; j < (*newSize)-1; ++j) {
array[j] = array[j + 1];
}
--(*newSize);
}
}
int main() {
int arr[MAX_SIZE], originalSize, newValueSize = 0, targetVal;
printf("请输入最多%u个整数(以负数结束):\n", MAX_SIZE);
for (originalSize = 0; originalSize < MAX_SIZE;) {
scanf("%d", &arr[originalSize]);
if (arr[originalSize++] < 0) break;
}
printf("请输入想要删除的第一个值:");
scanf("%d", &targetVal);
newValueSize = originalSize;
removeFirstOccurrence(arr, originalSize, targetVal, &newValueSize);
printf("更新后的数组为:\n");
for (int k = 0; k < newValueSize; ++k) {
printf("%d ", arr[k]);
}
printf("\n");
return 0;
}
```
---
#### 练习4:寻找最大最小值及其下标
设计一段代码来找出一维数组的最大值和最小值所在的具体位置(即它们各自的索引)。假设所有元素均不相同以便简化逻辑处理过程。
```c
#include <stdio.h>
int main() {
int numbers[8], maxIdx = 0, minIdx = 0;
printf("请输入8个不同的整数:\n");
for (int idx = 0; idx < 8; ++idx) {
scanf("%d", &numbers[idx]);
if (numbers[idx] > numbers[maxIdx]) {
maxIdx = idx;
}
if (numbers[idx] < numbers[minIdx]) {
minIdx = idx;
}
}
printf("最大值=%d, 它的索引是=%d.\n", numbers[maxIdx], maxIdx)[^6];
printf("最小值=%d, 它的索引是=%d.\n", numbers[minIdx], minIdx)[^7];
return 0;
}
```
---
###