c语言程序设计基础知识
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。下面是小编整理了c语言程序设计基础知识,来欣赏和学习吧,希望能对大家有所帮助。
C语言程序设计知识
C语言程序的构成和格式
#include
Main()
{
double a,b,area;
a=1.2,b=3.6; /*将矩形的两条边长分别赋给a和b 变量*/
area=a*b;
printf(“a=%f,b=%f,area=%f\n”,a,b,area);/*输出矩形的两条边长和面积*/
}
#include :每当写一个程序时,第一条语句永远是这个语句,因为一个程序可以没有输入但必须要有输出,而这个语句就是控制输入输出的。所以任何一个程序都必须由这个语句开始。
main():是一个程序的主函数。一个程序是由多个函数组成的,而任何一个程序都要有一个主函数,有且只有一个。任何程序都是由主函数开始执行的。
{}:它们两个必须要成对出现,它们中的语句是主函数体。包括定义部分和执行部分。它们中的语句,每一条必须由;结束。;是C语句的一个组成部分而不是一个结束标识。
/**/:注释符一定要成对出现,不允许嵌套。两个符号间的语句不被执行。
例年真题:
#include
main()
{
Int a;
A=5; /*给A变量赋值5
A+=3; 再赋值后再加3*/
Printf(“%d”,a);
}
(11)以下叙述中正确的是( C )。
A)C 程序的基本组成单位是语句 B)C 程序中的每一行只能写一条语句
二级C 语言程序设计试卷)
C)简单C 语句必须以分号结束 D)C 语句必须在一行内写完
(11)以下叙述中正确的是( C )
A)C程序中的注释只能出现在程序的开始位置和语句的后面
B)C程序书写格式严格,要求一行内只能写一个语句
C)C程序书写格式自由,一个语句可以写在多行上
D)用C语言编写的程序只能放在一个程序文件中
第二课:C语言的基础知识
标识符,常量和变量
标识符:
定义:由字母,数字和下划线组成,并且第一个字符必须为字母或下划线的。这样的组成就是标识符。
下列合法的是:
else what #$123 34a a34 a_b a-b If
a=3 A=4
注意:在C中大写字母与小字字母被认为是两个不同的字符。
分类:
关键字:在C中已经定义好了的,不能用作它用的。如if double int 等等。
预定义标识符:如printf scanf
用户标识符:用户根据自己的需求来定义的。
(12)以下选项中,能用作用户标识符的是( C )
A)void
B)8_8
C)_0_
D)unsigned
(11)以下选项中合法的标识符是( C )
A) 1-1 B)1—1 C)-11 D)1—
(12)以下选项中不合法的标识符是 ( C )
A)print B)FOR C)&a D)_00
常量:
定义:是指在程序的执行的过程中,其值不会被改变的量。
分类:
整型常量:没有小数的常量
如:3 9 1234等等都是。
实型常量:有小数点的常量
如:3.9 3.0 3.
字符常量:由单个字符组成的量
如:’a’ ‘b’ ‘3’
字符串常量:至少由一个字符组成的量
如:“a” “abc” “ beijing”
符号常量:符号常量的值到底是多少,这是由在来定义符号常量时来决定的
?2*pi
(13)以下选项中,能用作数据常量的是 ( D )
A)o115 B) 0118 C)1.5e1.5 D) 115L
(13)以下选项中不能作为C 语言合法常量的是( A )。
A)'cd' B)0.1e+6 C)'\a' D)'\011'
(13)以下选项中不属于字符常量的是 ( B )
A)'C' B)'C' C)'\xCC0' D)'\072'
整型常量与实型常量
整型常量的几个表示方法
十进制数:
八进制数:以0开头的数字,由0-7组成。
下列合法的八进制数是
A,0 B,028 C,-077 D,01.0
十六进制数:以0X开头,由0-9和A-F组成。
A,oxff B,0xabc C,0x11 D,0x19
实型常量 123.4
小数形式:123.4
指数形式:1.234e2
1. 字母e和E之前必须要有数字
2.字母e和E之后的数字必须是整数
3.字母e’和数字之间不能有空格。
A,2.607E-1 0.8103E 2 -77.77 456E-2 0.1e+6 1.23E1.2
变量:
1.定义:在程序的运行过程中其值可以被改变的量,就叫变量。
2.原则:变量必须先定义后使用。变量定义的过程就是给变量开辟存储单元的过程。
3.分类:
整型变量:用关键字int来表示.
short int 短整型
long int 长整型 在内存中占4个字节 如123L
unsigned 无符号 如有-200U这就是错的。
变量的定义:int a 这是定义了一个整型变量a.
实型变量:用关键字 double 或float来表示。
float 单精度 在内存中占4个字节
double 双精度 在内存中占8个字节。
算术表达式
一、基本的算术运算符
+ - * / % 这些是双目运算符(就是指操作对象有两个)
注意:
除%外,其它的运算符的运算对象可以是整型也可以是实型。%的操作对象只能是整型。
如10%3=1 10.7%3 10%4.5 x%3=0
+ - 也可以做为单目运算。-5.4 +4.9
说明:
1.如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。如 1.0/2.0=0.5 1/2=0
2.如果双目运算符两边运算数的类型不一致,则系统会自动进行类型转换,使两边的类型一致后,再进行运算。
1.0/2=0.5
3.所有的单精度数据,在运算过程中都以双精度进行运算。
二、优先级
() + - * / % + -
由高——————低
如 (5+1)/2=???
2.5.3强制类型转换表达式
格式:(类型名) (表达式)
例:(int)3.234=3
(double)10%3=?
(14)表达式:4-(9)%2的值是( B )
A)0
B)3
C)4
D)5
(14)设变量已正确定义并赋值,以下正确的表达式是 ( C )
A)x=y*5=x+z
B)int(15.8%5)
C)x=y+z+5,++y
D)x=25%5.0
赋值表达式
格式:变量名=表达式
注:1.不可以颠倒(左边必须是变量名,右边必须是C语言中合法的表达式)
2.功能就是先求出右边表达式的值,然后把此值赋值给赋值号左边的变量。确切的说是把数据存入以该变量为标识的存储单元中去。a=4 , a=7
3.结合性的优先级仅高于逗号表达式。顺序是自右向左的。如a=2+7/3
4.'='是一个赋值号,不是一个等号。
5.x=y。变量的值也是可以传递和赋值的。它的意思就是将变量Y中的值赋值到X中去。同样N=N+1也成立
6.赋值运算符的左侧只能是变量,不能是常量或表达式 a+b=c这就是违法的
7。赋值号的右边也可以是一个赋值表达式。如a=b=7+1;
补充;表达式与语句的区别,
表达式后面加一个分号就是语句。
复合赋值表达式
例:
a+=3------a=a+3 同理可得a*=3 /= -=
a+=a-=a+a a 的初值是9
a+=a-=18
a+=(a=a-18)
a+=(a=-9)
a+=a
-18
(15)若有定义语句:int x=10;,则表达式x-=x+x的值为( B )
A)-20
B)-10
C)0
D)10
(14)设有定义:int x=2;,以下表达式中,值不为6的是 ( D )
A) x*=x+1 x=x*(x+1)
B) x++,2*x
C)x*=(1+x)
D)2*x,x+=2
(17)若变量均已正确定义并赋值,以下合法的C语言赋值语句是 (A)
A)x=y==5;
B)x=n%2.5;
C)x+n=I
D)x=5=4+1;
++和——的讲解
++:自身加1
--:自身减1
如
i=3 i++_______I=i+1 i=4
单目
3++
++I I++
当++在前,先自身加1,然后再干别人让干的事情 。
当++在后,先别人让干的事情然后再干 自身加1。
int i=3;
int a;
a=i++; a=3
a=++I;a=4
C语言基础知识
1、C程序
C语言程序结构有三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch)
2、main函数
每个C语言程序中main 函数是有且只有一个。读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
3、存储形式
计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为 0 或者1构成。 byte 是指字节, 一个字节 = 八个位。数据存放的位置就是它的地址。
4、注释
是对程序的`说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。
5、书写格式
每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。
6、标识符
合法的用户标识符考查:
合法的要求是由字母,数字,下划线组成。有其它元素就错了。
并且第一个必须为字母或则是下划线。第一个为数字就错了。
C语言标识符分如下3类
(1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。
(2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。
(3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。
关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If 是可以做为用户标识符。因为If 中的第一个字母大写了,所以不是关键字。
7、实型数据
实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法性。
2.333e-1 就是合法的,且数据是2.333×10-1。
考试口诀:e 前e 后必有数,e 后必为整数。
8、字符
字符数据的合法形式::
1 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
0 的ASCII 数值表示为48,a 的ASCII 数值是97,A的ASCII 数值是65。
字符型和整数是近亲:
char a = 65 ;
printf(“%c”, a); 得到的输出结果:a
printf(“%d”, a); 得到的输出结果:65
一般考试表示单个字符错误的形式:65 "1"
字符是可以进行算术运算的,记住: 0-0=48
大写字母和小写字母转换的方法: A+32=a 相互之间一般是相差32。
9、整型数据
整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节:
考试时候一般会说,在16 位编译系统,或者是32 位系统。碰到这种情况,不要去管,
一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节就可以了。
10、转义字符
转义字符的考查:
在程序中 int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x 必须存在。
在程序中 int a = 06d, 是一个八进制的形式。
在转义字符中, ’x6d’ 才是合法的,0 不能写,并且x 是小写。
‘141’ 是合法的, 0 是不能写的。
‘108’是非法的,因为不可以出现8。
11、算术运算
算术运算符一共有+、—、*、/、%这五个。%符号两边要求是整数。不是整数就错了。
三种取整丢小数的情况:不是四舍五入是舍掉小数部分。
1、int a =1.6;
2、(int)a;
3、1/2; 3/2;
12、强制类型转换
将一个运算对象转换成指定类型,格式为(类型名)表达式
一定是 (int)a 不是 int(a),注意类型上一定有括号的。
注意(int)(a+b) 和(int)a+b 的区别。前是把a+b 转型,后是把a 转型再加b。
13、赋值
是表达式就一定有数值。
赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。
复合赋值运算符:注意:a*=m+2 是 a=a*(m+2)
自加、自减表达式:假设a=5,++a(表达式的值为6), a++(表达式的值为5);
j=a++;等价于j=a;a=a+1; 而j=++a;等价于a=a+1;j=a;。
考试口诀:++在前先加后用,++在后先用后加。
14、逗号运算
逗号表达式:优先级别最低; 表达式的数值逗号最右边的那个表达式的数值。
(2,3,4)的表达式的数值就是4。
15、数制转换
一定要记住二进制 如何转换成十进制。
八进制是没有8 的,逢8 进1,018 的数值是非法的。
C语言基础知识总结
算法结构:
一、顺序结构、选择结构、循环结构;二、循环结构又分为while型、until型、for循环结构;程序流程图;
结构化程序设计方法:
(1)自顶向下;(2)逐步细化;(3)模块化设计;(4)结构化编码。
数据类型:
常量:常量包括字面常量、直接常量和符号常量;
变量:C语言规定标志符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或者下划线;必须压迫先定义后使用;每一个变量被定义以确定类型后,在编译时就能为其分配相应的存储单元;
整数类型:整数常量有十进制、八进制和十六进制;“%d”
整形变量:数据在内存中存放形式是以二进制形式存放;有int型、short int型和long int型,无符号整型变量的范围是-32768—32767,有符号型为0~65535.通常把long定义为32位,把short定义为16位,int可以是32位也可以为16位,这都主要取决于机器字长。
实型常量的表示方法:(1)十进制,0.0;(2)指数形式,123e3
实型变量:实数型数据在内存中的存放形式,一般在内存中占4个字节,分成整数部分和小数部分存放。实型变量分为float型、double型long double型。实型数据会存在舍入误差。
实型常量的类型:C编译系统将实型常量作为双精度来处理。
字符型数组:(一)字符常量:转义字符(\n——换行,\t——tab,\r——回车,\f——换页,\b——退格,\ddd——1到3位8进制的数代表的字符)
(二)字符变量:字符数据存储形式实际是以ASCII码存储。“%c”
字符串常量:双撇号括起来的一系列字符序列。
C的运算符有以下几种:
1、算术运算符(+ - * / %)结合方向自左向右
2、关系运算符(> < =="">= <= !="">
3、逻辑运算符(! && ||)
4、位运算符(<>> ~ | ^ &)
5、赋值运算符(=及符号扩展赋值运算符)
6、条件运算符(? : )
7、逗号运算符( , )
8、指针运算符(* &)
9、求字节运算符(sizeof)
10、强制类型转换运算符((类型))
11、分量运算符( . ->)
12、下标运算符([])
13、其他
控制语句:
完成一定的控制功能。
1、if()~else~
2、for()~
3、while()~
4、do~while()
5、continue
6、break
7、switch
8、goto
9、return
字符数据的输入输出:
1、putchar()输入字符变量
2、getchar()只能接受一个字符
格式输入输出:
1、printf(%d—整型,%c—字符型,%ld,%md,%o,%u,%s,%-m.nf,%e,%g)
2、scanf(格式控制,地址列表)
数组
一维数组的定义:类型说明符 数组名【常量表达式】;先定义后引用;一维数组初始化时可以只对一部分元素初始化,在对全部数组元素初始化的时候可以部规定长度;但是若被定义的数组长度与提供的初始值不一样时,则数组长度不能省略。
二维数组的定义:类型说明符 数组名【常量表达式】【常量表达式】C语言中存放二维数组是先存放第一行的元素,紧接着是第二行,其实也是以一维的方式存放。如果初始化时能指定所有元素的初始值,第一维大小可以省略,但是第二维不能省略。
字符数组:定义和初始化跟数组差不多,只是需要加单引号。字符和字符串结束标志,C语言规定,以'\0’代表。
字符串处理函数:
1、puts()将一个字符串输出到终端
2、gets()从终端输入一个字符串到字符数组,并且得到一个函数值。
3、strcat()链接两个字符数组中的字符串。
4、strcpy()字符串复制函数。
5、strcmp()比较字符串作用。
6、strlen()测试字符串长度的函数不包括“\0”
7、strlwr()将字符串中的大写字母转换为小写字母。
8、strupr()将字符串中的小写字母转换为大写字母。
函数
(1)一个源程序由多个函数组成。
(2)C程序的执行从main()函数开始;
(3)所有函数都是平行的;
(4)函数分类;可以分为标准和自定义,还可以分为有参函数和无参函数。
函数定义的一般形式:
(1)类型标志符 函数名()
{
声明部分
语句
}
(2)类型标志符 函数名(形式参数列表)
{
声明部分
语句
}
关于形参和实参的说明:
(1) 在定义函数中指定的形参,在未出现函数调用时,他们并不占用内存中的存储单元,只有发生调用时,才会分配内存。
(2) 实参可以是常量、变量或者表达式;有时传递的时地址;
(3) 在被定义中,形参必须指定类型;
(4) 实参与形参的类型应相同或赋值兼容;
(5) C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只有实参传递给形参,而不能由形参传递给实参。
函数的返回值:
希望通过函数调用使主调函数得到一个确定的值。
(1)函数的返回值是通过函数中的return语句获取的。
(2)函数值的类型;
(3)如果函数值的类型和return语句中表达式的值不一样,则以函数类型为准。
(4)如果调用函数中没有return语句,并不带回一个确定的用户需要的值,函数不是不带回值,而只是不带回有用的值,带回一个不确定的值。
(5)如不需要带回任何值,用void。
函数的调用:
调用方式1、函数语句;2、函数表达式;3、函数参数。
被调用的函数的声明:
一个函数调用另一个函数所具备的条件:
1、首先被调用的函数必须是已经存在的函数;
2、如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。
3、如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。
4、如果被调用的函数定义出现在主调函数之前可以不必声明。
5、如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明。
局部变量和全局变量:
(一)局部变量在一个函数内部定义的变量是内部变量,它只是在本函数范围内的有效,主函数也不能使用其它函数中定义的变量;不同函数中可以使用相同的名字的变量,他们代表不同的对象,互不干扰;形式参数也是局部变量;在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合句也可以称为“分程序”或“程序块”;
(二)全局变量,在函数之外定义的变量称为外部变量,全局变量可以增加函数间数据联系的渠道,一般不再必要时不要使用,他在程序的全部执行过程中占用存储单元,是函数的通用性,使用全局变量会使程序的清晰性降低。还要注意若果同一源文件中,外部变量和局部变量同名,则在局部变量作用范围内,外部变量被“屏蔽”,不起任何作用。
变量的存储类别:
(变量值存储时间)动态存储方式,在程序运行期间进行分动态的分配存储空间的方式,静态存储方式是指在程序运行期间分配固定的存储空间的方式;存储空间分为程序区、静态存储区和动态存储区;全局变量全部放在静态存储区中,程序开始时分配空间,完毕时释放;动态存储区中存放以下数据:
1、函数形式参数;
2、自动变量;
3、函数调用时的现场保护和返回地址;在C语言中每个变量和函数都有两个属性,是数据类型和数据存储类型,存储类别是数据在内存中存储的方式。
存储方式分为静态和动态存储类,具体包含有四种:自动的(auto),静态的(static),寄存器的(register),外部的(extern),如果不加以声明,就自认为是auto型就会自动分配存储空间属于动态存储方式。
Static声明局部变量是在函数调用结束后不消失而保留原值,即占用存储单元不释放,在下一次调用该函数时,该变量已有值,就是上次函数调用结束时的值。其中需要说明的是在定义局部变量不赋初值的话,则静态局部变量编译时自动赋值为0或者空字符,虽然静态局部变量在函数调用结束后仍然存在,但是其他函数不能引用它的。静态局部变量主要用在当初始化后,变量只是被引用而不改变其值。
Register变量是C语言中允许将局部变量的值放在CPU中的寄存器中需要时直接从寄存器中取出来参加运算,不必再到内存中提取,但是计算机系统中寄存器数量有限,不能任意定义任意多的存储器,局部静态变量不能定义为寄存器变量。
Extern声明外部变量,用以扩展外部变量的作用域。在一个文件中,如果定义之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量做外部变量声明。在多文件中,也可以采用extern声明的办法进行外部变量声明。有时希望某些局部变量只限于被本文件引用,而不能被其他文件引用,这时就可以采用在定义外部变量时外加一个static,这在程序模块化设计中加强了通用性。
Static来声明一个变量的作用有二个,一个是在声明对局部变量时。则为该变量分配的空间在整个程序执行期间始终存在;一个是在对全局变量声明中,该变量的作用域仅限于本文件模块操作。
注意:这些方法同样适用于函数的声明