输出字符菱形的一个巧思
输出字符菱形的一个巧思题目描述思路1直接固定输出基础语法C语言前置语句输出语句1. 头文件2. 主函数定义3. 输出语句4. 返回值5. 代码格式思路1代码实现思路2可推广的循环输出基础语法条件判断和循环绝对值思路2代码实现思路2的推广基础语法输入语句思路2推广的代码实现题目描述用*构造一个对角线长5 55个字符倾斜放置的菱形。输入格式没有输入要求。输出格式如样例所示。用*构成的菱形。输入输出样例 #1输入 #1输出 #1* *** ***** *** *思路拆解思路1直接固定输出直接使用printf()输出每一行但是要特别注意别忘写换行好处是简单但要求输出更大菱形时则倍显乏力于是便诞生出思路2。作为作者第一个C语言笔记我们不得不先回顾一下基础语法[doge]。不想看可先跳过基础语法C语言前置语句输出语句c#includestdio.hintmain(){printf(Hello, World! \n);return0;}这段简单的C语言程序包含了以下几个基础语法要点1. 头文件#includestdio.h#include是预处理指令用于包含头文件stdio.h是标准输入输出头文件包含了printf()、scanf()等函数的声明使用尖括号表示从系统目录中查找头文件stdio.h为什么叫标准输入输出头文件英语比较好的小朋友应知道std standard 标准i input 输入o output 输出.h header 头文件header file2. 主函数定义intmain(){// 函数体}int表示函数的返回类型为整数main是程序的入口函数每个C程序必须有且只有一个main函数()内可以放置参数这里为空表示不接受参数{}花括号包裹函数体包含要执行的语句3. 输出语句printf(Hello, World! \n);printf()是标准输出函数用于向屏幕输出文本双引号 内的内容是字符串字面量\n是转义字符表示换行newline语句以分号;结尾这是C语言的语法要求一定不能忘了更多的输出语法printf()函数的功能远不止输出简单的字符串它支持丰富的格式化输出功能1. 格式化输出基础intage25;floatscore89.5;chargradeA;charname[]张三;printf(年龄%d岁\n,age);// 输出整数printf(分数%.1f分\n,score);// 输出浮点数保留1位小数printf(等级%c\n,grade);// 输出字符printf(姓名%s\n,name);// 输出字符串2. 常用格式说明符%d或%i十进制整数%f浮点数默认6位小数%.2f浮点数保留2位小数%c单个字符%s字符串3. 宽度和精度控制intnum123;floatpi3.14159;printf(%5d\n,num);// 输出宽度为5右对齐 123printf(%-5d\n,num);// 输出宽度为5左对齐 123 printf(%05d\n,num);// 输出宽度为5用0填充00123printf(%.2f\n,pi);// 保留2位小数 3.14printf(%8.3f\n,pi);// 宽度8保留3位小数 3.1424. 转义字符除了\n换行printf()还支持其他转义字符比如\t水平制表符Tab5. 输出多个值inta10,b20;floatx3.14,y2.71;printf(a%d, b%d\n,a,b);// 输出a10, b20printf(x%.2f, y%.2f, 和%.2f\n,x,y,xy);// 输出x3.14, y2.71, 和5.85注意事项格式说明符必须与变量类型匹配否则输出结果可能不正确printf()返回成功输出的字符数可以使用%*动态指定宽度和精度输出中文等宽字符时要注意编码问题比如使用CLion来进行C语言编程时运行程序中文出现乱码时需加上system(“chcp 65001”);语句同时要加头文件#include stdlib.h4. 返回值return0;return语句用于从函数返回值0表示程序正常退出非0值通常表示错误代码在main函数中返回值会传递给操作系统当然你也可以不加5. 代码格式使用缩进通常是4个空格或1个制表符提高代码可读性适当的空行分隔不同逻辑部分不然你受不了一坨屎山代码注释使用//单行或/* */多行思路1代码实现#includestdio.hintmain(){printf(%s\n, *);printf(%s\n, ***);printf(%s\n,*****);printf(%s\n, ***);printf(%s, *);return0;}输出* *** ***** *** *思路2可推广的循环输出先从特殊情况考虑要输出一个对角线长度为5的菱形我们可以从以下几个步骤来思考分析菱形结构分析输出目标菱形由5行组成第1行2个空格 1个星号第2行1个空格 3个星号第3行0个空格 5个星号中心行第4行1个空格 3个星号第5行2个空格 1个星号确定输出策略可以使用两层循环外层控制行数内层控制每行的空格和星号先输出空格再输出星号最后换行这意味着要计算每行对应的空格数与星号数菱形分为上半部分第1-3行和下半部分第4-5行数学逻辑实现设总行数 n 5对于第 i 行从1开始计数空格数 |n/2 1 - i| 取绝对值星号数 n - 2 × 空格数基础语法条件判断和循环绝对值C语言的条件判断和循环语法与Java一致这里以及后面不再赘述详见博主的Java基础语法https://blog.csdn.net/BeiGuTing_code/article/details/163112335?spm1001.2014.3001.5501这里只讲C语言的abs()函数abs()函数是C语言标准库中的一个数学函数用于计算整数的绝对值。函数原型#includestdlib.h// 需要包含此头文件intabs(intn);参数说明n要计算绝对值的整数返回值返回参数n的绝对值非负整数使用示例#includestdio.h#includestdlib.h// 包含 abs() 函数intmain(){inta-5;intb10;printf(abs(%d) %d\n,a,abs(a));// 输出: abs(-5) 5printf(abs(%d) %d\n,b,abs(b));// 输出: abs(10) 10printf(abs(%d) %d\n,a-b,abs(a-b));// 输出: abs(-15) 15return0;}注意事项abs()函数只能用于整数类型int如果要计算浮点数的绝对值需要使用fabs()函数需要包含math.h头文件使用前必须包含stdlib.h头文件思路2代码实现#includestdio.h#includestdlib.hintmain(){intn5;// 菱形对角线长度for(inti1;in;i){// 计算当前行的空格数intspacesabs(n/21-i);// 输出空格for(intj1;jspaces;j){printf( );}// 输出星号intstarsn-2*spaces;for(intj1;jstars;j){printf(*);}// 换行printf(\n);}}输出* *** ***** *** *思路2的推广我们不满足于只能构造一个对角线长 5 个字符倾斜放置的*菱形而是想要根据用户输入得到一个对应*菱形。特别说明这里的菱形指的是根据用户输入的正整数 nn 为奇数输出一个由星号(*)构成、对角线长度为 n 的字符菱形。比如* * * *** *** *** * ***** ***** *** ******* * ***** *** *基础语法输入语句在C语言中最常用的输入函数是scanf()它用于从标准输入通常是键盘读取数据。函数原型#includestdio.h// 需要包含此头文件intscanf(constchar*format,...);基本用法intnum;scanf(%d,num);// 读取一个整数到变量 num 中参数说明format格式控制字符串指定要读取的数据类型和格式...可变参数列表对应要存储数据的变量地址常用格式说明符%d读取十进制整数%f读取浮点数float%lf读取双精度浮点数double%c读取单个字符%s读取字符串遇到空格、制表符或换行符停止注意事项变量前必须加取地址符除了读取字符串到字符数组时可以不加格式字符串中的普通字符非格式说明符需要与输入严格匹配scanf()读取字符串时不会检查数组边界存在缓冲区溢出风险使用示例基本信息输入输出#includestdio.hintmain(){intage;floatheight;charname[50];printf(请输入您的年龄);scanf(%d,age);printf(请输入您的身高米);scanf(%f,height);printf(请输入您的姓名);scanf(%s,name);// 注意这里不需要 因为 name 是数组名printf(\n--- 输入信息 ---\n);printf(姓名%s\n,name);printf(年龄%d 岁\n,age);printf(身高%.2f 米\n,height);return0;}输入多个值有限多个inta,b,c;// 输入三个整数用空格或换行分隔scanf(%d %d %d,a,b,c);思路2推广的代码实现在思路2的推广中我们可以使用scanf()让用户输入菱形的大小#includestdio.h#includestdlib.hintmain(){intn;printf(请输入菱形的对角线长度奇数);// 提示语scanf(%d,n);// 输入for(inti1;in;i){// 计算当前行的空格数intspacesabs(n/21-i);// 输出空格for(intj1;jspaces;j){printf( );}// 输出星号intstarsn-2*spaces;for(intj1;jstars;j){printf(*);}// 换行printf(\n);}}输入输出示例示例1输入 3请输入菱形的对角线长度奇数3 * *** *示例2输入 5请输入菱形的对角线长度奇数5 * *** ***** *** *示例3输入 7请输入菱形的对角线长度奇数7 * *** ***** ******* ***** *** *示例4输入 9请输入菱形的对角线长度奇数9 * *** ***** ******* ********* ******* ***** *** *注意事项程序要求输入奇数如果输入偶数程序不会报错但输出的菱形会不对称为了防止这种情况可以看看博主Java基础语法里的do-while循环里的示例2至少执行一次的输入验证的例子https://blog.csdn.net/BeiGuTing_code/article/details/163112335?spm1001.2014.3001.5501输入的值越大输出的菱形越大

相关新闻

【 C++ 】vector的模拟实现+vector迭代器失效

【 C++ 】vector的模拟实现+vector迭代器失效

目录 1、基本成员变量 2、默认成员函数 构造函数 析构函数 拷贝构造函数 赋值运算符重载函数 3、容器访问相关函数接口 operator[ ]运算符重载 迭代器 范围for 4、vector空间增长问题 size和capacity reserve扩容 resize swap 交换数据 5、增加的相关函数接口 …

2026/9/3 4:20:49 阅读更多 →
Allegro封装库无缝迁移RedPCB:数据复用与设计连续性实战指南

Allegro封装库无缝迁移RedPCB:数据复用与设计连续性实战指南

1. 先搞清楚“无缝迁移”到底解决了什么痛点如果你是长期使用 Cadence Allegro 的硬件工程师或 PCB 设计师,看到“Allegro 封装库无缝迁移 RedPCB”这个标题,最关心的肯定不是功能列表,而是这件事到底靠不靠谱、能不能真把多年积累的库资源用…

2026/8/31 9:51:45 阅读更多 →
Vue3与Element Plus整合实战:从工程化配置到高级组件封装

Vue3与Element Plus整合实战:从工程化配置到高级组件封装

1. 项目缘起:为什么是Vue3 Element Plus?如果你最近在搭建一个中后台管理系统,或者任何需要快速成型、界面规范的企业级前端应用,那么Vue3和Element Plus的组合,大概率已经进入了你的技术选型清单。这几乎成了当前Vue…

2026/8/28 21:13:03 阅读更多 →

最新新闻

嵌入式电流采样实战:从模拟信号到数字处理的完整信号链设计

嵌入式电流采样实战:从模拟信号到数字处理的完整信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 15:01:15 阅读更多 →
2027知网二代标红研究背景怎么改:助研君按字符降AI实测

2027知网二代标红研究背景怎么改:助研君按字符降AI实测

2027知网二代标红研究背景怎么改:助研君按字符降AI实测 在光电工程与微纳光子学方向硕士学位论文的知网二代自查中,许多研究生都会在第一章遇到令人郁闷的“开门红”:2027知网二代标红研究背景怎么改?整篇大论文中,后…

2026/9/3 15:01:15 阅读更多 →
中文论文AI检测网站哪个好:三款每天可免费使用的AIGC工具横评

中文论文AI检测网站哪个好:三款每天可免费使用的AIGC工具横评

中文论文AI检测网站哪个好:三款每天可免费使用的AIGC工具横评 在中文学术论文查重与 AIGC 自查需求激增的背景下,许多研究生和本科生都在寻找高性价比的自查渠道:中文论文AI检测网站哪个好:三款每天可免费使用的AIGC工具横评究竟…

2026/9/3 15:01:15 阅读更多 →
从Karpathy事件看技术人员个人品牌建设与职业规划

从Karpathy事件看技术人员个人品牌建设与职业规划

最近AI圈有个挺有意思的传闻——Karpathy从Anthropic离职了?这个消息最初是从他个人简介的修改开始发酵的,在各大技术社区和社交媒体上引发了广泛讨论。作为AI领域的重要人物,Karpathy的职业动向确实值得关注,但更重要的是&#x…

2026/9/3 15:01:15 阅读更多 →
城市道路坍塌风险评估与空间测绘数据集

城市道路坍塌风险评估与空间测绘数据集

摘要:该数据集面向城市基础设施安全、道路稳定性评价与坍塌风险测绘研究。数据集概述该数据集面向城市基础设施安全、道路稳定性评价与坍塌风险测绘研究。CSV文件包含15,000条城市道路路段记录和42个属性,每条记录对应一个具体路段及其基础设施和周边环境…

2026/9/3 15:01:15 阅读更多 →
零基础学Unity第一周路线:从组件到Demo的完整闭环

零基础学Unity第一周路线:从组件到Demo的完整闭环

如果你也是 27 届,想在课业之外自学 Unity,看到别人一周就发成果,心里难免着急。先给一个真实判断:零基础的人用一周、每天认真投入 3 到 4 小时,完全可以从“不知道 Project 面板在哪”走到“做出一个能运行、能得分、…

2026/9/3 15:00:12 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →