網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
前言
好,今天就來(lái)講一下如何解這道題。
#include<stdio.h>
main()
{
char ch = getchar();
printf(" %c \n %c%c%c \n%c%c%c%c%c\n %c%c%c \n %c \n",ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch);
}
好的,講解完了再見(jiàn)。
等等,騙你的,上面是死方法,下面才是活方法。
1.定義stdio.h頭文件
想必大家都會(huì),我不信,有人不會(huì)。
#include<stdio.h>//定義stdio.h頭文件
2.定義主函數(shù)
這也是很簡(jiǎn)單的。
int main()//主函數(shù)
{
return 0;
}
3.定義行數(shù)-單數(shù)
制造一個(gè)字符菱形,我們先需要定義一個(gè)他的大小,也就是行數(shù),一個(gè)完美的菱形,它的行數(shù)一定是單數(shù)。
{
int hang;//定義行數(shù)-單數(shù)
printf("定義行數(shù)-單數(shù):");
scanf("%d", &hang);//定義行數(shù)-單數(shù)
}
4.得出分割行數(shù)
通過(guò)我們定義的行數(shù),得出上下分割部處的行數(shù)。
{
int shang_xia = (hang / 2 + 1);//定義分割行數(shù)
}
5.定義字符
定義字符需要注意一點(diǎn),我們先前定義了行數(shù),其中緩存區(qū)有個(gè)回車,我們得先清除一下緩存區(qū),這里我推薦用setbuf(stdin, NULL),清除緩存區(qū),主要是方便。
{
setbuf(stdin, NULL);//清除緩存域
printf("定義字符:");
char a = getchar();//定義字符
}
6.初始化打印字符數(shù)與打印空白數(shù)
剛開(kāi)始我們打印的字符數(shù),與空白數(shù)肯定要初始化一下,字符數(shù)剛開(kāi)始都是1,這不用想,還有空白數(shù)的話,這是行數(shù)hang/2,因?yàn)樾袛?shù)是單數(shù),所以/2后,會(huì)空出一個(gè)格子。
{
int ci = 1,//定義打印字符數(shù)
kon_ci = hang / 2;//定義打印空白數(shù)
}
7.循環(huán)打印菱形
首先我們打印菱形,肯定需要一個(gè)大循環(huán),每打印一行,都需要一個(gè)回車,所以這邊直接加上,行數(shù)減一防止多打一個(gè)回車影響美觀。
for (int i = 0; i < hang; i++)//循環(huán)打印菱形
{
//打印到上部分
//打印剩下部分
if(i<hang-1)//防止多打
printf("\n");//打印回車
}
8.打印上部分
打印上半部分,這時(shí)候就需要我們的分割行數(shù),上半部分的打印是,先利用循環(huán)打印空白,再打印字符數(shù),因?yàn)榱庑蚊繉痈语枬M,所以空白數(shù)要減少一點(diǎn),還打印的字符要加兩個(gè),再打印回車。按照這個(gè)原理循環(huán),上半部分就成功了。
{
if (i < shang_xia)//打印上部分
{
for (int j = 0; j < kon_ci; j++)//打印空白數(shù)
printf(" ");打印空白
for (int j = 0; j < ci; j++)//打印字符數(shù)
printf("%c", a);//打印字符
ci += 2;//每次打印字符數(shù)+2
kon_ci--;//每次空白數(shù)-1
}
}
9.打印剩下部分
打印剩下部分就比較簡(jiǎn)單了,上面每次空白減1,這里就加1,上面字符加2,這你就減2,跟他反著來(lái)就行了,不知道你們有沒(méi)有注意到,上面有一個(gè)減一和加二,運(yùn)算之后沒(méi)有用到,所以我們得先減去。之后就完成了。
{
if (i > hang / 2)//打印剩下部分
{
if (i == shang_xia)//打印到分割行數(shù)時(shí)多加一次沒(méi)用,所以減去
{
ci -= 2;//每次打印字符數(shù)-2
kon_ci++;//每次空白數(shù)+1
}
ci -= 2;//每次打印字符數(shù)-2
kon_ci++;//每次空白數(shù)+1
for (int j = 0; j < kon_ci; j++)//打印空白數(shù)
printf(" ");//打印空白
for (int j = 0; j < ci; j++)//打印字符數(shù)
printf("%c", a);//打印字符
}
}
10.完整代碼
第1次做有點(diǎn)水,請(qǐng)多多海涵。
#include<stdio.h>//定義stdio.h頭文件
int main()//主函數(shù)
{
int hang;//定義行數(shù)-單數(shù)
printf("定義行數(shù)-單數(shù):");
scanf("%d", &hang);//定義行數(shù)-單數(shù)
int shang_xia = (hang / 2 + 1);//定義分割行數(shù)
setbuf(stdin, NULL);//清除緩存域
printf("定義字符:");
char a = getchar();//定義字符
int ci = 1,//定義打印字符數(shù)
kon_ci = hang / 2;//定義打印空白數(shù)
for (int i = 0; i < hang; i++)//循環(huán)打印菱形
{
if (i < shang_xia)//打印上部分
{
for (int j = 0; j < kon_ci; j++)//打印空白數(shù)
printf(" ");打印空白
for (int j = 0; j < ci; j++)//打印字符數(shù)
printf("%c", a);//打印字符
ci += 2;//每次打印字符數(shù)+2
kon_ci--;//每次空白數(shù)-1
}
if (i > hang / 2)//打印剩下部分
{
if (i == shang_xia)//打印到分割行數(shù)時(shí)多加一次沒(méi)用,所以減去
{
ci -= 2;//每次打印字符數(shù)-2
kon_ci++;//每次空白數(shù)+1
}
ci -= 2;//每次打印字符數(shù)-2
kon_ci++;//每次空白數(shù)+1
for (int j = 0; j < kon_ci; j++)//打印空白數(shù)
printf(" ");//打印空白
for (int j = 0; j < ci; j++)//打印字符數(shù)
printf("%c", a);//打印字符
}
if(i<hang-1)//防止多打
printf("\n");//打印回車
}
return 0;
}
11.完整效果
錄屏鏈接
原文鏈接:https://blog.csdn.net/zhanghgh/article/details/123755338
相關(guān)推薦
- 2022-09-25 FFmpeg源碼分析:SwsContext圖像轉(zhuǎn)換上下文
- 2022-06-22 Git文件常用操作總結(jié)及拓展_其它綜合
- 2022-03-27 pygame實(shí)現(xiàn)貪吃蛇游戲_python
- 2022-05-02 三行Python代碼提高數(shù)據(jù)處理腳本速度_python
- 2022-09-30 Python3中map()、reduce()、filter()的用法詳解_python
- 2022-12-21 React?之最小堆min?heap圖文詳解_React
- 2022-12-09 C++輸出問(wèn)題:保留兩位小數(shù)_C 語(yǔ)言
- 2023-03-26 React性能優(yōu)化的實(shí)現(xiàn)方法詳解_React
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支