不知不觉大一上半年马上就要过去了,上一篇博客还是还没有踏进大学校园写的,当初设想的两个星期就整理一次自己的学习成果也没有作数(确实是有点懒),现在马上放假了,想到再写一篇博客来记录自己的成长。
其实这一年的收获还是挺多的,除了大家都会学习的通识课之外,最让我感到着迷的还是C语言,对比我的大多数同学我还是有一点基础的(因为我在假期里自学了一点,其实回想起来只学到的东西其实很少,但是只要懂一点在学的时候就会很有帮助),所以我在学习的时候遇到的困难并没有很多。相反我对于将一个很复杂的问题交给计算机去处理的感觉感到着迷。C语言难的从来不是语法,而是解决问题的思想,一旦养成了解决问题的思想,编程就会变得非常迷人。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, m, i, j;
printf("请输入行:\n");
scanf("%d", &n);
printf("请输入列:\n");
scanf("%d", &m);
int a[n][m];
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
scanf("%d", &a[i][j]);
}
}
int max_p, min_l, maxj, mini;
int ispoint = 0, k;
for (i = 0; i < n; i++)
{
max_p = a[i][0];
maxj = 0; //列号
//找到第i行中最大的值
for (j = 0; j < m; j++)
{
if (a[i][j] > max_p)
{
max_p = a[i][j];
maxj = j;
}
}
//该列号下的最小值
min_l = a[0][maxj];
mini = 0;
for (k = 0; k < n; k++)
{
if (min_l > a[k][maxj])
{
min_l = a[k][maxj];
mini = k; //最小值的行号
}
}
if (mini == i)
{
printf("a[%d][%d]=%d\n", mini, maxj, a[mini][maxj]);
ispoint = 1;
}
}
if (ispoint != 1)
printf("None");
return 0;
}
第一个是我老师给出的示例,第二个是我自己写出的代码。这是一个求二维数组鞍点的问题,两个代码虽然都能解决问题,但是第一个只用了一屏的代码,而且他的思路非常简洁,这真的惊艳到了我,就像雷军说的那样,有的代码像诗一样。第一个无论是性能还是简洁来说,都完胜了第二个。
这样的例子还有很多,老师常常在随堂测试的时候对于一个问题提出一个让人疯狂的写法,让人欲罢不能,我真的好想成为他那样的人。人们常说程序员是理工科死宅,可是我却深深沉醉于一丝不苟的逻辑中。不会有一点圆滑,那里面的世界真的比外面单纯简单好多。图灵不是发明了计算机,他是创造了一个与世无争的世界。与外界毫无联系,将你的想法输入进去,他就会一丝不苟的执行,我想把它称为强硬的理性。对于能走到里面去的人们,这真的很迷人。
对于下个学期的学习,我充满期待,我要继续探索这 "yushiwuzhen"的世界。