解题思路以及注意事项:
用while循环判断用户输入。
外层循环执行一次,就会排好一行,里层循环执行一次,会排好第i行的第j+1个数。
第i行第j个数比第j+1个数小j+i+2。
第i行第j个数比第i+1行第j个数小i+1。
运行 i=0 1 3 6 10 15 虽说是第1行,但在代码里面是i表示行,在数组里面i从0开始,第一行为i=0
i=1 2 5 9 14
i=2 4 8 13
i=3 7 12
i=4 11
方便大家对着看规律
实例代码:
#include<stdio.h> int main() { int N,i,j,a[100][100]; while(scanf("%d",&N)!=EOF) { a[0][0]=1; printf("%d",a[0][0]); for(i=0;i<N-1;i++) { a[i+1][0]=a[i][0]+i+1;//按规律排好第二行的第一个数,第二行的第一个数比第一行的第一个数大 第一行(i=0)+1 for(j=0;j<N-i-1;j++) //接上文:为下面的做准备,注意i从0开始, { a[i][j+1]=a[i][j]+j+i+2; //第一行第j+1个数比第j个数大j+第一行(i=0)+2。其中j也是从0开始 printf(" %d",a[i][j+1]); } //到这里其实就排好了第1行和第二行的第一个数 printf("\n%d",a[i+1][0]); //换行 } } printf("\n"); return 0; }
看看大家还有什么不懂的,请在下方评论区留言
0.0分
0 人评分
需要在 while 语句内加一个break 语句,不然程序只能手动关闭;
view0909 2018-03-11 12:30:41 |
emmm,我发现加了break语句,反而错了?????,求教大佬。
while(scanf("%d",&N)!=EOF),这一句中末尾的!=EOF是什么意思?在什么条件下要用到它?谢谢!
chickenboy 2017-12-12 15:53:57 |
EOF是ctrl+z 多次输入输出时使用
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:778 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:766 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码) 用函数传参的方法浏览:4120 |
printf基础练习2 (有点不明白)浏览:887 |
WU-整除问题 (C++代码)浏览:648 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:933 |
printf基础练习2 (C语言代码)浏览:653 |
矩阵乘方 (C语言代码)浏览:1079 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:726 |
用筛法求之N内的素数。 (C语言代码)浏览:595 |