C语言的数组与字符串练习题4
16. 数组元素去重
题目描述:
编写一个C程序,输入一组整数存储在数组中,去除数组中的重复元素,并输出去重后的数组。
解题思路:
遍历数组,对于每个元素,检查它之前是否已经存在相同的元素。如果不存在,则将其保留;否则,跳过。可以使用一个辅助数组来存储去重后的元素。
程序流程如下:
- 声明两个数组,一个用于存储原始数据,另一个用于存储去重后的数据。
- 提示用户输入数组的大小和元素。
- 使用嵌套
for
循环检查重复元素。 - 将不重复的元素存储到辅助数组中。
- 输出去重后的数组。
详细代码:
#include <stdio.h>int main() {int arr[100], unique[100];int n, uniqueCount = 0;int isDuplicate;// 提示用户输入数组大小printf("请输入数组的大小 (最多100个元素): ");scanf("%d", &n);// 输入数组元素printf("请输入 %d 个整数:\n", n);for(int i = 0; i < n; i++) {scanf("%d", &arr[i]);}// 去重for(int i = 0; i < n; i++) {isDuplicate = 0;for(int j = 0; j < uniqueCount; j++) {if(arr[i] == unique[j]) {isDuplicate = 1;break;}}if(!isDuplicate) {unique[uniqueCount++] = arr[i];}}// 输出去重后的数组printf("去重后的数组元素为:\n");for(int i = 0; i < uniqueCount; i++) {printf("unique[%d] = %d\n", i, unique[i]);}return 0;
}
代码注释:
int arr[100], unique[100];
:声明两个数组,一个用于存储原始数据,另一个用于存储去重后的数据。int count = 0;
:声明一个变量用于记录去重后的元素数量。for(int i = 0; i < n; i++)
:遍历原始数组的每个元素。- 内层
for(int j = 0; j < uniqueCount; j++)
:检查当前元素是否已经存在于unique
数组中。 if(arr[i] == unique[j])
:如果找到重复元素,设置isDuplicate
为1,并跳出内层循环。if(!isDuplicate)
:如果元素不重复,添加到unique
数组中,并增加uniqueCount
。for(int i = 0; i < uniqueCount; i++)
:输出去重后的数组元素。
17. 查找数组中的特定元素
题目描述:
编写一个C程序,输入一组整数存储在数组中,输入一个目标值,查找目标值在数组中的位置并输出。如果不存在,输出提示信息。
解题思路:
遍历数组,比较每个元素是否等于目标值。如果找到,则记录其位置并输出。如果遍历完数组后未找到目标值,输出不存在的提示。
程序流程如下:
- 声明一个数组。
- 提示用户输入数组的大小和元素。
- 提示用户输入目标值。
- 使用
for
循环遍历数组,查找目标值。 - 如果找到,输出其位置;否则,输出不存在的提示。
详细代码: