Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

软件:week4 问题反馈+扩展练习 #8

Open
ghostbody opened this issue Oct 19, 2015 · 8 comments
Open

软件:week4 问题反馈+扩展练习 #8

ghostbody opened this issue Oct 19, 2015 · 8 comments

Comments

@ghostbody
Copy link
Collaborator

week4 问题

大家学习编程差不多一个月多了,编程对初学者是非常痛苦的事情,我们也曾经历过上课听老师讲得如痴如醉,下课看书像看天书,做题感觉难到爆炸的时候。别慌,这都是称为强者必经之路。

说说我们大一的时候。我们的Ta是竞赛队的,然后出的题目特别难,我们有一次宿舍一个周日就做了一道题。反正我们是各种被虐,而且那时候实验课和理论课基本上脱节,实验课的内容大概超前2~3周左右。

说这些干嘛,就是想说,编程入门的门槛是不低的,他考验人的耐心、细心、专心和信心,同时也考验你严密的思维。

1、 要善于观察和发现错误,善于总结经验。

比如,你看到scanf就要意识到参数需要取地址,否则就会出现内存报错。自己犯下的错误会一而再再而三地犯,比如赋值运算符 = 和 逻辑判断相等 ==,比如变量忘记初始化,比如循环一轮之后没有把变量重新初始化,这些等等等,大家绝对会搞错。

2、要好好理解概念。

有人会说会打代码就行,那些理论可以不管。这些是误人子弟的说法。c语言是大家学习的一门编程语言,是一个很基础但是是全世界使用排名第一的语言,它里面蕴含很多计算机编程的基本的东西,其实只要搞懂c和下学期的c++,你会发现其他语言的学习完全可以通过类比的方式快速学到。功夫在语言之外,练功在语言之内。

3、养成好的编程习惯。

习惯是很难改的,编程也是一样,一旦养成一些坏毛病以后就一直那样了。为什么要抓代码风格?我参加过的一些大型项目里面就有很深刻的体会,那些代码量很大,是协同合作完成的,可是人与人之间的沟通成本是很大的。如果代码是乱乱的,变量名乱乱的,毫无注释,这些代码真的就是团队毒瘤,谁都看不懂。或者说,你自己写的代码乱用这那的,然后过一段时间你也不知道自己当时写的啥。所以这个真的很重要。

4、学会问问题。

问问题是一门艺术,真的。首先你要问,不要害怕同学或者师兄,很多问题你可以提出来的,不要不懂就放在那,然后抱怨很难。第二,问问题是有技巧的。
第一种问法: 给一段长长的代码,跟我说,师兄,这个题不对啊,怎么办啊?
第二种问法:师兄,我这题系统显示runtime error,怎么办呀?
第三种问法:师兄,我这题系统显示runtime error。我的程序的思路是先用scanf读入两个整数,然后将他们相加,然后进行输出。在这个过程中我用到了三个变量,分别代表和(用于输出),两个临时变量进行存储两个输入的值。系统说运行时错误,运行时错误的原因,我查过了,可能是非法内存访问。请问这怎么办?

大家可以到stackoverflow上面看看大家是怎么提出技术问题的。

5、关于算法和语言。

什么是算法?
如果是有编程基础,或者志向于ACM队的同学,你就应该多搞算法,刷西西里的题目。对于其他同学我认为,你大可不必放太多精力去那些著名的算法理论中。这一年我们学的重点是基础,是学会如何使用编程语言,让他成为一个软件工程中的有效的工具,同时提取编程语言中的思想。而且,以后你们学习算法的课还多了去了。

6、关于变量命名

我们对于变量一般采用意义来命名。也就是说变量是干嘛的就命名成什么。

比如一道题目,输入n个数,求n个数的和,那就应该这样声明变量:

int n; // the number of digits
int sum; // the sum of the n digits

而不要声明成

int a, b;

这两个声明方法的可读性有着本质性的区别,大家好好体会。

7、早起早睡

很多同学可能现在已经养成了熬夜的习惯。可是我想说,无论你是社团任务重还是课程任务重,都不要选择熬夜。第一熬夜很伤身,第二早起的效果更好。以后周日的作业还是周一早上在放出来,免得大家熬夜写作业,真心不好。

本周扩展题目

week 4 扩展题

有些题目难度很大,希望你只看一眼,起码要知道题目是要你干嘛的,思考一下,实在做不来就放着,继续看书自学,争取走在老师前面,这样效果更好。

特别注意:贪吃蛇那道题目是你们软件工程导论之后要做的课程项目,那个题给了你们核心算法的思路,可以看看。

记得在周日前提交实验报告

同时之后会有实验课的课程设计,大家做好心理准备

有任何问题,欢迎留言,无论学习c语言还是其他课程或者大学生活,欢迎。

还有,以后实验课问问题可以报下自己什么名字,好让我认识一下大家。Ta也是大家朋友,一起学习嘛。

13级嵌入式:叶嘉祺
2015年10月19日

@WangMaoyuan
Copy link

大赞

@SaltyFish123
Copy link

66666

@ReganFan
Copy link

师兄我想问下,为什么这周实验课的1007题正确答案要在输出所有正数后换行?感觉不换行也能成功啊。西西里硬是要求换行的意义是什么呢?

@ghostbody
Copy link
Collaborator Author

你在dev下不换行没事,他会自动帮你换最后一行。然而在很多终端运行的软件是不会直接换行的,看上去会很难看,你可以试试用 命令行直接运行你没换行的程序。

@ReganFan
Copy link

师兄我试过了,但好像结果一样啊?
qq 20151023171517

@ReganFan
Copy link

然后附上西西里Accepted的加了换行的程序在命令行上运行的例子:
qq 20151023172209
在输出所有正数后又换了行,感觉看上去没换行也没多大问题,还是我弄错了?不过还有其他所谓终端运行的软件没见过,我还是乖乖换行吧···

@ghostbody
Copy link
Collaborator Author

你看这个:
screenshot from 2015-10-23 19 14 56

@ReganFan
Copy link

好的,我知道了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants