當前位置:首頁 » 編程語言 » 數字菱形c語言流程圖
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

數字菱形c語言流程圖

發布時間: 2023-03-30 07:53:35

A. c語言空心菱形流程圖

#include<stdio.h>voidLozenge0(intn,charch){//空心菱形inti,j;for(i=0;i<n;++i){//上半部分for(j=0;j<=n-i;++j)printf("");//輸出每行前導空格printf("%c",ch);for(j=0;j<2*i-1;++j)printf("");//菱形內部空格if(i)printf("%c",ch);printf(" ");}for(i=n-2;i>=0;--i){//下半部分for(j=0;j<=n-i;++j)printf("");//輸出每行前導空格printf("%c",ch);for(j=0;j<2*i-1;++j)printf("");//菱形內部空格if(i)printf("%c",ch);printf(" ");}}intdiffabs(inta,intb){//返回a,b差值的絕對值,即|a-b|return(a>b)?(a-b):(b-a);}voidLozenge(unsignedintn,charc){unsignedinti,j,m;for(i=0;i<n;i++){m=diffabs(n/2,i);for(j=0;j<=m;j++)printf("");//輸出每行前導空格for(j=0;j<(n+1)/2-m;j++)printf("%c",c);printf(" ");}}intmain(){intn=10;charch='*';Lozenge0(n,ch);Lozenge(n,ch);return0;}

B. 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. c語言,輸出由數字組成的菱形圖形。求如何編寫。謝謝!

#include<stdio.h>
#include<鋒瞎stdlib.h>
#include<math.h>銀穗空
intmain()
{
inti=0;
intj=0;
intn;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
{
printf("");
}
for(j=1;j<=2*i-1;j++)
{
printf("%d",i);
}
for(j=0;j<abs(n/2-i);j++)
{
printf("");
}
printf(" ");
}

for(i=n-1;i>0;i--)
{
for(j=1;j<=n-i;j++)
{
printf("");
}
for(j=1;j<=2*i-1;j++)
{
printf("%d",i);
}
for(j=0;j<abs(n/2-i);j++)
{
printf("");
}
族蠢printf(" ");
}
}
return0;
}

D. C語言編程列印菱形的數字圖表

#include "stdio.h"

int main() {

int n,i,j;

while(scanf("%d",&n)) {

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

for(j=1; j<=n-i; j++) //畫空格

printf(" ");

for(j=1; j<=i; j++)

printf("%d",j);//輸出從1到n

for(j=i-1; j>=1; j--)

printf("%d",j);//輸出從n-1到1

printf(" ");

}

for(i=n-1; i>=1; i--) {

for(j=1; j<=n-i; j++) //畫空格

printf(" ");

for(j=1; j<=i; j++)

printf("%d",j);//輸出從1到n

for(j=i-1; j>=1; j--)

printf("%d",j);//輸出從n-1到1

printf(" ");

}

}

return 0;

}

(4)數字菱形c語言流程圖擴展閱讀:

書寫規則

1、一個說明或一個語句佔一行。

2、用{} 括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。

3、低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。

網路-c語言

E. 高分!速求畫一個簡單的C語言流程圖!!(題目是輸出一個菱形,程序已知。。)

1,
代碼風格不好,不好閱讀
2,
代碼有錯誤
printf("\n")沒有";"結束 沒有掛掘肢#include<stdio.h>判型世
3,
代碼擴展性不租老好,形狀大小固定
4,
流程圖和注釋正在寫,一會貼出來

下面小做調整,NUM後面的數字4,10,21,....隨便改

/******************************************\
* 流程圖
* 開始
*
* 循環A 輸出菱形上半三角部分NUM行
*
* 循環1 j行輸出空格NUM-i個空格
* NUM-i個空格是否結束 沒有繼續循環1 結束往下
*
* 循環2 k行輸出空格2*i-1個*
* 2*i-1個*是否結束 沒有繼續循環2 結束往下
*
* 輸出換行
*
* NUM行是否結束 沒有繼續循環A 結束往下
*
* 循環B 輸出菱形下半三角部分NUM-1行
*
* 循環3 j行輸出空格i個空格
* i個空格是否結束 沒有繼續循環1 結束往下
*
* 循環4 k行輸出空格(2*NUM-1)-2*i個*
* (2*NUM-1)-2*i個*是否結束 沒有繼續循環2 結束往下
*
* 輸出換行
*
* NUM-1行是否結束 沒有繼續循環B 結束往下
*
* 結束
*
\******************************************/
#include<stdio.h>

#define NUM 10

void main()
{
int i,j,k;
for(i=1;i<=NUM;i++) //循環A
{
for(j=1;j<=NUM-i;j++) //循環1
{
printf(" ");
}
for(k=1;k<=2*i-1;k++) //循環2
{
printf("*");
}
printf("\n");
}

for(i=1;i<NUM;i++) //循環B
{
for(j=1;j<=i;j++) //循環3
{
printf(" ");
}
for(k=1;k<=(2*NUM-1)-2*i;k++) //循環4
{
printf("*");
}
printf("\n");
}
}

F. C語言輸出數字菱形

#include<stdio.h>
#include<math.h>
intmain()
{intn,i,j;
scanf("%d",&n);
printf("%*d ",n,n);
for(i=2-n;i<n-1;i++)
{if(i)printf("%*c",abs(i),'');
for(j=n;j>1+abs(i);j--)
printf("%d",j);
for(;j<=n;j++)
printf("%d",j);
printf(" ");
}
if(n>1)printf("%*d ",n,n);
return0;
}

G. 用C語言編程出輸入任意數字就能跳出這個數字的菱形圖【比如說輸入2就能跳出都由數字2組成的菱形圖】

#include<stdio.h>
intmain(void)
{
inti,j,k;
charc;
printf("請輸入一個數字:");
scanf("%c",&c);
for(i=0;i<3;i++)
{
for(j=碧塵舉0;j<2-i;j++)
printf("");
for(k=0;k<2*i+1;k++)
printf("%c",c);
printf(" ");
}
for(i=0;i兄慶<2;i++)
{
for(j=0;j<i+1;j++)
printf("");
悔碧for(k=0;k<3-2*i;k++)
printf("%c",c);
printf(" ");
}
return0;
}

是這樣么?

H. 輸出一個七行的菱形,用c語言。

# include <stdio.h>

void main()
{
int i, j, k;
/* 變數i從0到3,表坦蘆示所畫菱形圖的第一至第四行 */
for(i = 0; i <= 3; i++)
{
/* 當行數為i時,空格數是i的函數,為2-i個 */
for(j = 0; j <= 2-i; j++)
printf(" ");
/* 字母數也是i的函數,為2i+1個 */
for(k = 0; k <= 2*i; k++)
printf(1+i); /* 輸出數字 */
printf("\n");
}
/* 變數i從0到2,表示所畫菱形圖的第五至第七行 */信陵
for(i = 0; i <= 2; i++)
{
/* 當行數為i時,空讓坦帶格數是i的函數,此時為i個 */
for(j = 0; j <= i; j++)
printf(" ");
/* 字母數也是i的函數,此時為4-2*i個 */
for(k = 0; k <= 4-2*i; k++)
printf(3-i); /* 輸出數字 */
printf("\n");

I. 用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為循環條件

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

J. 求一個輸出菱形的c語言的流程圖,「行」一個循環,然後把菱形分為上三角(四行的)和下三角(三行)

學習C語言始終要記住「曙光在前頭汪胡灶」和「千金難買回頭看」,「千金難買回頭看」是學習知識的重要方法,就是說,學習後面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。比如:在C語言中最典型的是關於結構化程序設計構思,不管是那種教材,一開始就強調這種方法,這時也許你不能充分體會,但是學到函數時,再回頭來仔細體會,溫故知新,理解它就沒有那麼難了。學習C語言就是要經過幾個反復,才能前後貫穿,積累應該掌握的C知識。
那麼,我們如何學好《C程序設計》呢?
一.學好C語言的運算符和運算順序
這是學好《C程序設計》的基礎,C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。
先要明確運算符按優先順序不同分類,《C程序設計》運算符可分為15種優先順序,從高到低,優先順序為1 ~ 15,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序。下面我們通過幾個例子來說明:
(1) 5*8/4%10 這個表達式中出現3種運算符,是同級運算符,運算順序按從左至右結合,因此先計算5 *8=40,然後被4除困扮,結果為10,最後是%(求余數)運算,所以表達式的最終結果為10%10 = 0;
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
對於c=++a*b來說,按表中所列順序,+ +先執行,*後執行,所以+ + a執行後,a的值為4,由於+ +為前置運算,所以a的值4參與運算,C的值計算式為4*5=20而不是3*5=15了;而對於d=a++*b來說,由於a + +為後置運算,所以a值為4參與運算,使得d的值仍為20,而a參與運算後其值加1,值為5。這個例子執行後,a的值為5,b的值為5,c的值為20,d的值也是20;
(3)(a = 3,b = 5,b+ = a,c = b* 5)
例子中的「,」是逗號結合運算,上式稱為逗號表達式,自左向右結合,最後一個表達式的結果值就是逗號表達式的結果,所以上面的逗號表達式結果為40,a的值為3,b的值為8,c的值為40。
(4)a=5;b=6;c=ab?a:b;
例做搭中的ab?a:b是一個三目運算,它的功能是先做關系運算ab部分,若結果為真,則取問號後a的值,否則取冒號後b的值,因此c的值應該為6,這個運算可以用來代替if…else…語句的簡單應用。
二.學好C語言的四種程序結構
(1)順序結構
順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。
例如;a = 3,b = 5,現交換a,b的值,這個問題就好象交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為: c = a; a = b; b = c; 執行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑 r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。
(2) 分支結構
順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對於要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。分支結構適合於帶有邏輯或關系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然後根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易於理解。程序流程圖是根據解題分析所繪制的程序執行流程圖。
學習分支結構不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執行的功能,嵌套結構也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結構。
①if(條件)
{
分支體
}
這種分支結構中的分支體可以是一條語句,此時「{ }」可以省略,也可以是多條語句即復合語句。它有兩條分支路徑可選,一是當條件為真,執行分支體,否則跳過分支體,這時分支體就不會執行。如:要計算x的絕對值,根據絕對值定義,我們知道,當x=0時,其絕對值不變,而x0時其絕對值是為x的反號,因此程序段為:if(x0) x=-x;
②if(條件)
{分支1}
else
{分支2}
這是典型的分支結構,如果條件成立,執行分支1,否則執行分支2,分支1和分支2都可以是1條或若干條語句構成。如:求ax^2+bx+c=0的根
分析:因為當b^2-4ac=0時,方程有兩個實根,否則(b^2-4ac0)有兩個共軛復根。其程序段如下:
d=b*b-4*a*c;
if(d=0)
{x1=(-b+sqrt(d))/2a;
x1=(-b-sqrt(d))/2a;
printf(「x1=%8.4f,x2=%8.4f\n」,x1,x2);
}
else
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf(「x1=%8.4f+%8.4fi\n」r, i);
printf(「x2=%8.4f-%8.4fi\n」r,i)
}
③嵌套分支語句:其語句格式為:
if(條件1) {分支1};
else if(條件2) {分支2}
else if(條件3) {分支3}
……
else if(條件n) {分支n}
else {分支n+1}
嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套後,語句結構變得非常復雜,對於程序的閱讀和理解都極為不便,建議嵌套在3重以內,超過3重可以用下面的語句。
④switch開關語句:該語句也是多分支選擇語句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同 if…else 語句,它的所有分支都是並列的,程序執行時,由第一分支開始查找,如果相匹配,執行其後的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應用時要特別注意開關條件的合理設置以及break語句的合理應用。
(3)循環結構:
循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do –while循環和for循環。四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤,在學習中我們主要學習while、do…while、for三種循環。常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環的格式和執行順序,將每種循環的流程圖理解透徹後就會明白如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。特別要注意在循環體內應包含趨於結束的語句(即循環變數值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。
在學完這三個循環後,應明確它們的異同點:用while和do…while循環時,循環變數的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while 循環和for循環都是先判斷表達式,後執行循環體,而do…while循環是先執行循環體後判斷表達式,也就是說do…while的循環體最少被執行一次,而while 循環和for就可能一次都不執行。另外還要注意的是這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與 if構成的循環,是不能用break和 continue語句進行控制的。
順序結構、分支結構和循環結構並不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,其實不管哪種結構,我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現各種演算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結構重復多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結構。
(4)模塊化程序結構
C語言的模塊化程序結構用函數來實現,即將復雜的C程序分為若干模塊,每個模塊都編寫成一個C函數,然後通過主函數調用函數及函數調用函數來實現一大型問題的C程序編寫,因此常說:C程序=主函數+子函數。因些,對函數的定義、調用、值的返回等中要尤其注重理解和應用,並通過上機調試加以鞏固。
三.掌握一些簡單的演算法
編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應的編程語言寫出代碼。這就要求掌握演算法,根據我們的《C程序設計》教學大綱中,只要求我們掌握一些簡單的演算法,在掌握這些基本演算法後,要完成對問題的分析就容易了。如兩個數的交換、三個數的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些演算法的內在含義,其中選擇法排序和冒泡法排序稍難,但只要明白排序的具體過程,對代碼的理解就不難了。如用選擇法對10個不同整數排序(從小到大),選擇法排序思路:設有10個元素a[1]~a[10],將a[1]與a[2]~a[10]比較,若a[1]比a[2]~a[10]都小,則不進行交換,即無任何操作;若a[2]~a[10] 中有一個比a[1]小,則將其中最大的一個(假設為a)與a[1]交換,此時a[1]中存放了10個中最小的數。第二輪將a[2]與a[3]~a[10] 比較,將剩下9個數中的最小者a與a[2]交換,此時a[2] 中存放的10個數中第2小的數;依此類推,共進行9輪比較,a[1]到a[10]就已按從小到大的順序存放。即每一輪都找出剩下數中的最小一個,代碼如下:
for(i=1;i=9;i++)
for(j=i+1;j=10;j++)
if(aa[j]
{temp=a;
a=a[j];
a[j]=temp;
}
結語:當我們把握好上述幾方面後,只要同學們能克服畏難、厭學、上課能專心聽講,做好練習與上機調試,其實C語言並不難學。