while语句的一点疑惑!!!各位大神帮忙看看吧

小呀嘛小二郎 2013-03-15 03:53:11
#include<stdio.h>
int main()
{
int i,j,n,a[20][20]={0,1};
// while(n<1||n>19)
//{
printf("请输入行数:\n");
scanf("%d",&n);
// }
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=0;i<=n;i++)
{
for(j=1;j<=i;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
return 0;
}
上面那句while我怎么看这是错的啊,去掉后也不影响结果啊,求大神们指教啊,
n一开始值不确定啊,怎么能够做判断呢?
...全文
316 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
小呀嘛小二郎 2013-03-15
  • 打赏
  • 举报
回复
引用 6 楼 whizer 的回复:
n要求范围是[1,19],如果不是则重新输入,只是开始n为随机值所以一般不会刚好落在[1,19],楼主可以输入20试试看。 改成下面可能更好理解一点: C/C++ code?1234do{ printf("请输入行数:\n"); scanf("%d",&n);}while(n<1||n>19);
赞一个,这样的话既可以避免开始时候n值得随机性问题了,
小呀嘛小二郎 2013-03-15
  • 打赏
  • 举报
回复
引用 2 楼 ardayoyo 的回复:
楼主的判断很对,那个while来得没道理 这是哪里的代码?找他们人要说法去
自己学c语言,网上找的代码,就是不明白作者这样写的依据
whizer 2013-03-15
  • 打赏
  • 举报
回复
n要求范围是[1,19],如果不是则重新输入,只是开始n为随机值所以一般不会刚好落在[1,19],楼主可以输入20试试看。 改成下面可能更好理解一点:

do{
    printf("请输入行数:\n");
    scanf("%d",&n);
}while(n<1||n>19);
小呀嘛小二郎 2013-03-15
  • 打赏
  • 举报
回复
[quote=引用 1 楼 zilaishuichina 的回复:] while是希望用户输入的n 是处于1 <= n <= 19的范围内 如果用户输入的不在这个范围 则要求重新输入[/quo while语句不是先判断再执行的吗?我认为未输入之前n的值是随机的啊,怎么能保证它执行while的内嵌语句呢?这点想不明白啊
starytx 2013-03-15
  • 打赏
  • 举报
回复
i,j,n未初始化,值不确定就使用,这种行为未定义
sbysby00 2013-03-15
  • 打赏
  • 举报
回复
n有自己的范围的,必须是0到19之间,输入不在这个范围内则无法运行。
ardayoyo 2013-03-15
  • 打赏
  • 举报
回复
楼主的判断很对,那个while来得没道理 这是哪里的代码?找他们人要说法去
zilaishuichina 2013-03-15
  • 打赏
  • 举报
回复
while是希望用户输入的n 是处于1 <= n <= 19的范围内 如果用户输入的不在这个范围 则要求重新输入

69,369

社区成员

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

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