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;
}
根据提示就可运行哦!!!