永发信息网

VC++ for循环 打印一个菱形图形,已有例子!不过我看不懂,请高手详细说明一下 ,谢谢了!虽然

答案:1  悬赏:10  手机版
解决时间 2021-01-09 15:33
  • 提问者网友:疯子也有疯子的情调
  • 2021-01-09 07:19
VC++ for循环 打印一个菱形图形,已有例子!不过我看不懂,请高手详细说明一下 ,谢谢了!虽然
最佳答案
  • 五星知识达人网友:忘川信使
  • 2021-01-09 08:31
打印菱形图形其实就是打印一个正三角形和一个对应的倒三角形,但是要注意它们的位置关系。你的这个程序是要打印这样的图形
*
***
*****
*******
*****
***
*
程序是将整个图形分成了两部分用循环嵌套打印输出的,即第一部分先输出下面的正三角形
* 此行输出内容为3个空格,1个*号
*** 此行输出内容为2个空格,3个*号
***** 此行输出内容为1个空格,5个*号
******* 此行输出内容为0个空格,7个*号
这个三角形的规律就是第一行先输出3个空格(因为下面还有三行,所以这个第一行的*号,应该在屏幕第四个位置输出),然后输出1个*号,换行,准备屏幕第二行的内容输出;第二行先输出2个空格,然后再第三个位置输出3个*号,换行,准备屏幕第三行的内容输出;依次类推。可以发现关系如下:每行前的空格数等于要打印的三角形总行数-i(i等于所在的行数,即第1行i=1,第2行i=2);每行*号输出个数等于2*i-1个(i等于所在的行数,即第1行i=1,第2行i=2)。所以程序段就可以写成
//先打印上边的四行
for(i=1;i<5;i++)
{
for(j=1;j<5-i;j++) //控制打印的空格数,当i=1时,j<5-i 即j<4,j从1变化到3,输出3个空格退出此for循环
printf(" ");
for(k=1;k<=2*i-1;k++) //控制打印的星号数,当i=1,k=1时,k<=2*i-1 即k<=1,输出1个*退出此for循环
printf("*");
printf("\n"); //一行内容打印完,输出换行,程序回到外层循环,改变循环变量i的值,开始进入内层循环输出第i行内容,直到i=5不满足i<5的条件。再向下执行下面的程序,打印倒三角形。
}
第二部分打印倒三角形
***** 此行输出内容为1个空格,5个*号
*** 此行输出内容为2个空格,3个*号
* 此行输出内容为3个空格,1个*号
这个三角形的规律就是第一行先输出1个空格,然后输出5个*号,换行,准备屏幕第二行的内容输出;第二行先输出2个空格,然后再第三个位置输出3个*号,换行,准备屏幕第三行的内容输出;依次类推。可以发现关系如下:每行前的空格数等于所在的行数,即第1行i=1,第2行i=2;每行*号输出个数等于7-2*i个(7是正三角形中最后一行*的个数,i等于所在的行数,即第1行i=1,第2行i=2)。所以程序段就可以写成
//打印下边的三行
for(i=1;i<=3;i++)
{
for(j=1;j<=i;j++)//控制要打印的空格数,当i=1时,j<=i 即j<=1,满足循环条件输出1个空格退出循环
printf(" ");
for(k=1;k<=7-2*i;k++)//控制要打印的星号数,当i=1,k=1时,k<=7-2*i 即k<=5,连续输出5个*退出此for循环
printf("*");
printf("\n");//一行内容打印完,输出换行,程序回到外层循环,改变循环变量i的值,开始进入内层循环输出第i行内容,直到i>3不满足i<=3的条件。
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯