多重循環(huán),也稱嵌套循環(huán),由一個(gè)外層循環(huán)和一個(gè)或多個(gè)內(nèi)層循環(huán)組成。
for循環(huán)在C語言基礎(chǔ)中占有重要地位,其中最能體現(xiàn)for的多重循環(huán)的就是打印各種形狀的三角形,進(jìn)而根據(jù)打印各種三角形的規(guī)律合并打印出菱形。
首先,我們來打印最簡(jiǎn)單的幾個(gè)不同的三角形:
靠右直角三角形:
#include <stdio.h>
int main(){
int i;
int j;
// 外層循環(huán)可以打印出五行
for(i=1;i<=5;++i){
// 內(nèi)層循環(huán)依靠1、2、3、4、5,分別打印出每一行相應(yīng)數(shù)量的星星
for(j=1;j<=i;++j){
printf(" *");
}
printf("\n");
}
return 0;
}
靠左直角三角形:
#include <stdio.h>
int main(){
int i;
int j;
for(i=0;i<=5;i++){
for(j=5;j>i;j--){
printf(" ");
}
for(j=0;j<=i;j++){
printf(" *");
}
printf("\n");
}
return 0;
}
?
靠左倒直角三角形:
#include <stdio.h>
int main(){
int i;
int j;
for(i=5;i>=1;--i){
for(j=1;j<=i;++j){
printf(" *");
}
printf("\n");
}
return 0;
}
靠右倒直角三角形:
#include <stdio.h>
int main(){
int i,j;
for(i=5; i>=1; i--) {
for(j=1; j<=5-i; j++)
printf(" ");
for(j=1; j<=i; j++ )
printf("* ");
printf("\n");
}
return 0;
}
等腰三角形:
#include <stdio.h>
int main(){
int i,j;
for(i=5;i>=1;--i) {
for(j=1;j<=i;j++){
printf(" ");
}
for(j=5;j>=i;j--){
printf("*");
}
for(j=5;j>=i+1;j--){
printf("*");
}
printf("\n");
}
return 0;
}
接下來,就將上面的幾個(gè)三角形的寫法結(jié)合起來,可以打印出菱形。
下面是用星形打印的菱形:
#include <stdio.h>
int main(){
int i,j;
for(i=1; i<=5; i++) {
// 畫空格
for(j=1; j<=5-i; j++)
printf(" ");
for(j=1; j<=i; j++)
// 畫字符)
printf("* ");
for(j=1;j<=i-1;j++)
printf("* ");
printf("\n");
}
for(i=4; i>=1; i--) {
for(j=1; j<=5-i; j++)
printf(" ");
for(j=1; j<=i; j++ )
printf("* ");
for(j=1;j<=i-1;j++)
printf("* ");
printf("\n");
}
return 0;
}
然后下面是我空閑時(shí)想到用空格打印出來的空白格菱形。我根據(jù)上面的內(nèi)容的思路打印出來的菱形總有點(diǎn)問題,可以看一下下面這段代碼,這是一開始打印出來的,并不是自己滿意的菱形:
#include <stdio.h>
int main(){
int i,j;
for(i=0;i<5;i++){
for(j=5;j>i;j--){
printf(" *");
}
for(j=0;j<i;j++){
printf(" ");
}
for(j=0;j<i;j++){
printf(" ");
}
for(j=0;j<i;j++){
printf(" ");
}
for(j=0;j<i;j++){
printf(" ");
}
for(j=5;j>i;j--){
printf(" *");
}
printf("\n");
}
for(i=1;i<=5;i++){
for(j=0;j<i;j++){
printf(" *");
}
for(j=5;j>i;j--){
printf(" ");
}
for(j=5;j>i;j--){
printf(" ");
}
for(j=5;j>i;j--){
printf(" ");
}
for(j=5;j>i;j--){
printf(" ");
}
for(j=0;j<i;j++){
printf(" *");
}
printf("\n");
}
}
?我將各種三角形的打印方法結(jié)合起來打印出上面這個(gè)圖形,上面這個(gè)看起來像是菱形,但其實(shí)仔細(xì)看并不是菱形。
接著做了一下修改,之后第一行和最后一行就多出了一個(gè)星號(hào):
#include <stdio.h>
int main(){
int i,j;
for(i=0;i<5;i++){
for(j=5;j>i;j--){
printf(" *");
}
for(j=0;j<i;j++){
printf(" ");
}
for(j=1;j<i;j++){ //有修改
printf(" ");
}
// for(j=0;j<i;j++){
// printf(" ");
// }
// for(j=0;j<i;j++){
// printf(" ");
// }
for(j=5;j>i;j--){
printf(" *");
}
printf("\n");
}
for(i=2;i<=5;i++){
for(j=0;j<i;j++){
printf(" *");
}
for(j=5;j>i;j--){
printf(" ");
}
// for(j=5;j>i;j--){
// printf(" ");
// }
// for(j=5;j>i;j--){
// printf(" ");
// }
for(j=4;j>i;j--){ //有修改
printf(" ");
}
for(j=0;j<i;j++){
printf(" *");
}
printf("\n");
}
}
?上面這個(gè)看起來中間已經(jīng)得到我們想要的菱形,但是旁邊卻擠出來兩個(gè)星號(hào),還是有瑕疵。
最后就換了一種方式進(jìn)行打印得到了想要的菱形,但是感覺有點(diǎn)笨。
下面最后的代碼請(qǐng)各位參考學(xué)習(xí):
#include <stdio.h>
int main(){
int i,j;
printf(" * * * * * * * * *\n");
for(i=1;i<5;i++){ //(i=1)去掉第一行,
for(j=5;j>i;j--){
printf(" *");
}
for(j=0;j<i;j++){
printf(" ");
}
for(j=1;j<i;j++){ //******i=0改為i=1(從第二行開始打印) -------理解:上半部分的右邊部分整體向左進(jìn)k兩個(gè)空格
printf(" ");
}
// for(j=0;j<i;j++){
// printf(" ");
// }
// for(j=0;j<i;j++){
// printf(" ");
// }
for(j=5;j>i;j--){
printf(" *");
}
printf("\n");
}
for(i=2;i<5;i++){ //去掉(i=5)可以去掉最后一行 ,i=2可以從第二行開始打?。慈サ舻谝恍校?
for(j=0;j<i;j++){
printf(" *");
}
for(j=5;j>i;j--){
printf(" ");
}
// for(j=5;j>i;j--){
// printf(" ");
// }
// for(j=5;j>i;j--){
// printf(" ");
// }
for(j=4;j>i;j--){ //******(j=4)去掉第一行,從第二行開始打印 --------理解:下半部分的右邊部分整體向左進(jìn)k兩個(gè)空格
printf(" ");
}
for(j=0;j<i;j++){
printf(" *");
}
printf("\n");
}
printf(" * * * * * * * * *");
}
文章來源:http://www.zghlxwxcb.cn/news/detail-756186.html
希望對(duì)你有幫助!文章來源地址http://www.zghlxwxcb.cn/news/detail-756186.html
到了這里,關(guān)于C語言打印各種三角形和菱形(包括星形菱形與空白格菱形)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!