当前位置: 首页 > article >正文

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;
}


http://www.kler.cn/a/532661.html

相关文章:

  • mysql 学习8 函数,字符串函数,数值函数,日期函数,流程函数
  • java-(Oracle)-Oracle,plsqldev,Sql语法,Oracle函数
  • ubuntu磁盘扩容
  • 读书笔记 | 《最小阻力之路》:用结构思维重塑人生愿景
  • 寒假刷题Day20
  • Python教学:文档处理及箱线图等
  • ioDraw桌面版 v3.4.0发布!AI文生图,AI图生图,手绘风格一键转换!
  • 37、【OS】【Nuttx】OSTest分析(2):任务创建
  • 深入探索Vue 3组合式API
  • 实例研究:设计一个文档编辑器(1)
  • 有用的sql链接
  • 调用DeepSeek API实现对本地数据库的AI管理
  • 手扶电梯缺陷检测数据集VOC+YOLO格式67张1类别
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.19 线性代数核武器:BLAS/LAPACK深度集成
  • 二叉树03(数据结构初阶)
  • Leetcode—922. 按奇偶排序数组 II【简单】
  • mybatis plus 持久化使用技巧及场景
  • VUE3 pinia的对象莫名其妙被赋值成其他对象
  • 基于Hadoop实现气象分析大屏可视化项目【源码+LW+PPT+解析】
  • 2025年时序数据库发展方向和前景分析
  • Java牙科诊所管理系统web医院病例挂号预约平台springboot/ssm代码编写
  • 刷题记录 动态规划-7: 63. 不同路径 II
  • 我主编的电子技术实验手册(24)——RL并联电路
  • Wide Deep 模型:记忆能力与泛化能力
  • NSSCTF Pwn [SWPUCTF 2022 新生赛]shellcode?题解
  • 网安学习xss和php反序列后的心得