第七章
1一维数组的重要概念: 对a[10]这个数组的讨论。
1、a表示数组名,是第一个元素的地址,也就是元素a[0]的地址。 2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。 3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。
对a[3][3]的讨论。
a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1,a[1]+1,a[2]+1都是跳一列。
注意a和a[0] 、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。
二维数组做题目的技巧:
如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。 步骤一:把他们写成: 第一列 a[0]à 1 a[1]à 4 a[2]à 7
第二列 第三列
2 3 ->第一行 5 6 —>第二行 8 9 ->第三行
步骤二:这样作题目间很简单:
*(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。 *(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]元素,所以是6。
一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。
数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写
int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。 但int a[4][]={2,3,4}非法。
二维数组中的行指针
int a[1][2];
其中a现在就是一个行指针,a+1跳一行数组元素。 搭配(*)p[2]指针
a[0],a[1]现在就是一个列指针。a[0]+1 跳一个数组元素。搭配*p[2]指针数组使用 还有记住脱衣服法则:
- 11 -
a[2] 变成 *(a+2) a[2][3]变成 *(a+2)[3]再可以变成 *(*(a+2)+3) 这个思想很重要!
第一章C语言概述
一、选择题:
1、一个C程序的执行是从( A )。
A本程序的main函数开始,到main函数结束
B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C本程序的main函数开始,到本程序文件的最后一个函数结束 D本程序文件的第一个函数开始,到本程序main函数结束
2、 在 C 语言中,每个语句必须以( D )结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号
3、C 语言规定:在一个源程序中,main函数的位置( C )。 A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后
4、一个C 语言程序是由( B )。
A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成
5、下列说法中错误的是( D )。
A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行
6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( A. 生成可执行目标文件 B. 生成目标文件
- 12 -
C )。
C. 输出运行结果 D. 自动保存源文件
二、填空题:
1、C 语言只有 32 个关键字和 9 种控制语句。
2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。
3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 \\* 符号作为开始标记,以 */ 符号作为结束标记。
4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函 数 printf 完成的。
5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj 经过连接后生成的可执行文件的扩展名是
.exe 。
6、C 语言的标识符只能由字母、数字和 下划线 三种字符组成。
第三章数据类型、运算符和表达式
一、选择题:
1、以下选项中,不正确的 C 语言浮点型常量是( C )。 A. 160. B. 0.12 C. 2e4.2 D. 0.0 2、以下选项中,( D )是不正确的 C 语言字符型常量。
A. 'a' B. '\\x41' C. '\\101' D. \
3、 在 C 语言中,字符型数据在计算机内存中,以字符的( C )形式存储。 A. 原码 B. 反码 C. ASCII 码 D. BCD码
4、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是( C )。 x=(i=4,j=16,k=32)
A. 4 B. 16 C.32 D.52
5、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为( B )。 A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算 C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算
6、若有代数式3aebc ,则不正确的C语言表达式是( C )。
A.a/b/c*e*3 B. 3*a*e/b/c C.3*a*e/b*c D. a*e/c/b*3
7、表达式!x||a==b 等效于( D )。
A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b)
- 13 -
,
8、设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是( A)。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 9、 设有语句 int a=3;,则执行了语句 a+=a-=a*=a;后,变量 a 的值是( B )。 A. 3 B. 0 C. 9 D. -12
10、在以下一组运算符中,优先级最低的运算符是( D )。
A. * B. != C. + D. =
11、设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是( B )。 A. 6 B. 12 C. 15 D. 表达式出错
12、若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是( C )。 A. 1 B. 2 C. 2.0 D. 2.5
13、sizeof (double)的结果值是( A )。
A. 8 B. 4 C. 2 D. 出错
14、设a=1,b=2,c=3,d=4,则表达式:a
15、设a 为整型变量,不能正确表达数学关系:1010 && a<15 D. !(a<=10) && !(a>=15)
16、设 f是实型变量,下列表达式中不是逗号表达式的是( D )。 A. f= 3.2, 1.0 B. f>0, f<10 C. f=2.0, f>0 D. f=(3.2, 1.0) 17、 表达式18/4*sqrt(4.0)/8值的数据类型是( C )。 A. int B. float C. double D. 不确定
18、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句 C2=’A’+’6’-‘3’;后c2中的值是( A )。 A. D B. 68 C. 不确定的值 D. C 19、以下用户标识符中,合法的是( B )。
A. int B. nit C. 123 D. a+b
20、C 语言中,要求运算对象只能为整数的运算符是( A )。
A. % B. / C. > D. *
21、若有说明语句:char c='\\72';则变量c在内存占用的字节数是( A )。 A. 1 B. 2 C. 3 D. 4
22、字符串\在内存占用的字节数是( B )。 A. 3 B. 4 C. 6 D. 8
23、要为字符型变量 a赋初值,下列语句中哪一个是正确的( B )。 A. char a=\ B. char a=’3’; C. char a=%; D. char a=*; 24、下列不正确的转义字符是( C )。 A. \\\\ B. \\' C. 074 D. \\0
- 14 -