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

C基础寒假练习(6)

一、终端输入行数,打印倒金字塔

#include <stdio.h>
int main() 
{int rows;printf("请输入倒金字塔的行数: ");scanf("%d", &rows);for (int i = rows; i > 0; i--) {// 打印空格for (int j = 0; j < rows - i; j++) {printf(" ");}// 打印星号for (int k = 0; k < (2 * i - 1); k++) {printf("*");}// 换行printf("\n");}return 0;
}

代码解析

  1. 包含头文件

    #include <stdio.h>
    

    这行代码包含了标准输入输出库 stdio.h,它提供了输入输出函数如 printfscanf

  2. 主函数

    int main() 
    {
    

    这是程序的入口点,从这里开始执行。

  3. 变量声明

    int rows;
    

    声明一个整型变量 rows,用于存储用户输入的倒金字塔的行数。

  4. 提示用户输入

    printf("请输入倒金字塔的行数: ");
    

    使用 printf 函数在控制台输出提示信息,要求用户输入倒金字塔的行数。

  5. 读取用户输入

    scanf("%d", &rows);
    

    使用 scanf 函数从控制台读取用户输入的整数,并将其存储到变量 rows 中。

  6. 外层循环

    for (int i = rows; i > 0; i--) 
    {
    

    这是一个递减的 for 循环,从 rows 开始,每次循环减一,直到 i 大于零为止。这个循环控制倒金字塔的行数。

  7. 打印空格

    for (int j = 0; j < rows - i; j++) 
    {printf(" ");
    }
    

    内层循环用于打印每行前面的空格。空格的数量是 rows - i,随着 i 的减小而增加。

  8. 打印星号

    for (int k = 0; k < (2 * i - 1); k++)
    {printf("*");
    }
    

    另一个内层循环用于打印星号。星号的数量是 2 * i - 1,随着 i 的减小而减少。

  9. 换行

    printf("\n");
    

    每行结束后,使用 printf 函数输出一个换行符,使光标移动到下一行。

  10. 返回值

    return 0;
    

    main 函数返回 0,表示程序正常结束。

二、使用异或和算术求和交换两个数

#include <stdio.h>
int main() 
{int x = 10;int y = 20;printf("Before swap: x = %d, y = %d\n", x, y);// 使用异或运算交换值x = x ^ y;y = x ^ y;x = x ^ y;printf("After swap: x = %d, y = %d\n", x, y);return 0;
}#include <stdio.h>
int main(int argc, const char *argv[]) 
{int a = 12, b = 34;printf("a=%d\tb=%d\n", a, b);// 用算术求和的方式交换变量a = a + b; // a = 46b = a - b; // b = 12a = a - b; // a = 34printf("交换后\n");printf("a=%d\tb=%d\n", a, b);return 0;
}

异或步骤解释

  1. Step 1: x = x ^ y;

    • 初始值:x = 10 (二进制表示为 1010), y = 20 (二进制表示为 10100)
    • 计算 x ^ y1010 ^ 10100 = 11110 (二进制)
    • 结果:x = 30 (十进制表示为 11110)
  2. Step 2: y = x ^ y;

    • 当前值:x = 30 (二进制表示为 11110), y = 20 (二进制表示为 10100)
    • 计算 x ^ y11110 ^ 10100 = 1010 (二进制)
    • 结果:y = 10 (十进制表示为 1010)
  3. Step 3: x = x ^ y;

    • 当前值:x = 30 (二进制表示为 11110), y = 10 (二进制表示为 1010)
    • 计算 x ^ y11110 ^ 1010 = 10100 (二进制)
    • 结果:x = 20 (十进制表示为 10100)

最终结果

在执行完这三个步骤之后,xy 的值被成功交换。因此,输出将会是:

Before swap: x = 10, y = 20 After swap: x = 20, y = 10

总结

通过使用异或运算符,我们可以在不引入第三个临时变量的情况下交换两个整数的值。这种方法利用了异或运算的性质:一个数与另一个数异或两次会还原原来的数。

http://www.lryc.cn/news/533675.html

相关文章:

  • 【论文翻译】DeepSeek-V3论文翻译——DeepSeek-V3 Technical Report——第一部分:引言与模型架构
  • 【docker】Failed to allocate manager object, freezing:兼容兼容 cgroup v1 和 v2
  • 我使用deepseek高效学习-分析外文网站Cron定时执行任务
  • Android13-系统服务大管家-ServiceManager进程-启动篇
  • 论文笔记:Rethinking Graph Neural Networks for Anomaly Detection
  • vue知识补充
  • pushgateway指标聚合问题
  • 使用docker搭建FastDFS文件服务
  • 【R语言】数据分析
  • 蓝桥杯C语言组:图论问题
  • jmeter 性能测试Linux 常用的安装
  • 19 角度操作模块(angle.rs)
  • 前端高级面试题及其答案
  • 【ORACLE】这个‘‘和null不等价的场景,deepseek你怎么看?
  • 使用Python实现PDF与SVG相互转换
  • ComfyUI 安装教程:macOS 和 Linux 统一步骤
  • 360手机刷机 360手机解Bootloader 360手机ROOT
  • t113-qt
  • 【真一键部署脚本】——一键部署deepseek
  • 【AI 语音】实时语音交互优化全解析:从 RTC 技术到双讲处理
  • pytest-xdist 进行多进程并发测试
  • 【Android】版本和API对应关系表
  • 通过acme生成与续签ssl证书,并部署到nginx
  • mysql系统库介绍,数据字典(介绍,存储方式,常见表,访问权限),系统表(介绍,不同功能的表)
  • spring 学习(工厂方式 实例化对象(静态工厂,实例化工厂,实现factorybean 规范))
  • MarkupLM:用于视觉丰富文档理解的文本和标记语言预训练
  • 讯飞智作 AI 配音技术浅析(三):自然语言处理
  • kafka服务端之日志存储
  • 软件工程的熵减:AI如何降低系统复杂度
  • 模拟开发小鹅通首页网站练习