C语言十个练习题

1、编写函效实现从键盘输入一个字符串,再将其逆序输出。2、编写函效求出10!的值并输出。
3、编写函数实现10个元素数组的平均值,并在主函数输出。
4、编写函数实现圆面积计算,并在主函效中输出结果。
5、编写函数实现圆柱体积计算,并在主函数输出结果。
6、编写函数实现冒泡法排序,要求采用数组作为函数参数实现。7、编写函数夹现选择法排序,要求采用数组作为函数参数实现。8、编写函数实现两个数据交换,要求采用指针作为函数参数实现。
9、编写函数实现3X3数组的最大值与最小值查找,并在主函数中输出。提示采用全局变
10、编写一个函效,实现对a、b、c3个整数按大小顺序,在主函数输出排序后的结果。
提示采用指针作为参数。
理解分析:

接下来对每个功能进行更加细致的讲解。

1. 逆序输出字符串:
   - 用户输入一个字符串。
   - 程序使用循环从字符串的最后一个字符开始,逐个打印字符,实现字符串的逆序输出。
   - 例如,如果用户输入字符串 "Hello",程序将从最后一个字符开始打印,输出 "olleH"。

2. 计算10的阶乘:
   - 阶乘是指从1到给定数之间所有整数的乘积。
   - 程序使用循环从1到10,依次累乘每个数字,得到10的阶乘的结果。
   - 例如,10的阶乘可以计算为 1 * 2 * 3 * ... * 10 = 3628800。

3. 计算数组平均值:
   - 用户输入10个整数。
   - 程序将输入的整数累加求和,然后除以10,得到数组的平均值。
   - 例如,如果用户输入的10个整数为 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],程序将计算 (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10) / 10 = 5.5。

4. 计算圆面积:
   - 用户输入圆的半径。
   - 程序使用给定的半径值计算圆的面积,并将结果输出。
   - 圆的面积计算公式为:面积 = π * 半径^2,其中π是一个常数,近似取3.14159。
   - 例如,如果用户输入半径为5,程序将计算面积为 3.14159 * 5^2 = 78.53975。

5. 计算圆柱体积:
   - 用户输入圆柱的半径和高度。
   - 程序使用给定的半径和高度值计算圆柱的体积,并将结果输出。
   - 圆柱的体积计算公式为:体积 = 圆面积 * 高度,其中圆面积可以使用前面提到的计算圆面积的方法得到。
   - 例如,如果用户输入半径为5,高度为10,程序将计算体积为 78.53975 * 10 = 785.3975。

6. 冒泡排序:
   - 用户输入一个整数数组的大小和元素。
   - 程序使用冒泡排序算法对数组进行排序,将数组中的元素按升序排列。
   - 冒泡排序的基本思想是通过多次遍历数组,每次比较相邻的两个元素,将较大的元素向后交换,直到整个数组按升序排列。
   - 例如,如果用户输入的数组为 [5, 2, 8, 1, 9],经过冒泡排序后,数组将变为 [1, 2, 5, 8, 9]。

7. 选择排序:
   - 用户输入一个整数数组的大小和元素。
   - 程序使用选择排序算法对数组进行排序,将数组中的元素按升序排列。
   - 选择排序的基本思想是通过多次遍历数组,每次找到最小的元素,然后将其放到已排序部分的末尾,直到整个数组按升序排列。
   - 例如,如果用户输入的数组为 [5, 2, 8, 1, 9],经过选择排序后,数组将变为 [1, 2, 5, 8, 9]。

8. 交换两个数:
   - 用户输入两个整数。
   - 程序使用指针来交换这两个整数的值,并将交换前后的值输出。
   - 通过使用指针,可以直接修改两个整数的值,而不需要使用中间变量。
   - 例如,如果用户输入的两个整数为3和5,程序将交换它们的值,并输出交换前后的结果为:原始值:3, 5;交换后的值:5, 3。

9. 查找数组的最大值和最小值:
   - 用户输入一个3x3的整数数组的元素。
   - 程序遍历整个数组,找到其中的最大值和最小值。
   - 通过比较每个元素与当前最大值和最小值,可以确定数组中的最大值和最小值。
   - 例如,如果用户输入的3x3数组为 [[1, 2, 3], [4, 5, 6], [7, 8, 9]],程序将找到最大值为9,最小值为1。

10. 对三个整数排序:
    - 用户输入三个整数。
    - 程序使用指针和条件判断来对这三个整数进行排序,将它们按升序排列。
    - 首先,程序比较第一个整数和第二个整数,如果第一个整数大于第二个整数,则交换它们的值。
    - 然后,程序比较第二个整数和第三个整数,如果第二个整数大于第三个整数,则交换它们的值。
    - 最后,程序再次比较第一个整数和第二个整数,确保它们的顺序是正确的。
    - 例如,如果用户输入的三个整数为5、2和8,程序将经过排序后输出为2、5和8。

#include <stdio.h>
#include <string.h>

// 1. 逆序输出字符串
void reverseString() {
    char str[100];
    printf("请输入字符串:");
    scanf("%s", str);

    printf("逆序输出字符串:");
    for (int i = strlen(str) - 1; i >= 0; i--) {
        printf("%c", str[i]);
    }
    printf("\n");
}

// 2. 计算10的阶乘
int factorial() {
    int n = 10;
    int result = 1;

    for (int i = 1; i <= n; i++) {
        result *= i;
    }

    return result;
}

// 3. 计算数组平均值
void calculateAverage() {
    int arr[10];
    int sum = 0;

    printf("请输入10个整数:");
    for (int i = 0; i < 10; i++) {
        scanf("%d", &arr[i]);
        sum += arr[i];
    }

    double average = (double)sum / 10;
    printf("平均值为:%.2f\n", average);
}

// 4. 计算圆面积
double calculateCircleArea(double radius) {
    return 3.14159 * radius * radius;
}

// 5. 计算圆柱体积
double calculateCylinderVolume(double radius, double height) {
    return 3.14159 * radius * radius * height;
}

// 6. 冒泡排序
void bubbleSort(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

// 7. 选择排序
void selectionSort(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        int minIndex = i;
        for (int j = i + 1; j < size; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        int temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
}

// 8. 交换两个数
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// 9. 查找数组的最大值和最小值
void findMinMax(int arr[3][3]) {
    int min = arr[0][0];
    int max = arr[0][0];

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (arr[i][j] < min) {
                min = arr[i][j];
            }
            if (arr[i][j] > max) {
                max = arr[i][j];
            }
        }
    }

    printf("最小值:%d\n", min);
    printf("最大值:%d\n", max);
}

// 10. 对三个整数排序
void sortThreeNumbers(int *a, int *b, int *c) {
    if (*a > *b) {
        swap(a, b);
    }
    if (*a > *c) {
        swap(a, c);
    }
    if (*b > *c) {
        swap(b, c);
    }
}

int main() {
    int choice;

    while (1) {
        printf("请选择功能:\n");
        printf("1. 逆序输出字符串\n");
        printf("2. 计算10的阶乘\n");
        printf("3. 计算数组平均值\n");
        printf("4. 计算圆面积\n");
        printf("5. 计算圆柱体积\n");
        printf("6. 冒泡排序\n");
        printf("7. 选择排序\n");
        printf("8. 交换两个数\n");
        printf("9. 查找数组的最大值和最小值\n");
        printf("10. 对三个整数排序\n");
        printf("0. 退出程序\n");
        printf("请输入选择:");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                reverseString();
                break;
            case 2:
                printf("10的阶乘为:%d\n", factorial());
                break;
            case 3:
                calculateAverage();
                break;
            case 4: {
                double radius;
                printf("请输入圆的半径:");
                scanf("%lf", &radius);
                double area = calculateCircleArea(radius);
                printf("圆的面积为:%.2lf\n", area);
                break;
            }
            case 5: {
                double radius, height;
                printf("请输入圆柱的半径和高度:");
                scanf("%lf %lf", &radius, &height);
                double volume = calculateCylinderVolume(radius, height);
                printf("圆柱的体积为:%.2lf\n", volume);
                break;
            }
            case 6: {
                int size;
                printf("请输入数组的大小:");
                scanf("%d", &size);
                int arr[100];
                printf("请输入数组元素:");
                for (int i = 0; i < size; i++) {
                    scanf("%d", &arr[i]);
                }
                bubbleSort(arr, size);
                printf("冒泡排序结果:");
                for (int i = 0; i < size; i++) {
                    printf("%d ", arr[i]);
                }
                printf("\n");
                break;
            }
            case 7: {
                int size;
                printf("请输入数组的大小:");
                scanf("%d", &size);
                int arr[100];
                printf("请输入数组元素:");
                for (int i = 0; i < size; i++) {
                    scanf("%d", &arr[i]);
                }
                selectionSort(arr, size);
                printf("选择排序结果:");
                for (int i = 0; i < size; i++) {
                    printf("%d ", arr[i]);
                }
                printf("\n");
                break;
            }
            case 8: {
                int a, b;
                printf("请输入两个整数:");
                scanf("%d %d", &a, &b);
                printf("交换前:a=%d, b=%d\n", a, b);
                swap(&a, &b);
                printf("交换后:a=%d, b=%d\n", a, b);
                break;
            }
            case 9: {
                int arr[3][3];
                printf("请输入3x3数组的元素:\n");
                for (int i = 0; i < 3; i++) {
                    for (int j = 0; j < 3; j++) {
                        scanf("%d", &arr[i][j]);
                    }
                }
                findMinMax(arr);
                break;
            }
            case 10: {
                int a, b, c;
                printf("请输入三个整数:");
                scanf("%d %d %d", &a, &b, &c);
                printf("排序前:a=%d, b=%d, c=%d\n", a, b, c);
                sortThreeNumbers(&a, &b, &c);
                printf("排序后:a=%d, b=%d, c=%d\n", a, b, c);
                break;
            }
            case 0:
                printf("程序已退出。\n");
                return 0;
            default:
                printf("无效的选择,请重新输入。\n");
        }

        printf("\n");
    }

    return 0;
}

根据提示就可运行哦!!!

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛马程序员24

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值