如何学好计算机C语言

点赞:5314 浏览:19992 近期更新时间:2024-01-16 作者:网友分享原创网站原创

摘 要:C语言既有高级语言的特点,又具有汇编语言的特点.它可以作为系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序,它应用范围之广泛,几乎可以实现一切,不过它的界面简单了点,但是c语言的高效率和高移植性几乎是共识.在单片机的嵌入式领域里,c语言基本就是通用语言.

如何学好计算机C语言参考属性评定
有关论文范文主题研究: 关于数组的论文范文 大学生适用: 学院论文、学年论文
相关参考文献下载数量: 61 写作解决问题: 怎么撰写
毕业论文开题报告: 标准论文格式、论文摘要 职称论文适用: 论文发表、初级职称
所属大学生专业类别: 怎么撰写 论文题目推荐度: 优质选题

关 键 词:C语言

中图分类号:TP3-4文献标识码:A文章编号:1007-9599(2012)08-0000-02

一、C语言的主要特点

(1)C语言适合于多种操作系统,也适用于多种机型.C语言对编写需要硬件进行操作的场合,明显优于其它高级语言.

(2)C语言具有各种各样的数据类型,并引入了指针概念,可使程序效率更高.而且计算功能、逻辑判断功能也比较强大.

(3)C语言结构式语言的结构化方式可使程序层次清晰,便于使用、维护以及调试.C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化.

(4)C语言把高级语言的基本结构和语句与低级语言的实用性结合起来,可以像汇编语言一样对位、字节和地址进行操作.

二、C语言几个函数的使用方法

(一)main()函数的正确定义

main()函数必须声明为intmain()或intmain(void)或intmain(intargc,int**ar)

不能定义为voidmain(){}以消除无返回值警告,但是它可能导致与调用者期待的返回顺序不能的返回顺序

(二)有关i++的定义

inti等于3;

printf("%d",(i++)*(i++));我的编译器输出结果是9,而不是12.原因尽管后缀自加和后缀自减操作符++和--在输出其旧值之后才会执行运算,但这里的“之后”常常被误解.没有任何保证确保自增或自减会在输出变量原值之后和对表达式的其它部分进行计算之前立即进行.也不能保证变量的更新会在表达式“完成”之前的某个时刻进行.本例中,编译器选择使用变量的旧值相乘以后再对二者进行自增运算.

(三)NULL(空指针)到底是什么?

每个指针都有一个特殊的值,空NULL,这与其他对象或函数的地址都不相同,也就是说在程序中通过&(取地址运算符)永远无法得到NULL地址.

当一个指针类型的变量被赋予0值,那么编译器在编译的时候会将其作为NULL指针,即在指针初始化、比较、赋值的时候NULL可用0代替.即自己定义

#defineNULL0

如果NULL要以函数参数传递的时候,编译器可能不知道这是指针类型的变量而把其当作是常数0看待,这是可以进行强制类型转换(char*)0来使编译器将其作为NULL来使用.即

#defineNULL((void*)0)

所以空指针的使用注意

*在源码中使用空指针常数时,则使用0或NULL

*在函数的参数传递时如果使用空指针,则使用NULL或相应的类型指针0((type*)0)

(四)*p++的含义是自增指针p,还是自增p的内容

*p++和*(p++)等价,++和--比前缀的一目操作运算符优先级高,它的含义是自增p并返回p增加前地址的内容.所以如果自己比较混淆,干脆使用括号消除自己的歧义.

三、数组的应用

用简单变量固然能编出各种各样的程序,但在实际处理问题时,常常遇到这样的情况:需要对同一类型的数据进行多次记录,并且需要将历次记录保留下来进行处理.例如,某班有40名同学,他们的某次测验的成绩共有40个数据,需要将数据记录下来分析成绩.如果用简单变量来表示,命名起来很麻烦,操作更不方便.

我们可以把同一类型数据的变量用同一个名字来代表,而这一类型的不同变量用不同的加以区别.如用m1,m2,m3等m40代表测验成绩,可以表示为m(1),m(2),m(3)等m(40).我们把按一定顺序排列的一组数据或变量叫做数组.数组中的每个数据或变量叫做数组元素.

在数组中,每个数组元素都处于某一确定的位置,这个位置就称为该数组的下标.如果数组元素是变量,也就称为下标变量.

下标变量的格式为:

数组名(下标)

例如,a(1)、a(2)等t(10)等都可以作为下标变量.

数组中下标的个数称为数组的维数.我们经常使用的有一维数组和二维数组.

数组定义方法:类型数组名[下标](下标是指数组的长度)

例:intarray[10]//这样我们就定义了一个长度为10的数组

为什么说在某些情况下数组比单个变量好用呢?下面来做一个示范:

输入一个五位数,分解为五个单个数字并输出.

要做到这个要求首先要懂得拆数.下面来讲一下拆数的方法:

首先,我们要使用取余来取一个数个位数字.使用“%”便可以达到要求.

例如:123%10等于3(123对10取余,就是123除以10等于12余3,我们就把这个余数取出)

然后:123/10等于12(如果定义int类型的变量,这里的“/”不是除以,而算是整除,所以小数点后舍去)

再用:12%10等于2(十位的数也被取出了)

最后:12/10等于1(百位的数也被取出了)

综合以上拆数的方法,我们可以发现,一个数取余,就可以拆出一个单位数,再整除10、取余,就又可以得到一个数.这样我们就可以将一个多位数拆分为多个单位数.这就是拆数的基本方法.


下面我们使用非数组方法来做一次

inta,b,c,d,e;//定义5个变量分别保存5个数字

longn;//用于读取输入的数

do{printf("请输入一个5位数");scanf("%d",&n);}while(n>99999||n<10000);//一定是5位的数,否则重新输入

a等于n%10;

b等于n/10%10;

c等于n/100%10;

d等于n/1000%10;

e等于n/10000;

printf("这五个数是%d%d%d%d%d",e,d,c,b,a);

这样写一个程序,用了这么多变量,如果要拆十几位的数,那就十分麻烦了.所以,下面使用数组来做一次,大家可分别来作比较.

inta[5];//定义长度为5的数组,注意:下标的范围是0~4,所以后面a[5]是不可使用的

longn;

inti;

do{printf("请输入一个5位数");

scanf("%d",&n);}while(n>99999||n<10000);//一定是5位的数,否则重新输入

for(i等于0;i<5;i++)//这里就是做一个0~5的循环,因为每次拆数的过程都大同小异,所以用循环.

{a[i]等于n%10;//每次取最后面那位(这应该很容易理解,不理解的话把程序输入到电脑中试验一下就知道了)

n等于n/10;//每次取完以后原数要缩小十倍,给下一次做准备

}//做完5次拆数,循环退出

/*在上面的循环体中,我使用了i作为a数组的下标,因为i是可以变的,而i的变化就可以指定到数组的下一个位置.也就是说,现在a[0]a[1]a[2]a[3]a[4]分别保存的就是原数的个位、十位、百位、千位、万位.在输出的时候,我们同样可用循环从后往前输出.*/

printf("这5个数是");

for(i等于4;i>等于0;i--)//注意这里是从4~0的循环,增量部分使用i--,每次减一

{printf("%d",a[i]);//因为i是变量,所以每次做循环体的时候a[i]表示的是就是a[4]、a[3]、a[2]等}

看完以上两个程序,你会发现效果其实完全一样.不过第一次接触数组可能会不喜欢数组,甚至觉得数组比定义单个变量还要麻烦.其实,在习惯了以后,数组将会在编程之中起到很大的作用,不仅能方便编程,还可以使程序效率大大提高.

总之,C语言编程有很多值得注意的地方,需要我们在编程的过程中留意和总结.对于程序员而言,编程是既辛苦又有乐趣事情.