多重循环,也称嵌套循环,由一个外层循环和一个或多个内层循环组成。
for循环在C语言基础中占有重要地位,其中最能体现for的多重循环的就是打印各种形状的三角形,进而根据打印各种三角形的规律合并打印出菱形。
首先,我们来打印最简单的几个不同的三角形:
靠右直角三角形:
#include <stdio.h>
int main(){
int i;
int j;
// 外层循环可以打印出五行
for(i=1;i<=5;++i){
// 内层循环依靠1、2、3、4、5,分别打印出每一行相应数量的星星
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;
}
接下来,就将上面的几个三角形的写法结合起来,可以打印出菱形。
下面是用星形打印的菱形:
#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;
}
然后下面是我空闲时想到用空格打印出来的空白格菱形。我根据上面的内容的思路打印出来的菱形总有点问题,可以看一下下面这段代码,这是一开始打印出来的,并不是自己满意的菱形:
#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");
}
}
我将各种三角形的打印方法结合起来打印出上面这个图形,上面这个看起来像是菱形,但其实仔细看并不是菱形。
接着做了一下修改,之后第一行和最后一行就多出了一个星号:
#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");
}
}
上面这个看起来中间已经得到我们想要的菱形,但是旁边却挤出来两个星号,还是有瑕疵。
最后就换了一种方式进行打印得到了想要的菱形,但是感觉有点笨。
下面最后的代码请各位参考学习:
#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(从第二行开始打印) -------理解:上半部分的右边部分整体向左进k两个空格
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)去掉第一行,从第二行开始打印 --------理解:下半部分的右边部分整体向左进k两个空格
printf(" ");
}
for(j=0;j<i;j++){
printf(" *");
}
printf("\n");
}
printf(" * * * * * * * * *");
}
文章来源:https://www.toymoban.com/news/detail-756186.html
希望对你有帮助!文章来源地址https://www.toymoban.com/news/detail-756186.html
到了这里,关于C语言打印各种三角形和菱形(包括星形菱形与空白格菱形)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!