A. c语言学习的技巧
的确是的,不可能有什么捷径和什么大技巧的,靠的是积累,
代码写多了,思想也就有了,慢慢慢慢的,你会发现你就是大牛一枚、
B. 怎样才能学好C语言
1、学好c语言,你可以很好地应付任何一种编程工具。
2、一定要多上机练习,通过程式了解相关知识。几经反复方得正果。
3、不要把学习c语言当成一种任务,更不要把它看成很难完成的任务。要充满自信,只要是一个智力正常的人都能学好c语言。始终保持游戏的心态,多发现其中的乐趣。当感到编程趣味无穷,那你在电脑方面将前程无量。
4、如果一个程式一时无法弄清楚最后暂时放在一边,过一段时间你可能会从其他的程式中悟出道理。
5、c语言是一个整体,各个方面是有机联系的,要从总体上把握它,不要把它割裂成互不关联的部件。
6、不要完全相信教材(包括本讲义),所有结论最好都上机验证。
怎样学好c语言
1.
工欲善其事,必先利其器
准备工作:一个开发环境,如turbo
c
2.0、visual
c++等开发工具;一本好教材,如谭浩强主编的《c语言程序设计》(第二版)。我当时看的是他的第一版,就为它的简洁、完美所吸引,简直爱不释手,用了两个星期一口气看完。
2.
秘密武器
初学者学习计算机语言要会“读程序”,要对小型的应用型、游戏型程序感兴趣,并模仿去加深对c语言程序设计的理解和操作,只有不断地写程序、调试程序才能得到编写程序的经验和加深对程序的理解,这也是学习编写优秀高级程序的秘密武器。
3.
发扬探索精神
学习c语言程序设计有点像做数学难题,只要我们善于思考,善于探索,发扬探索精神去寻找好的设计思想和方法,才能把c语言的精髓真正地掌握。
备战c语言考试要诀
1.
了解大纲,临阵不乱
各类笔试中,大多数考题是与大纲要求的基本内容一致的,难度不高,但内容十分广泛,应牢固掌握c语言考试大纲要求的基础部分。只有熟悉题型,理解语法、句法,做到心中有数,才能临阵不乱。
2.
善于归纳,强化记忆
对于需要记忆的计算机基础知识和基本概念,如果考试时因此失分就十分可惜。如:c语言中有几种不同的数据类型?运算的优先级别是怎样的?因此我们需要善于归纳这些计算机基础知识,并在理解的基础上强化记忆。
3.
重视实践,善于调试
计算机科学是一门理论性、实践性都很强的学科,对c语言考试的参加者来说,基础理论方面要求不高,而上机试题往往是很多考生不能通过考试的重要原因,因此要勤于实践。
4.
多做练习,查漏补缺
在认真地学完指定用书后,最好再找些试题,认真地测试一下,一则可以检查自己的复习情况;二则可以查漏补缺;三则可以调节心理状况,以备正式考试时沉着冷静、万无一失。
C. c语言编程时有哪些小技巧
多参考别人的优秀的源代码,试着在自己写写代码熟悉语法和编写代码的规则。
要学会自己修改自己的错误,在修改的过程中将学会不少的编程经验。
多用输入(scanf)和输出(printf)来调试错误的代码段,就可以很快的找到错误的所在。
D. C语言编程的一些技巧
也没啥技巧,就是要注意,一般情况下,开头的main函数,以及“;”符号,还有“{}”
E. 学习C语言的方法与技巧
只要你把for循环和while循环、switch、if语句等基本的知识弄清楚了,编写一般的程序是不成问题的 ~~~哦,忘记告诉你了,你一定先要把程序的功能了解清楚,知道用哪个结构写,再进行详细的进行检查、写入、、、一般用for可以解决很多的题目,if也很重要。。。其他的语句了解知道怎么用就可以了,,,但前面的那几个 必须熟练掌握~~这样就肯定没问题了~~~
F. C语言解题技巧
1.首先你要清楚题目是什么
2.确定处理题目要用到哪些实际上的,生活中的实际意义的实体,然后分析这些实体可以用C语言中哪些数据类型代替。
3.生活中,即题目中实体会发生什么关系,对应到你程序中第2部做的对应的数据类型会有什么操作。
4.程序数据类型操作前,根据实际情况,确定输入,然后操作后,确定输出。
希望对你有帮助!
G. C语言中有哪些实用的编程技巧
这篇文章主要介绍了C语言高效编程的几招小技巧,本文讲解了以空间换时间、用数学方法解决问题以及使用位操作等编辑技巧,并给出若干方法和代码实例,需要的朋友可以参考下
引言:
编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。
第1招:以空间换时间
计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招——以空间换时间。
例如:字符串的赋值。
方法A,通常的办法:
代码如下:
#define LEN 32
char string1 [LEN];
memset (string1,0,LEN);
strcpy (string1,“This is a example!!”);
方法B:
代码如下:
const char string2[LEN] =“This is a example!”;
char * cp;
cp = string2 ;
(使用的时候可以直接用指针来操作。)
从上面的例子可以看出,A和B的效率是不能比的。在同样的存储空间下,B直接使用指针就可以操作了,而A需要调用两个字符函数才能完成。B的缺点在于灵 活性没有A好。在需要频繁更改一个字符串内容的时候,A具有更好的灵活性;如果采用方法B,则需要预存许多字符串,虽然占用了大量的内存,但是获得了程序 执行的高效率。
如果系统的实时性要求很高,内存还有一些,那我推荐你使用该招数。
该招数的变招——使用宏函数而不是函数。举例如下:
方法C:
代码如下:
#define bwMCDR2_ADDRESS 4
#define bsMCDR2_ADDRESS 17
int BIT_MASK(int __bf)
{
return ((1U << (bw ## __bf)) - 1) << (bs ## __bf);
}
void SET_BITS(int __dst, int __bf, int __val)
{
__dst = ((__dst) & ~(BIT_MASK(__bf))) | /
(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))
}
SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);
方法D:
代码如下:
#define bwMCDR2_ADDRESS 4
#define bsMCDR2_ADDRESS 17
#define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)
#define BIT_MASK(__bf) (((1U << (bw ## __bf)) - 1) << (bs ## __bf))
#define SET_BITS(__dst, __bf, __val) /
((__dst) = ((__dst) & ~(BIT_MASK(__bf))) | /
(((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))
SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);
函数和宏函数的区别就在于,宏函数占用了大量的空间,而函数占用了时间。大家要知道的是,函数调用是要使用系统的栈来保存数据的,如果编译器里有栈检查 选项,一般在函数的头会嵌入一些汇编语句对当前栈进行检查;同时,CPU也要在函数调用时保存和恢复当前的现场,进行压栈和弹栈操作,所以,函数调用需要 一些CPU时间。而宏函数不存在这个问题。宏函数仅仅作为预先写好的代码嵌入到当前程序,不会产生函数调用,所以仅仅是占用了空间,在频繁调用同一个宏函 数的时候,该现象尤其突出。
D方法是我看到的最好的置位操作函数,是ARM公司源码的一部分,在短短的三行内实现了很多功能,几乎涵盖了所有的位操作功能。C方法是其变体,其中滋味还需大家仔细体会。
第2招:数学方法解决问题
现在我们演绎高效C语言编写的第二招——采用数学方法来解决问题。
数学是计算机之母,没有数学的依据和基础,就没有计算机的发展,所以在编写程序的时候,采用一些数学方法会对程序的执行效率有数量级的提高。
举例如下,求 1~100的和。
方法E
代码如下:
int I , j;
for (I = 1 ;I<=100; I ++){
j += I;
}
方法F
代码如下:
int I;
I = (100 * (1+100)) / 2
这个例子是我印象最深的一个数学用例,是我的计算机启蒙老师考我的。当时我只有小学三年级,可惜我当时不知道用公式 N×(N+1)/ 2 来解决这个问题。方法E循环了100次才解决问题,也就是说最少用了100个赋值,100个判断,200个加法(I和j);而方法F仅仅用了1个加法,1 次乘法,1次除法。效果自然不言而喻。所以,现在我在编程序的时候,更多的是动脑筋找规律,最大限度地发挥数学的威力来提高程序运行的效率。
第3招:使用位操作
实现高效的C语言编写的第三招——使用位操作,减少除法和取模的运算。
在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效率。举例如下:
方法G
代码如下:
int I,J;
I = 257 /8;
J = 456 % 32;
方法H
int I,J;
I = 257 >>3;
J = 456 - (456 >> 4 << 4);
在字面上好像H比G麻烦了好多,但是,仔细查看产生的汇编代码就会明白,方法G调用了基本的取模函数和除法函数,既有函数调用,还有很多汇编代码和寄存 器参与运算;而方法H则仅仅是几句相关的汇编,代码更简洁,效率更高。当然,由于编译器的不同,可能效率的差距不大,但是,以我目前遇到的MS C ,ARM C 来看,效率的差距还是不小。相关汇编代码就不在这里列举了。
运用这招需要注意的是,因为CPU的不同而产生的问题。比如说,在PC上用这招编写的程序,并在PC上调试通过,在移植到一个16位机平台上的时候,可能会产生代码隐患。所以只有在一定技术进阶的基础下才可以使用这招。
第4招:汇编嵌入
高效C语言编程的必杀技,第四招——嵌入汇编。
“在熟悉汇编语言的人眼里,C语言编写的程序都是垃圾”。这种说法虽然偏激了一些,但是却有它的道理。汇编语言是效率最高的计算机语言,但是,不可能靠着它来写一个操作系统吧?所以,为了获得程序的高效率,我们只好采用变通的方法 ——嵌入汇编,混合编程。
举例如下,将数组一赋值给数组二,要求每一字节都相符。
代码如下:
char string1[1024],string2[1024];
方法I
代码如下:
int I;
for (I =0 ;I<1024;I++)
*(string2 + I) = *(string1 + I)
方法J
代码如下:
#ifdef _PC_
int I;
for (I =0 ;I<1024;I++)
*(string2 + I) = *(string1 + I);
#else
#ifdef _ARM_
__asm
{
MOV R0,string1
MOV R1,string2
MOV R2,#0
loop:
LDMIA R0!, [R3-R11]
STMIA R1!, [R3-R11]
ADD R2,R2,#8
CMP R2, #400
BNE loop
}
#endif
方法I是最常见的方法,使用了1024次循环;方法J则根据平台不同做了区分,在ARM平台下,用嵌入汇编仅用128次循环就完成了同样的操作。这里有 朋友会说,为什么不用标准的内存拷贝函数呢?这是因为在源数据里可能含有数据为0的字节,这样的话,标准库函数会提前结束而不会完成我们要求的操作。这个 例程典型应用于LCD数据的拷贝过程。根据不同的CPU,熟练使用相应的嵌入汇编,可以大大提高程序执行的效率。
虽然是必杀技,但是如果轻易使用会付出惨重的代价。这是因为,使用了嵌入汇编,便限制了程序的可移植性,使程序在不同平台移植的过程中,卧虎藏龙,险象环生!同时该招数也与现代软件工程的思想相违背,只有在迫不得已的情况下才可以采用。切记,切记。
H. 初学c语言感觉好难,你们学c语言有什么技巧吗
书本的东西有难有易,不一定要全部理解的。有部分基础已可编程了,之后是在编程过程中有所需求而被迫地学会的。是否能写出好的程序就在编写程序过程中形成自已的编程风格。首先要学会一个编程工具如VC++6.0,学会调试技巧(写条程序可能花时间不多,最多是调试程序). 还要花时间看下别人的程序,不要觉得难,能持坚看懂数条较长的程序。。。。
I. 学习C语言技巧
所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。
大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以网络一下:)
Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。
如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。
切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。
Unix/Linux还是Windows,这是个很大的问题
不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写Hello, World!了,而在Unix下,你需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。
对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。
所以我建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC 2.0编译出32位程序,不过那过于复杂了)。
等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格
归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。
书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。
学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。
例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。
也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows核心编程》时(我只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,我早已记不清Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。
仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。
J. 怎么学好C语言
个人推荐
http://download.chinaitlab.com/program/files/11654.html
边用边学C语言
本书以案例教学为主,以实用编程为目的,注重举一反三。本书适合作为大专院校一年级正式教材和计算机培训班的培训教材,尤其是与《边用边学C语言学习指导与测评》辅导书配套可以成为真正的自学完全版,实现教学的各个环节:讲授、作业、实验、答疑、复习和自测,而且也特别适合准备参加有关C语言考试(如计算机等级考试)的读者复习和适应性训练之用。
一、本书结构:全书将C语言的内容分为十四讲,每讲讲授2学时、实验2学时。其中十四讲内容结构均包含六部分: 教学目的、知识要点、 边用边学、经典例题、 学以致用、 实验。
二、对读者的学习建议:具体在学习时,建议每讲的学习方法是:首先阅读“教学目的”和“知识要点”,对于将要学习的内容有一个总体的了解;其次,认真学习“边用边学”,要求掌握概念、理解所有例题、完成其中的“举一反三”;第三,阅读“经典例题”,认真研究程序流程和设计方法;第四,按照实验内容的步骤完成实验,在实验中有大量的内容是巩固本讲的知识点,所以不能片面地以完成“学以致用”中的程序设计作为实验内容,而且实验中的程序完成后要保留并且命名最好按照实验要求,因为其后章节中的一些实验是源于前面的实验题的。
其配套辅导教材《边用边学C语言学习指导与测评》专为自学或者准备学习结束时参加等级考试的考生用。
本书清华大学出版社出版,选为“全国信息技术及应用远程培训教育工程”系列教材