【问题描述】 从键盘输入不超过20个整数,组成顺序表。查找顺序表中是否存在重复元素,如果存在将其删除。输出去重后的顺序表和元素个数。 【输入说明】 从键盘输入以逗号分隔的整数序列。 【输出说明】 输出元素个数和元素。 【输入样例】 1,2,3,4,5,6,6,7,8,9 【输出样例】 There are 9 elements in the array. They are 1,2,3,4,5,6,7,8,9. 【输入样例】 2,3,4,5,4,3,2,1 【输出样例】 There are 1 elements in the array. They are 5. (注:不用处理语法错误)。给出c语言代码
时间: 2023-09-22 07:06:48 浏览: 97
以下是使用C语言实现上述问题的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main() {
int arr[20];
int size = 0;
char input[100];
// 读取数列
printf("请输入以逗号分隔的整数序列:\n");
fgets(input, sizeof(input), stdin);
// 解析数列
int i = 0;
char *token = strtok(input, ",");
while (token != NULL) {
arr[i++] = atoi(token);
token = strtok(NULL, ",");
}
size = i;
// 去重操作
bool visited[20] = {false};
int uniqueArr[20];
int uniqueSize = 0;
for (i = 0; i < size; i++) {
if (!visited[i]) {
uniqueArr[uniqueSize++] = arr[i];
for (int j = i + 1; j < size; j++) {
if (arr[j] == arr[i]) {
visited[j] = true;
}
}
}
}
// 输出结果
printf("There are %d elements in the array.\n", uniqueSize);
printf("They are ");
for (i = 0; i < uniqueSize; i++) {
printf("%d", uniqueArr[i]);
if (i != uniqueSize - 1) {
printf(",");
}
}
printf(".\n");
return 0;
}
```
你可以将这段代码保存为一个文件(例如`main.c`),使用C编译器进行编译运行。输入整数序列后,程序将输出去重后的顺序表和元素个数。希望对你有帮助!
阅读全文