當前位置:首頁 » 編程語言 » 如何用c語言輸出一個菱形的圖案
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

如何用c語言輸出一個菱形的圖案

發布時間: 2022-11-14 19:58:02

c語言輸出菱形

工具/材料

ubuntu+vim+gcc

  • 01

    首先,輸入預處理指令#include <stdio.h>與函數原型void print(int n)。
    其中,n表示行數。

  • 02

    然後,對輸入的n進行提前判斷,若小於0或為偶數,則結束列印。

  • 03

    接著對上半個菱形進行輸出(包括最長的行)。使用兩層循環進行輸出,分別控制行數與行內的位置。

  • 04

    接著對下半個菱形進行輸出(包括最長的行)。也使用兩層循環進行輸出,分別控制行數與行內的位置。

  • 05

    對n=5與n=7進行輸出測試,代碼如下。

  • 06

    編譯運行後的結果如下

  • 07

    以下是所有的代碼:
    #include <stdio.h>

    void print(int n)
    {
    //判斷n是否符合正奇數的要求
    if(n < 0 || n % 2 == 0)
    //不符合則直接退出
    return;
    //對上半個菱形輸出
    int i = 1,j = 1;
    //i控制行數
    for(i = 1; i <= (n + 1) / 2; i++)
    {
    //j控制每一行的位置
    //輸出空格
    for(j = 1; j <= (n+1)/2 - i; j++)
    printf(" ");
    //輸出*
    for(j = 1; j <= 2 * i - 1; j++)
    printf("*");
    //輸出換行
    printf(" ");
    }
    //輸出下一半
    //i控制行數
    for(i = 1; i <= n/2; i++)
    {
    //j控制每一行的位置
    //輸出空格
    for(j = 1; j <= i; j++)
    printf(" ");
    //輸出*
    for(j = 1; j <= n -2 * i; j++)
    printf("*");
    //輸出換行
    printf(" ");
    }
    }

    //測試函數,測試n=5和n=7
    int main()
    {
    printf("5 ");
    print(5);
    printf("7 ");
    print(7);
    return 0;
    }

❷ 用C語言輸出菱形圖案

額,我的版本(算比較精煉的吧...):

#include<stdio.h>
#defineCOUNT_NUM7
#defineMID_INDEX((COUNT_NUM-1)/2)
#defineOFFSET(x)((x)-MID_INDEX)
#defineABS(x)((x)>0?(x):-(x))
intmain()
{
for(inti=0;i<COUNT_NUM;i++,printf(" "))
for(intj=0;j<COUNT_NUM;j++)
ABS(OFFSET(i))+ABS(OFFSET(j))>MID_INDEX?printf(""):printf("*");
return0;
}

❸ 用C語言列印菱形圖案的方法是什麼

  1. 下面的程序是菱形列印的【終結者】,改變下設置,就基本可以滿足所有菱形列印的題目。程序主體 for 語句只有9行,簡單而強大 */#include <stdio.h>#include <stdlib.h>#include <string.h>// 這個小函數用來輸出 repeatTimes 個字元

  2. #includevoid main(){printf(" * ");printf(" *** ");printf(" ***** ");printf(" *** ");printf(" * ");} 這是最簡單的。下面一個稍微復雜一點。#includevoid main(){int i=0,j=0,k=0;for(i=0;i{for(j=6-i;j>=0;j--){putchar(' ')...

  3. 手機黨輸入#include"stdio.h"main(){printf(" * ");printf(" * * ");printf(" * * ");printf(" * * ");printf(" * ");}

❹ 如何用c語言編程題輸出菱形圖形

#include "stdio.h" void PrintDiamend(int n) { int i,j,k; if(n==0) n=1; for(i=1;i<=n;i++) { for(j=i;j<n;j++) printf(" "); for(k=1;k<i+1;k++) printf("*"); for(k=1;k<i;k++) printf("*"); printf("\n"); } for(i=1;i<n;i++) { for(j=0;j<i;j++) printf(" "); for(k=i;k<n;k++) printf("*"); for(k=i;k<n-1;k++) printf("*"); printf("\n"); } } int main() { PrintDiamend(4); return 0; }

❺ 用C語言列印 *菱形 圖案

/*下面的程序是菱形列印的【終結者】,
改變下設置,就基本可以滿足所有菱形列印的題目。
程序主體 for 語句只有9行,簡單而強大
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 這個小函數用來輸出 repeatTimes 個字元 c
void printChar(char c,int repeatTimes)
{
int i;
for(i=0;i<repeatTimes;i++)
printf("%c",c);
}
/*
特別的函數,獲取當前要列印的下一個菱形圖案
height : 菱形的高
shapeVariantStep : 變化的步數
baseShape : 菱形的基本圖案
row : 當前列印的菱形圖案的行坐標。
col : 當前列印的菱形圖案的列坐標。
*/
char _buffer_[2]={0};
char* getShape(int height,int shapeVariantStep,char baseShape[],int row,int col)
{

int first = baseShape[0],last = first +(height-1)/2*shapeVariantStep;
if(shapeVariantStep==0 || strlen(baseShape)!=1)
return baseShape;
else
{
if( first>='0'&&first<='9'&&last<='9' ||
first>='a'&&first<='z'&&last<='z' ||
first>='A'&&first<='Z'&&last<='Z'
)
{
_buffer_[0] = first + ((height-2*abs(row)-1)/2 - abs(col))*shapeVariantStep;
_buffer_[1] = '\0';
return _buffer_;
}
else
{
return baseShape;
}
}
}

int main(int argc, char *argv[])
{
// 菱形的圖案
char shape[]="*";
// 菱形圖案間的空白圖案
char space=' ';
// 每個圖案之間的最小間隔(以一個字元為單位,不足用空白圖案填充)
int interval=5;
// 菱形的高(要求是奇數)
int height=7;
// 菱形是否空心(只有邊上的圖案)。是:1,否 0
int isHollow=0;
/* 特別的參數:設定菱形的圖案是變化。
只有指定 shape 為 :
"0","1",...,"9",
或者 "a","b",...,"z",
或者 "A","B",...,"Z" 其中之一,
並且要保證從指定圖形開始,後面至少還有連續的:
(height-1)/2*shapevariantStep
個可選的圖形,菱形的圖形才會是可變的。

*/
int shapeVariantStep = 0;

int i,j,k,n;
interval = interval < strlen(shape)?strlen(shape):interval;
for(i=-(height-1)/2;i<=(height-1)/2;i++)
{
// 用來輸出每行前的空白
printChar(space,abs(i)*interval);
// 這個 for(j) 語句用來輸出每行的菱形圖案
for(j=-(height-2*abs(i)-1)/2;j<=(height-2*abs(i)-1)/2;j++)
{
// 如果是非空心,輸出所有圖案;否則只輸出兩端的圖案。
if(!isHollow || (isHollow && (j==0 || j==height-2*abs(i)-1)))
{
n=printf("%s",getShape(height,shapeVariantStep,shape,i,j));
// 補齊為到寬度為 interval
printChar(space,interval-n);
}
// 對於空心的菱形,在本應該輸出圖案的地方,輸出空白。
else
{
printChar(space,interval);
}
}
// 這個 for(j) 語句用來輸出每行後的空白
printChar(space,abs(i)*interval);
printf("\n");
}
return 0;
}
/*
運行結果:
shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*

shape[]="**";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
**
** ** **
** ** ** ** **
** ** ** ** ** ** **
** ** ** ** **
** ** **
**

shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
...............*...................
..........*....*....*..............
.....*....*....*....*....*.........
*....*....*....*....*....*....*....
.....*....*....*....*....*.........
..........*....*....*..............
...............*...................

shape[]="*";
space[]=" ";
interval=0;
height=7;
isHollow=0;
shapevariantStep = 0
*
***
*****
*******
*****
***
*

shape[]="*";
space[]=" ";
interval=5;
height=11;
isHollow=0;
shapevariantStep = 0
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=1;
shapevariantStep = 0
*
* *
* *
* *
* *
* *
*

shape[]="A";
space[]=" ";
interval=5;
height=17;
isHollow=0;
shapevariantStep = 1
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
shape[]="a";
space[]=" ";
interval=5;
height=17;
isHollow=0;
shapevariantStep = 1
a
a b a
a b c b a
a b c d c b a
a b c d e d c b a
a b c d e f e d c b a
a b c d e f g f e d c b a
a b c d e f g h g f e d c b a
a b c d e f g h i h g f e d c b a
a b c d e f g h g f e d c b a
a b c d e f g f e d c b a
a b c d e f e d c b a
a b c d e d c b a
a b c d c b a
a b c b a
a b a
a

shape[]="1";
space[]=" ";
interval=5;
height=9;
isHollow=0;
shapevariantStep = 2
1
1 3 1
1 3 5 3 1
1 3 5 7 5 3 1
1 3 5 7 9 7 5 3 1
1 3 5 7 5 3 1
1 3 5 3 1
1 3 1
1

*/

❻ c語言輸出菱形

按照題目要求編寫的C語言輸出菱形的程序如下(其中abs()是求絕對值的函數)

#include<stdio.h>

#include<stdlib.h>

intmain()

{

inti,j,N,n;

scanf("%d",&N);

n=(N+1)/2;//計算菱形上層層數

for(i=1;i<=N;i++){

for(j=1;j<=abs(n-i);j++){

printf("");

}

for(j=1;j<=N-2*abs(i-n);j++){

printf("*");

}

printf(" ");

}

return0;

}

❼ c語言輸出菱形

java語言輸出菱形:

publicstaticvoidmain(String[]args){
introw=11;//設置列印的行數,11也就是菱形對角線的長。
for(inti=0;i<row;i++){
for(intj=0;j<row;j++){
//左上,右上,左下,右下四個角列印空格
//可以一個判斷語句寫出,四個判斷分別對應四個角的位置
if(i<row/2&&(j<row/2-i||j>row/2+i)||
i>row/2&&(j<i-row/2||j>row-i+row/2-1)){
//滿足條件列印空格
System.out.print("");
}else{
//不滿足條件列印*
System.out.print("*");
}
}
//一次循環結束,換行
System.out.println();
}
System.out.println("---------------------------------");

//下面列印花紋。很多菱形循環排列
//設置橫排重復次數15,豎排重復次數12。共15*12個菱形,每一個菱形是11的對角線長
intwCount=15;
inthCount=12;
intwRows=row*wCount;
inthRows=row*hCount;
for(inti=0;i<hRows;i++){
inttemp1=i;
i=i%row;
for(intj=0;j<wRows;j++){
inttemp2=j;
j=j%row;
if(i<row/2&&(j<row/2-i||j>row/2+i)||
i>row/2&&(j<i-row/2||j>=row+row/2-i)){
System.out.print("");
}else{
System.out.print("*");
}
j=temp2;
}
i=temp1;
System.out.println();
}

}

❽ C語言輸出一個菱形圖案(有程序)


菱形,就是如下所示的圖形,總行數與總列數相等:
寫一個程序,根據用戶輸入的總行數,列印出菱形。

這個題目主要是找出規律,考察讀者的邏輯思維。

你可以從第一行開始,遍歷所有的列,也可以從第一列開始,遍歷所有的行。

下面的程序從第一行開始,遍歷所有的列。

設菱形的總行數為line,總列數為column,當前行為i,當前列為j。上半部分與下半部分的規律不一樣,應該分開討論。

我們著眼於星號(*),思考什麼條件下輸出星號,總結出如下的規律。

1) 對於上半部分(包括中間一行),當前行與當前列滿足如下關系輸出星號:

  • j>=(column+1)/2-(i-1) (column+1)/2-(i-1)為第i行最左邊的星號

  • j<=(column+1)/2+(i-1) (column+1)/2+(i-1)為第i行最右邊的星號


  • 2) 對於下半部分,當前行與當前列滿足如下關系輸出星號:


  • j>=(column+1)/2-(line-i) (column+1)/2-(line-i)為第i行最左邊的星號

  • j<=(column+1)/2+(line-i) (column+1)/2+(line-i)為第i行最右邊的星號


  • 不滿足上述條件,則輸出空格。



  • 於是寫出如下的代碼:純文本復制


  • #include <stdio.h>#include <stdlib.h>int main(){int line; // 菱形總行數int column; // 菱形總列數int i; // 當前行int j; // 當前列printf("請輸入菱形的行數(奇數):");scanf("%d", &line);if(line%2==0){ // 判斷是否是奇數printf("必須輸入奇數! ");exit(1);}column = line; // 總行數和總列數相同for(i=1; i<=line; i++){ // 遍歷所有行if(i<(line+1)/2+1){ // 上半部分(包括中間一行)for(j=1; j<=column; j++){ // 遍歷上半部分的所有列if( (column+1)/2-(i-1)<=j && j<=(column+1)/2+(i-1) ){printf("*");}else{printf(" ");}}}else{ // 下半部分for(j=1; j<=column; j++){ // 遍歷下半部分的所有列if( (column+1)/2-(line-i)<=j && j<=(column+1)/2+(line-i) ){printf("*");}else{printf(" ");}}}printf(" ");}return 0;}


❾ 用C語言編程輸出菱形 圖案

#include<stdio.h>
void main()
{
int i,j,k;
for(i=1;i<=4;i++) //先列印上邊的四行
{
for(j=1;j<=4-i;j++) //控制要列印的空格數量
printf(" ");
for(k=1;k<=2*i-1;k++) //控制要列印的星號數
printf("*");
printf(" ");
}
for(i=1;i<=3;i++)
{
for(j=1;j<=i;j++) //控制要列印的空格數
printf(" ");
for(k=1;k<=7-2*i;k++) //控制要列印的星號數
printf("*");
printf(" ");
}
}

(9)如何用c語言輸出一個菱形的圖案擴展閱讀:

for循環

for循環結構是c語言中最具有特色的循環語句,使用最為靈活方便,它的一般形式為:

for(表達式1;表達式2;表達式3)循環體語句 。(其中;不能省略)

表達式

表達式1為初值表達式,用於在循環開始前為循環變數賦初值。

表達式2是循環控制邏輯表達式,它控制循環執行的條件,決定循環的次數。

表達式3為循環控制變數修改表達式,它使for循環趨向結束。

循環體語句是在循環控制條件成立的情況下被反復執行的語句。

但是在整個for循環過程中,表達式1隻計算一次,表達式2和表達式3則可能計算多次,也可能一次也不計算。循環體可能多次執行,也可能一次都不執行。

先執行表達式2,然後執行循環結構,最後表達式3,一直這樣循環下去。

for循環語句是c語言種功能最為強大的語句,甚至在一定程度上可以代替其他的循環語句。

do

do循環結構,do 1 while⑵;的執行順序是1->2->1...循環,2為循環條件。

while

while循環結構,while(1) 2; 的執行順序是1->2->1...循環,1為循環條件

以上循環語句,當循環條件表達式為真則繼續循環,為假則跳出循環。