举例说明:
比如打印一个倒三角形。
* * * *
* * *
* *
*
第一层循环为行数,第二层循环为每行打印的*数,且随着行数的变化,打印的*数也随着改变。
这就是关联变量的双层循环。我的做法是,先设计第一层变量i=4;i>=1;i--,这样就保证了4行的行数正确打印。
然后,设计第二层变量j=i,j>=1,j--,这样j就能随行数的变化,而打印不同的星星数。和第二层并列的第三层用于输出空格。
比如:第一行i=4,j=4,所以打印4个*号,第二行i=3,则j=4,则打印3个*号,等等依次类推,最后打印除倒立的星星图。
完整程序如下:
#include <stdio.h>
int main(void){ for(int i=4;i>=1;i--){ for(int j=i;j>=1;j--){ printf("* "); } printf("\n"); for(int k=i-1;k<4;k++){ printf(" "); } } printf("\n"); return 0;}注意条件里面的大于和小于号的判断。另外:如果k<=4,那么就会在第二行输出2个空格,导致不对称。另外一个例子:十转八进制
/*十进制化为八进制普通版。
* 注意这种关联变量的双层for循环的用法 * */#include <stdio.h>int main(void){ int number; int jinzhi=8; int weishu=5; printf("Enter a number(5wei):"); scanf("%d",&number); printf("%o\n",number); for(int i=weishu;i>=1;i--){ int temp=number; for(int j=i-1;j>=1;j--){ temp/=jinzhi; } temp%=jinzhi; printf("%d",temp); } printf("\n"); return 0;}