欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > C基础寒假练习(8)

C基础寒假练习(8)

2025/2/5 20:26:01 来源:https://blog.csdn.net/2302_76213070/article/details/145439746  浏览:    关键词:C基础寒假练习(8)

一、终端输入10个学生成绩,使用冒泡排序对学生成绩从低到高排序

#include <stdio.h>
int main(int argc, const char *argv[])
{int arr[10]; // 定义一个长度为10的整型数组,用于存储学生成绩int len = sizeof(arr) / sizeof(arr[0]); // 计算数组的长度int temp; // 临时变量,用于交换数组元素printf("请输入学生成绩:\n"); // 提示用户输入学生成绩for (int a = 0; a < len; a++) { // 循环读取每个学生的成绩printf("%d号学生成绩:", a + 1); // 提示用户输入第a+1个学生的成绩scanf("%d", &arr[a]); // 读取用户输入的成绩并存储到数组中putchar(10); // 输出换行符}// 冒泡排序算法,对数组进行升序排序for (int i = 1; i < len; i++) {for (int j = 0; j < len - i; j++) {if (arr[j] >= arr[j + 1]) { // 如果当前元素大于或等于下一个元素,则交换它们的位置temp = arr[j]; // 使用临时变量保存当前元素的值arr[j] = arr[j + 1]; // 将下一个元素的值赋给当前元素arr[j + 1] = temp; // 将临时变量的值赋给下一个元素}}}// 输出排序后的学生成绩for (int b = 0; b < len; b++) {printf("%d ", arr[b]); // 输出数组中的每个元素}putchar(32); // 输出空格return 0; // 返回0,表示程序正常结束
}
 

代码功能总结:

  1. 输入部分

    • 提示用户输入10个学生的成绩,并将这些成绩存储在数组 arr 中。
    • 使用 scanf 函数读取用户输入的成绩。
  2. 排序部分

    • 使用冒泡排序算法对数组 arr 进行升序排序。
    • 通过嵌套的 for 循环比较相邻的元素,如果前一个元素大于或等于后一个元素,则交换它们的位置。
  3. 输出部分

    • 遍历排序后的数组,并输出每个学生的成绩。
    • 使用 putchar 函数输出空格和换行符。

注意事项:

  • 确保输入的成绩是整数,否则 scanf 可能会出错。
  • 代码假设最多有10个学生的成绩需要输入,可以根据实际需求调整数组的大小。

二、实现字符串的整体逆置

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{char str1[20];char str2[20];// 从标准输入读取一行字符串到str1中gets(str1);putchar(10); // 输出一个换行符// 获取字符串的长度int len = strlen(str1);// 如果字符串最后一个字符是换行符,则将其替换为字符串结束符'\0'if (str1[len - 1] == '\n') {str1[len - 1] = '\0';len--; // 更新长度}// 将str1中的字符逆序复制到str2中for (int i = len - 1; i >= 0; i--){str2[len - 1 - i] = str1[i];}// 输出逆序后的字符串puts(str2);putchar(10); // 输出一个换行符return 0;
}

代码解释:
1. 头文件包含:
• #include<stdio.h>: 包含标准输入输出库函数。
• #include<string.h>: 包含字符串处理函数。
• #include<stdlib.h>: 包含标准库函数(虽然在这个程序中没有使用)。
2. 主函数定义:
• int main(int argc, const char *argv[]): 主函数入口,参数argc表示命令行参数的数量,argv是命令行参数数组。
3. 变量声明:
• char str1[20];: 声明一个字符数组str1,用于存储输入的字符串,最大长度为20个字符。
• char str2[20];: 声明另一个字符数组str2,用于存储逆序后的字符串。
4. 读取输入:
• gets(str1);: 从标准输入读取一行字符串并存储到str1中。注意:gets函数不安全,建议使用fgets替代。
• putchar(10);: 输出一个换行符。
5. 计算字符串长度:
• int len = strlen(str1);: 计算字符串str1的长度并存储在len中。
6. 检查并处理换行符:
• if (str1[len - 1] == '\n'): 检查字符串最后一个字符是否是换行符。
• str1[len - 1] = '\0';: 如果是换行符,将其替换为字符串结束符\0。
• len--;: 更新字符串长度。
7. 逆序字符串:
• for (int i = len - 1; i >= 0; i--): 从字符串末尾开始遍历。
• str2[len - 1 - i] = str1[i];: 将str1中的字符逆序复制到str2中。
8. 输出逆序后的字符串:
• puts(str2);: 输出逆序后的字符串。
• putchar(10);: 输出一个换行符。
9. 返回值:
• return 0;: 返回0,表示程序正常结束。

教师版;

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{char str[100];gets(str);puts(str);int j=strlen(str)-1;int i=0;char temp;while(i<j){temp=str[j];str[j]=str[i];str[i]=temp;i++;j--;}puts(str);return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com