输出字符菱形的一个巧思
输出字符菱形的一个巧思题目描述思路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/8/2 5:59:42 阅读更多 →
Allegro封装库无缝迁移RedPCB:数据复用与设计连续性实战指南

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

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

2026/8/2 5:59:42 阅读更多 →
Vue3与Element Plus整合实战:从工程化配置到高级组件封装

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

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

2026/8/2 5:59:42 阅读更多 →

最新新闻

Intel AX210 Wi-Fi 6E网卡升级全攻略:从选购安装到性能调优

Intel AX210 Wi-Fi 6E网卡升级全攻略:从选购安装到性能调优

1. 项目概述:从一张网卡说起最近在折腾一台老笔记本,原装的无线网卡还是802.11ac的,信号和速度在如今这个Wi-Fi 6E开始普及的时代,确实有点力不从心了。于是,我盯上了英特尔出品的这张Wireless-AX210网卡。这可不是一张…

2026/8/2 10:54:52 阅读更多 →
终极SPT-AKI存档编辑器:轻松掌控你的《逃离塔科夫》离线版游戏体验

终极SPT-AKI存档编辑器:轻松掌控你的《逃离塔科夫》离线版游戏体验

终极SPT-AKI存档编辑器:轻松掌控你的《逃离塔科夫》离线版游戏体验 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com/…

2026/8/2 10:54:52 阅读更多 →
电竞战队转会决策分析:从AL呼吸加盟到BLG圣枪哥引援的理性评估

电竞战队转会决策分析:从AL呼吸加盟到BLG圣枪哥引援的理性评估

这次我们来看一个关于《英雄联盟》职业战队转会决策的深度分析。标题“AL官宣呼吸加盟,BLG不要盲目引进圣枪哥”直接点出了近期LPL赛区两个关键转会动态,并提出了一个核心观点:在竞争激烈的转会期,俱乐部应避免在冲动情绪下做出可…

2026/8/2 10:54:52 阅读更多 →
基于MediaPipe与Pygame的手势控制贪吃蛇游戏开发实战

基于MediaPipe与Pygame的手势控制贪吃蛇游戏开发实战

1. 项目概述:当手势遇见贪吃蛇 几年前,我第一次在展会上看到有人用手势隔空操作大屏上的应用,就觉得这玩意儿太酷了。当时就想,要是能用这种技术做个游戏,肯定有意思。后来接触了MediaPipe这个开源框架,发现…

2026/8/2 10:54:52 阅读更多 →
WebAssembly核心原理与实战:从浏览器到服务端的性能革命

WebAssembly核心原理与实战:从浏览器到服务端的性能革命

1. 从“为什么需要Wasm”说起:一个性能与生态的困局如果你在2015年前后做过前端开发,或者尝试过在浏览器里跑一些计算密集型的应用(比如图像处理、3D游戏、视频编解码),那你一定对当时的性能瓶颈和开发体验记忆犹新。那…

2026/8/2 10:54:52 阅读更多 →
云服务器API外部连接失败全链路排查指南:从网络到应用层深度解析

云服务器API外部连接失败全链路排查指南:从网络到应用层深度解析

1. 从一次深夜告警说起:API连接问题的普遍性与紧迫性凌晨两点,手机突然震动,监控告警提示:“生产环境订单服务API调用失败,错误码:Connection refused”。相信很多运维和开发朋友都经历过类似的场景。这不仅…

2026/8/2 10:53:52 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →