- 全国计算机等级考试《二级C语言程序设计》【教材精讲+真题解析】讲义与视频课程【45小时高清视频】
- 圣才电子书
- 1994字
- 2021-06-08 15:34:20
第2章 C程序设计的初步知识[视频讲解]
2.1 C语言的一个简单实例
视频二维码(扫码观看)
#include<stdio.h>/* 命令行*/
main()
{
double a,b,area;/* 定义部分*/
a=1.2;
b=3.6;/* 执行部分*/
area=a*b;
printf("a=%f, b=%f, area=%f\n", a, b, area);
}
【说明】
①main()是程序执行的入口,()不能省略。
②main()有且只能有一个。
③每个语句必须用“;”号结束。
④命令行“#”号开头,且行尾不能加“;”。
⑤注释必须放在“/*”和“*/”之间,且注释之间不可以再嵌套“/*”和“*/”。
2.2 标识符
视频二维码(扫码观看)
1标识符
用来标识常量、变量、函数、标号等。
(1)命名规则
由字母或下划线开头,字母、下划线和数字组成。
【注意】
①第一个字符必须是字母或下划线。
②中间不能有空格。
③大小写敏感。
area、PI、_ini、a_array、_s12、546P、cade&1、w.w
(2)C语言的标识符分类
①关键字(共32个)
如:int、double、if、else
②预定义标识符
如:define、printf
③用户标识符
如:red、green、number
2常量
在程序运行过程中,其值不能被改变的量。
(1)整型常量:不带小数点的数字,如12、-1、0
(2)实型常量:带小数点的数字,如3.14、-2.7、0.0
(3)字符常量:如'a'、'A'
(4)字符串常量:如"Nice"、"Beijing"
3符号常量
在程序中特别指定的一个符号名来代表的一个常量,一般用大写字母表示。如:#define PI 3.14159
4变量
在程序运行过程中,其值可以被改变的量,必须先定义后使用。在定义的同时说明其类型,编译时系统根据类型分配相应的存储空间。
2.3 数据类型
视频二维码(扫码观看)
1整型数据的分类
默认为有符号型(signed)。
基本型:int。
短整型:short int或short。
长整型:long int或long。
无符号:无符号型的整数必须是正数或零。
无符号整型:unsigned int。
无符号短整型:unsigned short。
无符号长整型:unsigned long。
长整型数据后加l或L,如123l,0L。
无符号数据后加u或U,如200u,12U。
定义的整型数所占字节数和数制范围。
【注意】一个字节在内存中占8bit。
2整数在内存中的存储形式
一个字节中的最右边称为最低位,最左边称为最高位。对于有符号的整数,最高位用来存放符号,称为符号位。若为正数,最高位放0,若为负数,最高位放1。
(1)正整数在内存中以“原码”形式存放。
如:short int a=5; 0000 0000 0000 0101
short类型的最大整数0111 1111 1111 1111 = 32767
(2)负整数以“补码”形式存放。
如short int a=-5;二进制数1000000000000101
①求原码的反码。1111111111111010
②将反码加1,即为补码。1111111111111011
(3)将内存中以补码形式存放的二进制转化为十进制。
如,内存中存放1111 1111 1111 1011
①将符号位之外的位取反。1000 0000 0000 0100
②所得二进制转换为十进制。-4
③对所得数减1,即-5。
3实型数据
(1)实型常量(实数或者浮点数)
小数形式:0.123、.23、0.0。
指数形式:2.3026 = 23.026*10-1 = 2.3026*100 = 0.23026*101可表示成23.026E-1,2.3026E0,0.23026E1。
E3,5E3.6,.E3,E是非法的指数形式。
(2)实型变量
单精度型:float a,b,c; //4个字节。
双精度型:double x,y,z; //8个字节。
默认为double型,在实型常量后加字母f或F,认为它是float型。
【注意】
①整型变量不能存放实数,实型变量不能存放整数。
②在运算中所有float型数据自动转换为double型数据。
③程序中实数可以用小数或指数表示,但内存中以指数形式存放。
④由于实型数值范围较大,存放时存在误差。
2.4 运算符和表达式
视频二维码(扫码观看)
1算术运算符
+加、-减、*乘、/除、%求余、++自加、--自减
(1)运算符需要两个运算对象的,双目运算符。如:1.2*3.2。
(2)运算符需要一个运算对象的,单目运算符。如:++i。
(3)%求余运算符的对象只能是整型。如:5%2。
(4)若双目运算符两边的类型一致,则结果类型与运算数类型一致。如:1.0/2.0,1/2。
(5)若双目运算符两边类型不一致,系统自动类型转换一致后运算。如:
(6)所有实数都以双精度类型double运算。如:
①系统自动转换规则:
← 表示必定的转换
↑ 表示运算对象不同类型时的转换
②强制转换:(<类型名>)<表达式>
例如:(float) i,(int)(f1-f2)
【说明】如i是整型,则(float)i是float型,但i仍保留为整型。
(7)自加运算符++和自减运算符--。
++i, --i:在使用i之前,i=i+1或i=i-1。
i++, i--:在使用i之后,i=i+1或i=i-1。
【注意】++、--运算符只能用于变量,而不能用于常量或表达式。
2关系运算符
>、>=、<、<=、==、!=
优先级低于算术运算符。若关系成立,则表达式值为非零(真),若不成立,则表达式值为零(假)。
如:i>5,ch<='z',i==count,time!=p+q。
3逻辑运算符
&&:逻辑与
||:逻辑或
!:逻辑非
(1)a&&b,a||b,!a
(2)C语言中,&&和||是短路运算符号。
如:a++&&b++
4赋值运算符
=
赋值表达式:<变量> = <表达式>
优先级只高于逗号运算符,自右向左结合。
(1)复合赋值运算符
在=之前加某些特定运算符:+=,-=,*=,/=,%=。
例如:i += j+8等价于I = i+(j+8);x *= 3等价于x = x*3;p %= 2等价于p = p%2。
【例】已知a=9,计算a+=a-=a+a。
①自右向左结合:a+=a-=(a+a),表达式变为计算a+=a-=18;
②自右向左结合:a+=(a=a-18),这时a=9-18=-9,表达式变为计算a+=-9;
③a+=-9,即为a=a+(-9),这时a=-9-9=-18。
(2)条件表达式:
<表达式1> ? <表达式2> : <表达式3>
【说明】首先计算<表达式1>的值,若为非零,则表达式的值为<表达式2>,否则表达式的值为<表达式3>。
例如:max = (a>b)?a:b /* 将a、b两数中的较大值送给max*/
5逗号运算符
,
逗号表达式:<表达式1>, <表达式2>, … , <表达式n>
优先级最低,自左向右运算,最后一个表达式的值。
如:
a=3*8,a+2
i=3,i++,++i,i+5
2.5 习题解析
1以下选项中不合法的用户标识符是( )
A._123
B.printf
C.A $
2若x为double型变量,请写出运算x=3.2,++x后表达式的值______和变量x的值______
3C语言中的标识符可分为______、______和预定义标识符三类。
4若变量已正确定义并赋值,符合C语言语法的表达式是( )
A.a=a+7;
B.a=7+b+c,a++
C.int(12.3%4)
D.a=a+7=c+b
5请指出以下C程序的错误所在:
main /*main function*/
{
float a,b,c,v; /*a,b,c are sides, v is volume of cube*/
a=2.0;
b=3.0;
c=4.0 v=a*b*c;
printf("%f\n",v)
}