第一个阶段顺利结束。随着天气逐渐变热,我们来到了第二个阶段,那就是C基础。
由于我之前有一定的C语言基础,所以前期学起来没有吃力的感觉。但随着知识体系的深入,我也开始感到费劲。特别是到达数组排序知识点的时候,基本上每经过每天高强度的填鸭式教学,头痛的非常严重。
即便如此,我还是克服种种困难,以优异的成绩进入C高级的阶段。
下面我就说说我这个阶段遇到的最棘手的问题---------用for循环和数组打印杨辉三角。
这是在第五天的时候老师留的课后作业。当时我压根不知道如何下手。只知道填写头文件以及杨辉三角是什么。
杨辉三角
后来,我想到杨辉三角是数字,且有规律可循,所以就思考,是否可以从数组和for函数出发,找到切入点。根据这个思路,将基础框架搭好。
#include <stdio.h>
#define M 10 //定义杨辉三角的行数
int main()
{
int i,j=0;
//定义一个字符串
int arr[M][M]={1};
for(i=1;i<m;i++)
{
for(j=1;j<=i;j++)//给i,j赋初值,限制i,j的范围
{
}
}
//打印杨辉三角
for(i=0;i<m;i++)
{
for(j=0;j<=i;j++)
{
}printf("\n");
}
return 0;
}
接下来便是输入输出以及打印的详细代码,通过查阅课本,上网查询资料,逐渐摸索出来门道。
#include <stdio.h>
#define M 10 //定义杨辉三角的行数
int main()
{
int i,j=0;
//定义一个字符串
int arr[M][M]={1};
for(i=1;i<m;i++)
{
arr[i][0]=1;//第一行全赋值成1
for(j=1;j<=i;j++)//给i,j赋初值,限制i,j的范围
{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
//下一行非第一位为上一行位与上一行前一位之和
}
}
//打印杨辉三角
for(i=0;i<m;i++)
{
for(j=0;j<=i;j++)
{
printf("%5d",arr[i][j]);
}printf("\n");
}
return 0;
}
运行出来的结果如下:
总结:
杨辉三角不是一个简单的知识点。它用到了数组的循环,相加,相减,还有宏定义。对于初学者来说相当具有挑战性。这一周的心得就分享到这里,后面会每个阶段都更新,愿取得更大的进步。