有没有人能解释下面这个C语言程序for循嵌套的每一步的作用,实在看不懂啊

这是程序:
#include<stdio.h> main() { int i,j,k,n; printf("Enter n(integer):\n"); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=n;j>i;j--) printf(" "); for(k=1;k<=2*i-1;k++) printf("%c",64+i); printf("\n"); } }
这是输入20之后的结果:
里面的i j k n 都是用来干什么的啊 64+i 又是什么呢 感谢……

首先输入的n是控制行数。

for(i=1;i<=n;i++)
就是控制这个for循环执行几次,你输入的是20,所以当i等于21时这个循环不再执行,也就是从1到21执行了20次。

for(j=n;j>i;j--)这个for循环是控制每行字母前的空格位数。
j等于n ,n等于20。以第一行为例,当第一个for循环执行第一次的时候i的值是1
for(j=20; 20>i; j--); 这里一共执行了20次,就是说A前面的空格有20个。
for(j=20; 20>2; j--); 这是当第一个for循环for(i=1;i<=n;i++) 执行到第二次时, i 等于2,所以第二行B前面有19个空格。

for(k=1;k<=2*i-1;k++)
以第一个for循环执行一次为例,i 等于 1 ,
k等于1, 1<=2*1-1, printf("%c",64+i); 输出字母 , k加一
k等于2, 2<=2*1-1 不成立 跳出循环,这个for循环执行了一次 ,只输出一个字母(第一行A)

printf("\n"); 换行

for(i=1;i<=n;i++) 执行第二次 i 等于 2
for(k=1;k<=2*i-1;k++) 也就是 for(k=1;k<=2*2-1;k++)
这次这个for循环从 k 为1 到 k 为4 循环了 3次 也就是输出3个字母(BBB)

-----------------------------------------------------
像这种问题就利用这种方法一步一步的试数几乎就都能看懂了(把自己当机器,按照顺序一步一步的看)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-19
#include<stdio.h>
main()
{
int i,j,k,n;
printf("Enter n(integer):\n");
scanf("%d",&n);
for(i=1;i<=n;i++) //枚举每一行
{
for(j=n;j>i;j--)//一开始第I行有n-i+1个空格
printf(" ");
for(k=1;k<=2*i-1;k++) //中间有2*i-1个字母
printf("%c",64+i); //输出第i行应该输出的字母,64+i是ascii码的转换值
printf("\n"); //换行
}
}
求采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网