19年3月二级C--C程序设计初步知识
1.逗号表达式: (a,b) 值为b
2.C语言中的指数形式,字母e之前必须有数字,且e后面指数必须为整数。
3.使用定义变量一定得先初始化。
4.C语言中长整型数为数值后加一个L或1字符。
5.C语言的标识符的定义为以字母或下划线开头的,由字母,数字,字符,下划线组成的字符串。而且标识符不能与关键字相同。
6.整型(int)常量即整常数,c整常数可以用以下三种形式表示:
①十进制整数。如123,-456,0。
②八进制整数,以0开头的数是八进制数。如0123表示八进制数123,即(123)8
③十六进制整数,以0x开头的数是十六进制数。如0x123代表十六进制数123,即(123)16
一个int型的值范围是-2的15次方~2的15次方,即-32768~32767
7.C语言中归纳起来,基本类型数据有以下几种:
[Signed] char;
Unsigned char;
[Signed] short [int];
Unsigned short [int];
[Signed] long [int];
Unsigned long [int];
float;
double;
long double;
8.可以把define定义为用户标示符,不能把if定义为用户标示符。
注意: 不要把define误认为是宏定义命名,正确的宏定义命名为 #define
if属于系统定义的32个关键字之一。
9.函数pow(x,y)的功能是计算x的y次方的值,在c语言中没有^ 这个符号
函数exp(x)表示函数参数x为幂的指数[ e的x次方 ]
10.数值常量分为不同的类型: 整型常量,实型常量,字符常量。
①在c语言中使用的整常数有八进制,十六进制和十进制三种。
十进制常数: 十进制整常数没有前缀,其数码取值为0~9。
八进制整常数: 八进制整常数必须以0开头,即以0做为八进制的前缀,数码取值为0~7,八进制常数通常是无符号数。
十六进制整常数: 其前缀是0X或0x,其数码取值为0~9,A~F或a~f。
②实型常量也称为实数或者浮点数。C语言中,实数只采用十进制。它有两种形式: 十进制小数形式,指数形式。
十进制小数形式,由数码0~9和小数点组成。
指数形式,由十进制数加阶码标志"e"或"E"以及阶码(阶码只能为整数,可以带符号)组成。
11.C语言标准只规定了char型占用内存大小为1,而long,int,short等类型数据占用内存大小由编译系统决定。
12.C程序由函数构成的。(C程序的基本组成单位是函数。)
13.C语言中的注释部分只是用于阅读,对程序的运行不起作用,注释间的任何内容都被编译程序忽略,但是不可以夹在变量名或者关键字的中间。
14.不同类型的数据在进行运算时,要先转换成同一类型,然后进行运算。
转换的规则是char,short→int→unsigned→long→double。
15.所谓常量,是指在程序运行过程中,其值不能被改变的量。
16.《❺有以下程序
mainO
{ unsigned int a,
int b=-1;a=b
prinf("%u", a);
程序运行后的输出结果是( )
本题考的是不同类型数据间的混合运算。
当运算对象为不同类型时,数据的转换方向为int ->unsi gned ->long ->double,本题程序中的变量b为int型,先要转换为unsi gned型,int型变量的数值范围为-32768 32767,最高位为符号位,而unsi gned所表示的数的范围为0--65535,它的最高位为数值位。由于内存中是以补码形式存储数据的,所以整型的”-1”在内存中的表示为16个1, 最高位的”1'表示符号负,将它转换为unsi gned类型,即将原符号位表示符号的1“看成数值,所以就得到16个数值位1,即65535。
17. i++; ++i; … 不是赋值语句
等价于 i=i+1;
18.以下程序的输出结果是___。
#include <stdio. h》mainO
int a=2, c=5;
printf( a=%%d, b=%%d\n" ,a,c);
①a=%2, b=%5 ②a=2, b=5
③a=%%d, b=%%d ④ a=%d, b=%d
——答案解析——
本题的考查点是格式控制字符的应用。
printf( )函数:当“格式控制”字符串中连续使用两个“%”符号时,表示要输出字符%”,所以,a, c两个变量的值并不带入输出字符串,最后的打印结果应当是a=%d, b=%d
故本题答案为D。
19.以下非法的赋值语句是__。
O①n=(i=2, ++i): ②j++,
③++(i+1); ④ x=j>0;
参考答案:
本题的考查点是赋值语句。
选项①是将一个逗号表达式的值赋给一一个变量;
选项②是自增运算;
选项③中(i+1)是一个常量,常量不能进行自增运算;
选项④是将一个整数赋给一 个变量。故本题答案为③。
20.有以下程序
mainO
{ int a=666, b=888;
printf( %d\n' ,a,b);}
程序运行后的输出结果是
①错误信息 ②666
③888 ④666, 888
参考答案:
本题考查的是输出格式。
printf (函数中,当格式转换说明符个数少于输出项个数时,多余的输出项不予输出。所以本题答案为②。
21.双精度变量(double型),在输入时必须以f(lf)或e(le)的形式。
22.scanf和printf是c语言提供的输入和输出函数。
由printf输出的数据都隐含右对齐。
由printf输出的数据的实际精度是由格式控制中的小数的域宽来完全决定的。
23.int型,float型,double型对应的输入数据格式分别是%d,%f,%lf
24.设有定义:
int n = 1234;
doub1e x = 3. 1415;
则语句
printf("%3d,%1.3f\n”, n, x);的输出结果是
①1234, 3. 142 ②123, 3. 142
③1234, 3. 141 ④123,3. 141
本题考查的是格式控制。
本题中已定义好了n、x的值,%nd, 若n的值小于该数值的长度,则按该数值输出,若n的值大于该数值的长度则在数值的右边补0; %1. 3f中3代表小数位的位数,要遵守四舍五入的规则。
故本题答案为①。
25.&&进行"短路"运算: 当运算符"&&"左边表达式的值为零时,则右边表达式就不再进行运算。
26.sizeof返回对象或者类型所占的内存字节数。char,int,float类型占用的字节数均为4。
27.在c语言程序中,可以用一个符号名来代表一个常量,称为符号常量。(符号常量是指在程序中通过宏定义用一个符号名来代表的一个常量。)
28.
C语言运算符的优先级
一、从上往下 运算符优先级依次降低
1、括号以及 .(结构体变量运用成员运算符) ->(结构体指针引用成员运算符)
2、单目运算符: ! ~ ++ -- &(取地址符) *(取内容) sizeof()
3、算数运算符: * / %+ -
4、位运算符: << >>
5、关系运算符: >= > < <= == !=
6、位运算符:& ^ |
7、逻辑运算符: && ||
8、条件运算符: ?:;
9、(复合)赋值运算符: = += -= ....
10、逗号运算符: ,
二、左结合(从右向左运算):(复合)赋值运算符、逻辑非、取反(~ )、前置自增减运算符右结合(从左向右运算)
注意逗号运算符的用法:
带有括号的表达式, 不带有括号的表达式.
int a,b;
int c = (a = 10,b = 30, a= a+b,b = a+b); // c = 70
int c = a = 10,b = 30, a= a+b; // c = 10
29.若有以下程序
#include <stdio. h>mainO
{ int a=0, b=0, c=0;
c= (a -= ++a), (a+=b, b+=4);
printf("%d, %d, %d\n",a,b,c);}
则程序的输出结果是
① 0,4,0 ② 0,4, 4
③1,4,1 ④1,4,4
本题考查的是算术运算符。
(a-=++a)
即a=a- (++a) =1-1=0;
c=(a-=++a)=0;
a+=b=0+0=0;
b+=4=0+4=4。故本题答案为①。
30.所谓变量是指在程序运行过程中其值可以改变的量。
程序中用到的所有变量都必须有一个名字作为标识,变量的名字由用户定义,它必须符合标示的命名规则。
一个变量实质上代表了内存中的某个存储单元。
C语言规定,程序中所有的变量都必须先定义后使用。
31.C语言的标识符有: 关键字,预定义标识符,用户标识符三类。
32.基本运算符: sizeof: 求字节运算符 (): 函数调用 &&: 逻辑与
33.整型常量和实型常量又称数值型常量。
34.整型变量可以分为int型,short型,long型,unsigned型四种。
在C程序中的八进制和十六进制是整型。
八进制数的开头必须是以数字"0"。
二进制可以用0和1作为开头字母。
35.按位与(&): 只有当两个数(二进制形式)的同一位数都为1时才为1
a&b inputs1: 11111100
inputs2: 00111111
result: 00111100
按位或(|): 两个数的同一位数都不为0(即任意一个为1或都为1)时,所得结果对应位置设为1。
a|b inputs1: 01111100
inputs2: 00111111
result: 01111111
按位异或(^): 当两个数的同一位数不相同时就设为1,如果相同就设为0。
a^b inputs1: 01111100
inputs2: 00111111
result: 01000011
按位取反(~): 对一个操作数的每一位都取反。
a inputs: 00001111
~a result: 11110000
按位左移(<<):
1111<<3 (从右往左,每一位数都左移3个位置)
result: 1000 (空位用0填充,左端3个原数据被丢弃)
按位右移(>>):
1011>>2(从左往右,每位数右移)
result: 0010
36.C语言提供了三大类数据类型即基本类型,复合类型和地址类型。
①基本类型只代表单个数据。
②复合类型由基本类型组合而成,可代表一批数据。
③地址类型可直接表示内存中的地址。
C语言支持的五种基本数据类型:
①字符型: 表示单个字符。
②整型: 表示整数,包括基本整型,短整型,长整型和无符号整型。
③浮点型: 表示实数,精度为6~7位为有效数字。
37.逻辑运算符两侧的运算对象,不但可以是0和1,也可以是任意基本类型和指针类型的数据,还可以是任意合法表达式。
38.if后面的表达式,可以是关系表达式或逻辑表达式,也可以是其它类型的数据,如整型,实型,字符型等。
39.逻辑值"真"可用1表示,逻辑值"假"可用0表示。若只处理真和假两种逻辑值,逻辑值0和1使用整型值即可。
40. 0<x<5 此写法是数字中的写法,并不是c语言中表达式的正确写法,它的值与x无关,并且行恒为真。
41.在switch语句中,紧跟在switch后一对圆括号中的表达式可以是整型表达式及字符型表达式等,case后的常量表达式的类型必须与switch后圆括号中的表达式类型相同。
42.scanf函数不识别空格,回车符,制表符。(即遇到这些符号时就停止输入)
getchar( )会读取输入的空格。
43.赋值表达式的形式为: 变量名=表达式。
44.字母e或E之前必须得有数字,之后的数字必须为整型。
45.在c语言函数内部,可以调用嵌套函数,但是不可以定义局部嵌套函数。
46.在函数内部和复合语句内部定义的变量,称为局部变量。局部变量既可以说明成自动类,也可说明为静态类。
在c语言中,由用户命名的标识符都有一个有效的作用。所谓的标识符的作用域就是指程序中的某一部分,在这一部分中,该标识符是有定义的,可以被c编译和连接程序所识别。
47.每一个可执行的c程序都必须有且只有一个main函数,但是,并不是每个c程序文件都应该包含一个main函数,main函数可以放在任意位置。
48.若有定义: double x ; 则表达式x=0,x+10,x++的值为0.0
X被定义为double类型,赋值过程中会出现强制类型转换。逗号表达式中,最后一个表达式的值就是此逗号表达式的值,所以整个表达式的值为x++的值,x=0,x++的表达式为0.0,x的值为1.0
49.C语言中的基本运算符为: +,-,*,/,% (加,减,乘,除,求余)
50.用户标识符与关键字相同,则在对程序进行编译时,系统将给出出错信息。
如果用户标识符与预定义标识符相同,系统并不报错,只是该预定标识符将失去原定含义,代之以用户确认的含义,这样有可能会引发一些运行时错误。
60整型常量可以用十进制,八进制和十六进制等形式表示。
只有十进制的数可以是负数,而八进制和十六进制只能是正数。
61.判断逻辑表达式: a++&&b++,若左侧的值为假,右侧就不要执行。
判断逻辑表达式: a++||b++,若左侧的值为真,右侧就不需要执行。(称逻辑表达式的"短路"现象)
关系运算符的结果: 非0和0。
else 不是一条独立的语句,它只是if语句的一部分。
62.只能在循环体内和switch语句体内使用break语句。