① 对于C语言编程思路是什么
对于任何语言当然也包含C语言,编程思路都是类似的,都离不开“数学”这个范畴,编程的目的其实根本一点就是对数据进行加工处理,从这一点出发,我们就理清了一个思路:
首先就是建立一个数据模型,C语言的函数库中有丰富的数学函数供调用,用来解决实际问题。
其次就是规划变量,哪些使用全局变量,哪些采用局部变量。
第三就是规划模块,将你要达到的编程目的分成各个模块,这样可以使程序清晰一些,以后修改或扩展都更容易。
第四就是养成一个画流程图的习惯,这样可以在这个过程中会帮助你完善很多的编程思路。
② 请教编程高手:如何培养编写算法的思路
选一本出色的教材.有条件就看英文的,然后给自己一个环境,例如LINUX+GCC+GDB,用纯粹的语言去在解决问题的过程中学习算法.
没有目的性去学习,往往效率不高,可以找一些ONLINE JUDGE的题目做做.例如Welcome To PKU JudgeOnline,对着里面的问题,先自己思考,尝试编程解决,如果不能解决,就翻翻算法书,想想为什么.
如果还是不行,那就上网看看别人有没有解决掉,怎么做,看看他们用到什么算法,比对着,然后进一步自己去实现.
有时候对于算法的问题的实现,你在实现之前也许会卡住,但是在编程过程中,随着你的锻炼和熟练度的提高.会有那么一天你觉得什么都通了,而且,你是在用的过程中学习.坚持走下去,一定事半功倍.
“cracking the coding interview”,题目是按照array, stack&queue, 链表,树图,递归这种章节安排的,每章节题目7-8个,不多,难度中等,找感觉很有帮助。第一遍自己写不出来的话(我就是,这么弱!),画图分析,抄背默。一遍做完再做一遍,第二遍就快很多,理解也深刻了,所谓读书百遍,其意自现,算法也一样。
不要一开始就看《算法导论》,这本书有太多关于算法的数学证明.
推荐你看看这本:算法(第4版) (豆瓣),作者是高德纳的学生:塞奇威克 (Robert Sedgewick)
书中算法代码主要是用java编写,里面有大量的图来让你明白例如:排序,查找,树和图的算法运行过程。
这本书的目录编排也很清晰,他就告诉你算法主要就可以分为:排序,查找,图和字符串。从这4个方面可以演化出很多算法,最关键是:这本书的作者不但是在告诉你what,而且告诉你why(分析各种算法的优缺点)
这本书其他好的地方
比如讲到快速排序,很多书可能讲了快速排序的原理就完了。但这本书就直接讲了原始的快速排序可以改进的地方:1. 在小数组上,切换到插入排序;2. 三取样切分;3. 三向切分的快速排序。
优先队列怎么和排序算法扯上关系呢?其实优先队列就是可以用堆排序来实现,堆排序的时间复杂度和快速排序是一样的,但是实际中为什么堆排序的运行时间要比快速排序多呢?因为这和CPU的Cache命中率有关系,堆排序不符合算法运行的局部性原则
比如书中2.5节,讲了排序算法的实际用途,这本书不光告诉你算法的原理,还告诉你算法的用途。
③ java编程的思路
java基本编程思路:
第一步:写框架(内层和外层):
public class类名{//外层
public static void main(String[ ] args){//内层
}
}
第二步:看题目中是否有“接收”“输入”“录入”等字眼,则导入util包,创建Scanner扫描仪对象:
importjava.util.Scanner;//写在文件的第一行
Scannerinput = new Scanner(System.in);//写在main方法中的第一行
第三步:编写main方法中的主体代码
A、接收、输入、录入:
System.out.println(“提示信息”);
数据类型变量名=__扫描数据___;
说明:扫描不同类型的数据,使用不同的扫描方法。以下介绍了常用的类型的扫描方法。
int型使用nextInt();
String型使用next ()或nextLine();
double型使用nextDouble();
B、计算:算术运算等
C、输出:
System.out.println(输出的内容);
或者
System.out.println(“提示内容:”+输出的内容);
④ 为什么大学老师教编程上课都不敲代码
因为大学老师都有他们固定的教学方法,上课不敲代码可能是为了节省时间,他有他上课的内容,所以他要按照他自己的方式来。
老师一般重点讲述编程的规律和格式,实际的操作要由学生课下练习。书上有的代码,上课再现场敲进电脑,没什么意义,一般都是直接拿现成的演示。而且,万一没敲对或敲错了引起问题就不好办了。
还有编程主要还是要靠学生自己平时多练习,上课老师讲框架讲知识点,多要演示几道例题学生就有可能多拿几分对学生的帮助会更大。
⑤ C语言程序设计思路
代码只是实现了逆序输出,而没有把sentence中的内容逆序,每逆序输出一个单词,都用结束符来替换。
#include "stdio.h"
#include "string.h"
void InverseByWord(char *sentence)
{
int n,i,j;
n=strlen(sentence);// 计算字符串长度。
for(i=n-1;i>-1;i--)// 从最后一个元素开始循环,直到第一个元素
{
if(*(sentence+i)=='\0')//如果是结束符的话,仍然设置为结束符。由于字符串长度不变,所以结束符位置不变。
{
printf("%c",*(sentence+i));// 输出结束符
*(sentence+i)='\0';//设置结束符
}
if(*(sentence+i)==' ')// 如果是空格的话,说明新的单词开始。
{
n=strlen(sentence);// 计算字符串长度
for(j=i+1;j<n;j++)// 从i+1开始输出新的单词
{
printf("%c",*(sentence+j));
*(sentence+j)='\0';// 输出后清除字符。
}}}
printf("%s\n",sentence);//输出字符串
}
void main()
{
char pStr[100]="This is an interesting programe";
InverseByWord(pStr);
}
⑥ 为什么大学老师教编程上课都不敲代码
大学老师上课一般都是会PPT上课的,在PPT制作过程中,老师就会将代码截图好放在PPT上,到时候上课,直接用就可以了。这样是比较方便的,毕竟敲代码的话会花费很多的时间,老师都是要在规定的时间内完成任务。不过,我们上编程课的时候老师会时不时的教我们敲代码,让我们熟悉一下。好好去学习吧,一切并没有那么可怕和没办法啊自己去学习敲代码,让自己学会它,大学是自主学习的过程,相信你能做到,加油。
⑦ C语言编程中写程序的思路和方法
我的经验是随时把握“一分为二”的编程思路,就是任何一个问题把她分解成子问题,然后在把子问题在向下分解直到可以用“算法”实现,套用结构化程序设计的说法就是逐步求精的过程。
⑧ 编程好的思路。
我认为编程,重要的不是如何华丽的代码,而是能够将用户需求转化为机器语言的能力
你的很多思想,是刚开始做程序员的普遍想法,开始思考通过模块化设计能够更省力,更快捷的完成工作,程序运行效率还要高。
如果你在大软件公司工作过,就不会有这种困惑了。因为对于具有一定规模的软件公司,已经在相当的时间内积累起很丰富的模块和库资源,程序员们只需要根据项目的不同象选择自助餐一样给拼接到一起,就有了基本框架。
最重要的还是做好用户需求到需求说明,再到系统框架设计这个工作,会少走很多弯路。
细化到编写程序,我觉得很重要的一点就是要求公司里面的程序员要有绝对规范的编程习惯,不然在团队协作的时候会出很多问题,做出来的基础库也经不起时间的考验。
还有就是你说的模块化的东西不是万能的,和你经常从事的项目领域密切相关,你用着很顺手,别人可能用不了。比如你是做信息系统的,那么一个好的查询分析模块很多地方都能用,用户信息管理就要根据复杂程度做几套,比如能够定期更换密码的,比如权限是要细化到列的,比如只是一个简单的用户密码。根据项目的不同选用。
有些人鼓吹自动化编程,利用商业化的系统模板进行配置。我认为对于企业应用还是可以的,但是对于软件开发就不可取了。因为提供模板的单位水平如何你并不知道,里面是否存在大量bug你也不清楚,只是演示做的漂亮。一旦你用了这个东西,在你的项目中出现问题,你debug是查不到具体原因的,苦果只能自己吃,这是个建议,有点离题,但是怕你思路到了一定程度就推崇这种方法。
最后一点,大部分的项目都是需要数据库作为后台支持的,一定要注意处理好数据库设计的问题,不然很容易因为库设计的不合理造成程序复杂,或者是在使用一段时间后效率严重降低,造成程序重新返工,就说这么多,希望你能有所收获