1、最简单的换行嵌套,一个for循环控制行数,一个for循环控制每行输出量。
#include <stdio.h> /*输出类似于 $ $$ $$$ $$$$ $$$$$ */ int main(void) { int m,n; for(m=1;m<=5;m++) for(n=1;n<=m;n++) { printf("$"); if(n==m) printf("\n"); } }2、相比于第一例,多了一个字符倒序输出,利用数组下标中加上变量n实现。
#include <stdio.h> /*输出形如 F FE FED FEDC FEDCB FEDCBA */ int main(void) { char lett[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int m,n; for(m=1;m<=6;m++) for(n=1;n<=m;n++) { printf("%c",lett[6-n]); if(n==m) printf("\n"); } }3、这个的难点在于一开始不理解ch++的正确使用方法,直接使用数组的方式两个循环嵌套去做,(错误)代码如下:
#include <stdio.h> int main(void) { char lett[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int m,n; for(m=0;m<=6;m++) for(n=0;n<=m;n++) { printf("%c",lett[m+n]); if(n==m) printf("\n"); } }先看这个的输出结果
前两行没有问题,后面出现问题,那是为什么呢,可以发现,第一个循环每次加一过后,第二个循环都会初始化为0,也就是说,A可以理解为0+0,B=1+0,C=1+1,然后第一个循环变成2,第二个循环为0,也就是第三行又出现了一个C。
正确代码如下:
#include <stdio.h> /*输出形如 A BC DEF GHIJ KLMNO PQRSTU */ int main(void) { char ch='A'; int i,j; for(i=1;i<7;i++) //控制行数 { for(j=0;j<i;j++) //控制每行字母个数 printf("%c",ch++); //ch每次操作递增 printf("\n"); } return 0; }4、该例根据用户不同的输入值进行不同的输出,前三例稍加修改也可以的,有种复杂的写法用了四个循环,一个循环控制行数,内部三个循环一个循环打印空格,一个循环打印升序字母,一个循环打印降序字母。该例用了一个for循环加上if…else语句直接完成升序和降序字母的输出。
#include <stdio.h> /*输出形如 ***A **ABA *ABCBA 的图形,其中“*”代表空格,行数由用户定义 */ int main(void) { int i,j,k; char input; printf("please input a capital letters:"); //输入大写字母以定义行数 scanf("%c",&input); for(i=0;i<(int)(input-'A'+1);i++) //控制行数 { for(j=1;j<=(int)(input-'A'+1-i);j++) //打印空格 printf(" "); for(k=0;k<=2*i;k++) //打印字母 if(k<=i) putchar('A'+k); else putchar('A'+2*i-k); printf("\n"); } }