C语言设计程序写出完整代码 1.可供用户输入若干个整数(可能有重复数); 2.设计文本菜单可供用户进行功能选择; 3.实现数字排序、删除重复数; 4.求取最大、最小值。
时间: 2024-10-08 15:23:32 浏览: 28
60套C语言小游戏软件设计源代码(可运行,可供学习设计参考).zip
在C语言中,你可以通过以下步骤编写一个满足上述要求的简单程序:
```c
#include <stdio.h>
#include <stdlib.h> // 包含用于动态内存分配的头文件
#include <string.h> // 包含字符串处理函数
#define MAX_NUMS 100 // 设置可以存储的最大整数数量
// 功能选项枚举
typedef enum {
DISPLAY menu_display,
SORT,
REMOVE_DUPLICATES,
FIND_MIN_MAX,
EXIT
} MenuOptions;
// 结构体来存储整数和是否已存在
typedef struct {
int value;
char exists;
} IntItem;
void display_numbers(int* nums, int count) {
for (int i = 0; i < count; i++) {
printf("%d ", nums[i]);
}
}
void sort_numbers(int* nums, int count) {
qsort(nums, count, sizeof(int), compare_ints);
}
int compare_ints(const void* a, const void* b) {
return (*(const IntItem*)a).value - (*(const IntItem*)b).value;
}
void remove_duplicates(int* nums, int* count) {
int unique_count = 0;
for (int i = 0; i < *count; i++) {
if (!(*(nums + i)).exists) {
*(nums + unique_count++) = *(nums + i);
(*(nums + i)).exists = 1;
}
}
*count = unique_count;
}
int find_min_max(int* nums, int count) {
int min = nums[0], max = nums[0];
for (int i = 1; i < count; i++) {
if (nums[i] < min) {
min = nums[i];
} else if (nums[i] > max) {
max = nums[i];
}
}
return min, max;
}
void main() {
int nums[MAX_NUMS] = {0};
int num_count = 0;
int choice;
while (1) {
printf("\nMenu:\n");
printf("1. Display numbers\n");
printf("2. Sort numbers\n");
printf("3. Remove duplicates\n");
printf("4. Find min and max\n");
printf("5. Exit\n");
scanf("%d", &choice);
switch (choice) {
case DISPLAY:
display_numbers(nums, num_count);
break;
case SORT:
sort_numbers(nums, &num_count);
break;
case REMOVE_DUPLICATES:
remove_duplicates(nums, &num_count);
break;
case FIND_MIN_MAX:
int min, max;
min = max = find_min_max(nums, num_count);
printf("Minimum: %d, Maximum: %d\n", min, max);
break;
case EXIT:
printf("Exiting program...\n");
exit(0); // 程序退出
default:
printf("Invalid choice. Please try again.\n");
break;
}
printf("Enter integers (type 'end' to finish): ");
while (scanf("%d", &nums[num_count]) == 1 && strcmp(nums[num_count] ? "end" : "", "") != 0) {
nums[num_count].exists = 0; // 假设输入的都是新数
num_count++;
}
// 清理输入缓冲区
while (getchar() != '\n');
}
}
```
这个程序首先定义了几个基本结构和函数,然后在`main`函数中创建了一个循环,提供菜单让用户选择操作。用户可以选择显示当前数值、排序、移除重复数,以及查找最大值和最小值。如果用户输入'end',则停止输入并退出程序。
阅读全文