C語言實(shí)現(xiàn)打印星號圖案
C語言 打印星號圖案
打印一個(gè)上半部分為等腰三角形,下半部分為倒等腰三角形星號圖案:思想為創(chuàng)建一層大的循環(huán)表示行數(shù),然后里面一層循環(huán)表示空格的數(shù)目,一層表示星號的數(shù)目,假設(shè)有n行,i表示第i行,空格數(shù)為(n-i),星號數(shù)為(2*i-1);下半部分從第n行開始,逐漸減少,其他同上半部分。
如有寫的不對,望指教。
代碼如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int main() { int i, j; int n; printf("輸入想要打印的上半部分的行數(shù):\n");//上半部分和下半部分是對應(yīng)的 scanf("%d", &n); for (i = 1; i <= n; i++) { for (j = 1; j <= n - i; j++) { putchar(' '); } for (j=1; j <= 2 * i - 1; j++) { putchar('*'); } putchar('\n'); } for (i = n; i >= 1; i--) { for (j= 1; j <= n - i; j++) { putchar(' '); } for (j = 1; j <= 2 * i - 1; j++) { putchar('*'); } putchar('\n'); } system("pause"); return 0; }
圖為:
C語言 循環(huán)打印星號圖形*
用兩層循環(huán)
- 外層循環(huán) 控制行(行數(shù)、換行)
- 內(nèi)層循環(huán) 控制列( 列數(shù)、列的符號 )
第一種效果圖:
為什么是j<=i*2呢?
- 第一行以0計(jì)算,第一行星數(shù)為0
- 第二行為1計(jì)算,第二行星數(shù)為2
.。。。。
#include <stdio.h> #include <stdlib.h> int main() { int i,j; //外層控制行數(shù)和換行 for(i=0;i<5;i++) { //內(nèi)存循環(huán)控制列數(shù)和星數(shù)量 for(j=0;j<=i*2;j++) { printf("*"); } printf("\n"); } return 0; }
第二種效果圖:
為什么是4-i呢
- 第一行i=0時(shí),j是4
- 第二行i=1時(shí),j=3
.。。。。
#include <stdio.h> #include <stdlib.h> int main() { int i,j; //外層控制行數(shù)和換行 for(i=0;i<5;i++) { //內(nèi)存循環(huán)控制列數(shù)和星數(shù)量 for(j=0;j<=4-i;j++) { printf("*"); } printf("\n"); } return 0;
第三種效果圖:
為什么是輸入空格的是j<=3-i呢
- 第一行i=0,有五行,第一行應(yīng)該有4個(gè)空格,所以i從0開始話
。。。。。
#include <stdio.h> #include <stdlib.h> int main() { int i,j; //外層控制行數(shù)和換行 for(i=0;i<5;i++) { //內(nèi)存循環(huán)控制列數(shù)和星數(shù)量 for(j=0;j<=3-i;j++) { printf(" "); } for(j=0;j<=i*2;j++) { printf("*"); } printf("\n"); } return 0;
第四種效果圖:
為什么是j<i和8-i*2,自己根據(jù)上面三種圖的思路慢慢畫出來吧
int i,j; for(i=0;i<5;i++) { for(j=0;j<i;j++) { printf(" "); } for(j=0;j<=8-i*2;j++) { printf("*"); } printf("\n"); } return 0;
第五種效果圖:
三四結(jié)合就是第五種
#include <stdio.h> #include <stdlib.h> int main() { int i,j; //外層控制行數(shù)和換行 for(i=0;i<5;i++) { //內(nèi)存循環(huán)控制列數(shù)和星數(shù)量 for(j=0;j<=3-i;j++) { printf(" "); } for(j=0;j<=i*2;j++) { printf("*"); } printf("\n"); } for(i=0;i<5;i++) { for(j=0;j<i;j++) { printf(" "); } for(j=0;j<=8-i*2;j++) { printf("*"); } printf("\n"); } return 0;
再來個(gè)另類的第六種
#include <stdio.h> #include <stdlib.h> void main() { int num,i,j; printf("請輸入一個(gè)數(shù)字:"); scanf("%d",&num); //上半部分 for(i = 0;i <= num;i++) { for(j = 0;j < num-i;j++) { printf("%d",num-i); } printf("\n"); } printf("\n"); //下半部分 for(i = 0;i < num;i++) { for(j = 0;j <= i;j++) { printf("%d",i+1); } printf("\n"); }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C利用語言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)之隊(duì)列
隊(duì)列 (Queue):簡稱隊(duì),是另一種限定性的線性表,它只允許在表的一端插入元素,而在另一端刪除元素。q=(a1, a2, a3, … an),其中a1為隊(duì)頭,an為隊(duì)尾,下面文章小編將為大家詳細(xì)介紹,需要的下伙伴可以參考一下2021-10-10C++標(biāo)準(zhǔn)庫中sstream與strstream的區(qū)別詳細(xì)解析
以下是對C++標(biāo)準(zhǔn)庫中sstream與strstream的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-09-09C語言報(bào)錯:Undefined Reference的產(chǎn)生原因和解決方案
Undefined Reference(未定義引用)是C語言編譯過程中常見的錯誤之一,通常在鏈接階段出現(xiàn),本文將詳細(xì)介紹Undefined Reference的產(chǎn)生原因,提供多種解決方案,并通過實(shí)例代碼演示如何有效避免和解決此類錯誤,需要的朋友可以參考下2024-06-06C語言實(shí)現(xiàn)找出二叉樹中某個(gè)值的所有路徑的方法
這篇文章主要介紹了C語言實(shí)現(xiàn)找出二叉樹中某個(gè)值的所有路徑的方法,針對數(shù)據(jù)結(jié)構(gòu)中二叉樹的實(shí)用操作技巧,需要的朋友可以參考下2014-09-09C++保存txt文件實(shí)現(xiàn)方法代碼實(shí)例
這篇文章主要介紹了C++保存txt文件實(shí)現(xiàn)方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11