用c语言写出用户输入多个正整数,进行排序后输出,事先不知道用户输入正整数的个数,可以给一个提示结束输入,有异常处理机制,例如当输入字母时,提示用户重新输入
时间: 2023-10-07 20:09:06 浏览: 62
下面是一个用C语言实现的用户输入多个正整数排序的程序,包括了异常处理机制:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX_SIZE 100
int main()
{
int numbers[MAX_SIZE];
int count = 0;
char input[10];
int i, j;
// 循环读取用户输入的数字,直到用户输入结束
while (1) {
printf("请输入一个正整数(输入q或其他字母结束输入):");
scanf("%s", input);
if (isdigit(input[0])) {
numbers[count++] = atoi(input);
if (count >= MAX_SIZE) {
printf("输入的数字过多,只能处理前%d个\n", MAX_SIZE);
break;
}
} else {
printf("输入结束\n");
break;
}
}
// 对数字进行排序
for (i = 0; i < count - 1; i++) {
for (j = i + 1; j < count; j++) {
if (numbers[i] > numbers[j]) {
int temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
}
// 输出排序后的结果
printf("排序后的结果为:\n");
for (i = 0; i < count; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
```
程序中使用了一个 `while` 循环来读取用户输入的数字,当用户输入一个非数字字符时,程序会判断是否是输入结束,如果是,就跳出循环;否则提示用户重新输入。使用 `isdigit` 函数来判断输入的字符是否是数字,使用 `atoi` 函数将字符串转换为整数。
程序还设置了一个常量 `MAX_SIZE` 来限制用户输入的数字个数,防止用户输入过多的数字导致程序崩溃。
排序算法使用了一个简单的冒泡排序,对于小规模的数据集来说已经足够快了。
最后,程序输出排序后的结果。
阅读全文