|
发表于 2023-5-20 16:16:18
|
显示全部楼层
以下是针对您问题的C语言程序:
- #include <stdio.h>
- void print_menu() {
- printf("$******************功能菜单***********************$\n");
- printf("$ 0. 退出 $\n");
- printf("$ 1. 计算数组中10个数之和并输出 $\n");
- printf("$ 2. 计算数组中10个数的平均数并输出 $\n");
- printf("$ 3. 数组从大到小排序输出,需保留原数组 $\n");
- printf("$ 4. 数组从小到大排序输出,需保留原数组 $\n");
- printf("$ 5. 计算1!+2!+..+(数组中最小数)!之和并输出 $\n");
- printf("$**************************************************$\n");
- printf("请选择您的操作(0-5):\n");
- }
- int sum(int arr[], int n) {
- int total = 0;
- for (int i = 0; i < n; i++) {
- total += arr[i];
- }
- return total;
- }
- float avg(int arr[], int n) {
- return sum(arr, n) / (float) n;
- }
- void sort(int arr[], int n, int asc) {
- int temp;
- for (int i = 0; i < n - 1; i++) {
- for (int j = i + 1; j < n; j++) {
- if ((asc && arr[i] > arr[j]) || (!asc && arr[i] < arr[j])) {
- temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
- }
- }
- }
- }
- int factorial(int n) {
- int total = 1;
- for (int i = 1; i <= n; i++) {
- total *= i;
- }
- return total;
- }
- int main() {
- int arr[10];
- int arrCopy[10];
- int option;
- printf("请输入10个整数:\n");
- for (int i = 0; i < 10; i++) {
- scanf("%d", &arr[i]);
- arrCopy[i] = arr[i];
- }
- while (1) {
- print_menu();
- scanf("%d", &option);
-
- switch (option) {
- case 0:
- return 0;
- case 1:
- printf("数组中10个数之和: %d\n", sum(arr, 10));
- break;
- case 2:
- printf("数组中10个数的平均数: %.2f\n", avg(arr, 10));
- break;
- case 3:
- sort(arrCopy, 10, 0);
- printf("数组从大到小排序: ");
- for (int i = 0; i < 10; i++) printf("%d ", arrCopy[i]);
- printf("\n");
- break;
- case 4:
- sort(arrCopy, 10, 1);
- printf("数组从小到大排序: ");
- for (int i = 0; i < 10; i++) printf("%d ", arrCopy[i]);
- printf("\n");
- break;
- case 5: {
- sort(arrCopy, 10, 1);
- int min = arrCopy[0];
- int total = 0;
- for (int i = 1; i <= min; i++) {
- total += factorial(i);
- }
- printf("
- 1!+2!+..+%d!之和: %d\n", min, total);
- break;
- }
- default:
- printf("输入错误,请重新输入\n");
- break;
- }
- for (int i = 0; i < 10; i++) {
- arrCopy[i] = arr[i];
- }
- }
- return 0;
- }
复制代码
这个程序首先从用户处获取10个整数并存储在数组中,然后循环输出功能菜单并等待用户输入选项。根据用户的选择,执行相应的功能,并打印结果。如果用户选择退出,程序将结束运行。在排序和计算阶乘和的操作中,我们都使用了一个副本数组,以防改变原始数组的顺序。
请注意,这个程序没有异常处理,因此,如果输入的不是整数或者超出选项范围,程序可能会出现错误。为了使程序更稳定,你可能需要添加一些异常处理的代码。 |
|