求助一道简单编程题!

windnum1 2006-10-22 04:15:38
输出:利用for嵌套
*****
***
*
***
*****
谁能详细点讲解这个算法
#include <stdio.h>
int main(void)
{
int n,i;

for(n=1;n<=3;n++){
for(i=5;i>=2*n-1;i--)
printf("*");
printf("\n");
}
for(n=1;n<=2;n++){
for(i=1;i<=2*n+1;i++)
printf("*");
printf("\n");
}
}
...全文
424 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
windnum1 2006-10-28
  • 打赏
  • 举报
回复
谢谢,应该是这样啊 改了之后表达的意思就变了。
dylqhjimmy 2006-10-27
  • 打赏
  • 举报
回复
for(i=5;i>=2*n-1;i--) 这段可不可以改成,for(i=3;i<=5;i++)

这样该是可以的,但是你所得到的答案就跟你原先的意思不同了,
for(n=1;n<=3;n++){
for(i=5;i>=2*n-1;i--) //每一行打几个*与前一个n的值由直接的关系,如果n=1,则打印*****,如果n=2则打印***,如果n=3,则打印*。在这里这层循环的次数是可变的
printf("*");
printf("\n"); }
若改成了
for(n=1;n<=3;n++){
for(i=3;i>=5;i--) //每一行打几个*与前一个n的值就没有关系了,不管n是几,都打印***。在这里这层循环的次数就固定为3次了。
printf("*");
printf("\n"); }

不要被别人误导了

windnum1 2006-10-25
  • 打赏
  • 举报
回复
dylqhjimmy()

能不能说清楚点?
Kusk 2006-10-23
  • 打赏
  • 举报
回复
嗯,内层循环保证次数一样就可以。i=3应该是i=2*n-1才通用吧。
windnum1 2006-10-23
  • 打赏
  • 举报
回复
for(i=5;i>=2*n-1;i--) 这段可不可以改成,for(i=3;i<=5;i++) 这样?
dylqhjimmy 2006-10-23
  • 打赏
  • 举报
回复
你的是两个嵌套
for(n=1;n<=3;n++)
for(i=5;i>=2*n-1;i--)
,如果按你改的,那么你的程序所表达的意思就变了.
本来是
*****
***
*
改完后就变成
***
***
***
windnum1 2006-10-23
  • 打赏
  • 举报
回复
呵那意思就是说可以改成for(i=3;i<=5;i++) 那样喽?
我想之所以可以这么改就因为输出的东西比较少吧,如果输出的星号很多,那个时候就不适合改! 是这样吗?
那你说的通用?i=3应该是i=2*n-1才通用吧。怎么理解?劳驾
ckt 2006-10-22
  • 打赏
  • 举报
回复
for(n=1;n<=3;n++){ //进行前三行输出的循环
for(i=5;i>=2*n-1;i--) //第一次输出5个,然后每次递减2个
printf("*");
printf("\n");
}
for(n=1;n<=2;n++){ //进行最后两行输出的循环
for(i=1;i<=2*n+1;i++) //第一次输出3个,然后递增2个
printf("*");
printf("\n");
}
hp2cy 2006-10-22
  • 打赏
  • 举报
回复
楼上讲得没错

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧