高级语言程序设计(一)
(试卷编号:8252,考试时间120分钟,满分120分)
学院:________系:________班级:________姓名:________学号:________考号:________
一、填空 (共30题,合计30分) |
1. | C语言表达式!(3<6)||(4<9)的值是________________。 |
2. | int x=2;z=-x+++1; 则x的值为________________。 |
3. | 若有以下定义和语句: int a[5]={1,3,5,7,9},*p;p=&a[2]; 则++(*p)的值是________________。 |
4. | 若所用变量都已正确定义,请填写以下程序段的输出结果________________.for(i=1;i<=5;i++); printf("OK\n"); |
5. | 设char a,b;若想通过a&& b运算保留a的第1位和第6位的值,则b的二进制数是________________。 |
6. | 在C语言中,文件的存取是以________________为单位的,这种文件被称为________________文件。 |
7. | 若有以下数组a,数组元素:a[0]~a[9],其值为 9 4 12 8 2 10 7 5 1 3该数组可用的最小下标值是________________。 |
8. | 结构体是不同数据类型的数据集合,作为数据类型,必须先说明结构体________________,再说明结构体变量。 |
9. | 将数组a的首地址赋给指针变量p的语句是________________。 |
10. | 调用 fopen 函数打开一文本文件,在"使用方式"这一项中,为输入而打开需填入________________。 |
11. | 按内存排列顺序, 数组char a[2]中的所有元素是a[1]和________________。 |
12. | 当a=3,b=2,c=1;时,执行以下程序段后 a=________________.if(a>b) a=b; if(b>c) b=c;else c=b;c=a; |
13. | C语言中,________________是程序的基本组成部分。 |
14. | 下列程序的运行结果是________________,main(){unsigned x1; int b=-1;x1=b;printf("%u",x1);} |
15. | static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};其中a[1][2]的值为________________。 |
16. | 数组在内存中占一段连续的存储区,由________________代表它的首地址。 |
17. | 设c语言中,int类型数据占2个字节,则long类型数据占________________个字节,short类型数据占________________个字节。 |
18. | c语言程序的三种基本结构是:顺序结构,选择结构,________________结构。 |
19. | int x=y=4,z=2;x=y==z; 则x的值为________________。 |
20. | 函数调用时的实参和形参之间的数据是单向的________________传递。 |
21. | 复制字符串的库函数是________________,只写函数名即可。 |
22. | 以下程序段要求从键盘输入字符,当输入字母为'Y' 时,执行循环体,则括号内应填写________________.ch=getchar(); while(ch ____ 'Y')/*在括号中填写*/ch=getchar(); |
23. | 将函数funl 的入口地址赋给指针变量p的语句是________________。 |
24. | 静态变量和外部变量的初始化是在________________阶段完成的,而自动变量的赋值是在________________时进行的。 |
25. | 在c程序中,只能给指针赋NULL值和________________值。 |
26. | 预处理命令行都必须以________________号开始。 |
27. | 执行下列语句后,*(p+1)的值是________________.char s[3]="ab",*p;p=s; |
28. | 如果函数不要求带回值,可用________________来定义函数返回值为空。 |
29. | feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为________________,否则为________________。 |
30. | 在C语言中,最大整型数是________________。 |
二、判断 (共15题,合计30分) 下列描述正确打(√),错误打(×)。 |
1. | 如果有一个字符串,其中第十个字符为'\n',则此字符串的有效字符为9个。( ) |
2. | int i,*p=&i;是正确的C说明。( ) |
3. | 用fopen("file","r+");打开的文件"file"可以进行修改。( ) |
4. | C程序中有调用关系的所有函数必须放在同一个源程序文件中。( ) |
5. | 若有int ⅰ=10, j=0;则执行完语句if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11。( ) |
6. | a=(b=4)+(c=6) 是一个合法的赋值表达式。( ) |
7. | 关系运算符<= 与 == 的优先级相同。( ) |
8. | 语句 printf("%f%%",1.0/3);输出为 0.333333。( ) |
9. | 在Turbo C中,下面的定义和语句是合法的:file *fp;fp=fopen("a.txt","r");( ) |
10. | 在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。( ) |
11. | C语言中只能逐个引用数组元素而不能一次引用整个数组。( ) |
12. | int a[3][4]={{1},{5},{9}}; 它的作用是将数组各行第一列的元素赋初值,其余元素值为0。( ) |
13. | int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的输出结果为A。( ) |
14. | 若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21。( ) |
15. | 共同体变量所占的内存长度等于最长的成员的长度。( ) |
三、单项选择 (共40题,合计40分) 下列选项中,只有一个是正确的。 |
1. | sizeof(float)是()。 | |||
A. | 一种函数调用 | B. | 一个不合法的表达式 | |
C. | 一个整型表达式 | D. | 一个浮点表达式 | |
2. | 函数 ftell(fp) 的作用是()。 | |||
A. | 得到流式文件中的当前位置 | B. | 移到流式文件的位置指针 | |
C. | 初始化流式文件的位置指针 | D. | 以上答案均正确 | |
3. | 以下程序的输出结果是()。main( ){int i,j,k,a=3,b=2;i=(--a==b++)?--a:++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);} | |||
A. | i=2,j=1,k=3 | B. | i=1,j=1,k=2 | |
C. | i=4,j=2,k=4 | D. | i=1,j=1,k=3 | |
4. | 在一个C程序中()。 | |||
A. | main函数必须出现在所有函数之前 | |||
B. | main函数可以在任何地方出现 | |||
C. | main函数必须出现在所有函数之后 | |||
D. | main函数必须出现在固定位置 | |||
5. | 下面选择中正确的赋值语句是(设char a[5],*p=a;)()。 | |||
A. | p="abcd"; | B. | a="abcd"; | |
C. | *p="abcd"; | D. | *a="abcd"; | |
6. | 用下列语句定义a,b,c,然后执行b=a、c='b'+b,则b,c的值是()。 long a=0xffffff; int b; char c; | |||
A. | 0ffffff 和0x61 | B. | -1和98 | |
C. | -1和97 | D. | 指向同一地址 | |
7. | 以下对枚举类型名的定义中正确的是()。 | |||
A. | enum a={sum,mon,tue}; | B. | enum a {sum=9,mon=-1,tue}; | |
C. | enum a={"sum","mon","tue"}; | D. | enum a {"sum","mon","tue"}; | |
8. | 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。 | |||
A. | 函数调用可以作为独立的语句存在 | |||
B. | 函数调用可以作为一个函数的实参 | |||
C. | 函数调用可以出现在表达式中 | |||
D. | 函数调用可以作为一个函数的形参 | |||
9. | 位字段数据的单位是()位。 | |||
A. | 十六进制 | B. | 八进制 | |
C. | 二进制 | D. | 十进制 | |
10. | 以下不符合C语言语法的赋值语句是()。 | |||
A. | a=1,b=2 | B. | ++j; | |
C. | a=b=5; | D. | y=(a=3,6*5); | |
11. | 语句while(!E);中的表达式!E等价于()。 | |||
A. | E==0 | B. | E!=1 | |
C. | E!=0 | D. | E==1 | |
12. | 函数的形式参数隐含的存储类型说明是()。 | |||
A. | extern | B. | static | |
C. | register | D. | auto | |
13. | 以下read函数的调用形式中,参数类型正确的是()。 | |||
A. | read(int fd,char *buf,int count) | |||
B. | read(int *buf,int fd,int count) | |||
C. | read(int fd,int count,char *buf) | |||
D. | read(int count,char *buf,int fd) | |||
14. | 下面说明不正确的是()。 | |||
A. | char a[10]="china"; | B. | char a[10],*p=a;p="china" | |
C. | char *a;a="china"; | D. | char a[10],*p;p=a="china" | |
15. | C程序中的宏展开是在()。 | |||
A. | 编译时进行的 | B. | 程序执行时进行的 | |
C. | 编译前预处理时进行的 | D. | 编辑时进行的 | |
16. | 以下描述中,正确的是()。 | |||
A. | 预处理是指完成宏替换和文件包含中指定的文件的调用 | |||
B. | 预处理指令只能位于C源文件的开始 | |||
C. | C源程序中凡是行首以#标识的控制行都是预处理指令 | |||
D. | 预处理就是完成C编译程序对C源程序第一遍扫描,为编译词法和语法分析作准备 | |||
17. | 以下不能对二维数组a进行正确初始化的语句是()。 | |||
A. | int a[2][3]={0}; | |||
B. | int a[][3]={{1,2},{0}}; | |||
C. | int a[2][3]={{1,2},{3,4},{5,6}}; | |||
D. | int a[][3]={1,2,3,4,5,6}; | |||
18. | C语言允许函数类型缺省定义,此时函数值隐含的类型是()。 | |||
A. | float | B. | int | |
C. | long | D. | double | |
19. | 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()。 | |||
A. | 自动(auto) | B. | 静态(static) | |
C. | 外部(extern) | D. | 寄存器(register) | |
20. | 以下不是无限循环的语句为()。 | |||
A. | for(y=0,x=1;x>++y;x=i++) i=x; | |||
B. | for(;;x++=i); | |||
C. | while(1){x++;} | |||
D. | for(i=10;;i--) sum+=i; | |||
21. | char *match(char c)是()。 | |||
A. | 函数定义的头部 | B. | 函数预说明 | |
C. | 函数调用 | D. | 指针变量说明 | |
22. | 以下数值中,不正确的八进制数或十六进制数是()。 | |||
A. while语句的执行流程 | 0x16 | B. | 16 | |
C. | -16 | D. | 0xaaaa | |
23. | int a[10];给数组a的所有元素分别赋值为1、2、3、……的语句是()。 | |||
A. | for(i=1;i<11;i++)a[i]=i; | B. | for(i=1;i<11;i++)a[i-1]=i; | |
C. | for(i=1;i<11;i++)a[i+1]=i; | D. | for(i=1;i<11;i++)a[0]=1; | |
24. | 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()。 | |||
A. | p=1; | B. | *q=2; | |
C. | q=p; | D. | *p=5; | |
25. | 下列运算符中是C语言关系运算符的是()。 | |||
A. | ~ | B. | ! | |
C. | & | D. | != | |
26. | 判断char型变量cl是否为小写字母的正确表达式是()。 | |||
A. | 'a'<=cl<='z' | B. | (cl>=a)&&(cl<=z) | |
C. | ('a'>=cl)||('z'<=cl) | D. | (cl>='a')&&(cl<='z') | |
27. | 以下语句中,循环次数不为10次的语句是()。 | |||
A. | for(i=1;i<10;i++); | B. | i=1;do{i++;}while(i<=10); | |
C. | i=10;while(i>0){--i;} | D. | i=1;m:if(i<=10){i++;goto m;} | |
28. | 下列程序的输出结果是()。main( ){char c1=97,c2=98;printf("%d %c",c1,c2);} | |||
A. | 97 98 | B. | 97 b | |
C. | a 98 | D. | a b | |
29. | 以下对C语言函数的描述中,正确的是()。 | |||
A. | C程序必须由一个或一个以上的函数组成 | |||
B. | C函数既可以嵌套定义又可以递归调用 | |||
C. | 函数必须有返回值,否则不能使用函数 | |||
D. | C程序中有调用关系的所有函数必须放在同一个程序文件中 | |||
30. | 下列定义数组的语句中不正确的是()。 | |||
A. | static int a[2][3]={1,2,3,4,5,6}; | |||
B. | static int a[2][3]={{1},{4,5}}; | |||
C. | static int a[][3]={{1},{4}}; | |||
D. | static int a[][]={{1,2,3},{4,5,6}}; | |||
31. | 以下标识符中,不能作为合法的C用户定义标识符的是()。 | |||
A. | answer | B. | to | |
C. | signed | D. | _if | |
32. | 假定所有变量均已正确定义,下列程序段运行后x的值是()。k1=1;k2=2;k3=3;x=15;if(!k1) x--;else if(k2) x=4; else x=3; | |||
A. | 14 | B. | 4 | |
C. | 15 | D. | 3 | |
33. | 求平方根函数的函数名为()。 | |||
A. | cos | B. | abs | |
C. | pow | D. | sqrt | |
34. | 以下程序段 char *alp[]={"ABC","DEF","GHI"}; int j; puts(alp[1]);的输出结果是()。 | |||
A. | A | B. | B | |
C. | D | D. | DEF | |
35. | C语言中函数调用的方式有()。 | |||
A. | 函数调用作为语句一种 | |||
B. | 函数调用作为函数表达式一种 | |||
C. | 函数调用作为语句或函数表达式两种 | |||
D. | 函数调用作为语句、函数表达式或函数参数三种 | |||
36. | 若调用一个函数,且此函数中没有return语句,则正确的说法是:该函数()。 | |||
A. | 没有返回值 | B. | 返回若干个系统默认值 | |
C. | 能返回一个用户所希望的值 | D. | 返回一个不确定的值 | |
37. | 先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是()。 | |||
A. | c='a'; | B. | c="a"; | |
C. | c="97"; | D. | C='97' | |
38. | 以下叙述中不正确的是()。 | |||
A. | 预处理命令行都必须以#号开始 | |||
B. | 在程序中凡是以#号开始的语句行都是预处理命令行 | |||
C. | C程序在执行过程中对预处理命令行进行处理 | |||
D. | 以下是正确的宏定义 #define IBM_PC | |||
39. | 当说明一个结构体变量时系统分配给它的内存是()。 | |||
A. | 各成员所需内存量的总和 | |||
B. | 结构中第一个成员所需内存量 | |||
C. | 成员中占内存量最大者所需的容量 | |||
D. | 结构中最后一个成员所需内存量 | |||
40. | 若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是()。 | |||
A. | "ab++" | B. | "wb+" | |
C. | "rb+" | D. | "ab" | |
四、多项选择 (共10题,合计20分) 下列选项中,有一个或多个是正确的。 |
1. | 以下对二维数组a进行正确初始话的是()。 | |||
A. | static char word[]='Turbo\0'; | |||
B. | static char word[]={'T','u','r','b','o','\0'}; | |||
C. | static char word[]={"Turbo\0"}; | |||
D. | static char word[]="Turbo\0"; | |||
2. | 以下叙述正确的是()。 | |||
A. | C语言严格区分大小写英文字母 | |||
B. | C语言用";"作为语句分隔符 | |||
C. | C程序书写格式自由,一行内可以写几个语句,一个语句也可以写在几行上. | |||
D. | 可以使用/*…*/对C程序中的任何部分作注释 | |||
3. | 以下关于typedef的叙述正确的是()。 | |||
A. | 用typedef可以定义各种类型名,但不能用来定义变量 | |||
B. | 用typedef可以增加新类型 | |||
C. | 用typedef只是将已存在的类型用一个新的名字来代表 | |||
D. | 使用typedef便于程序的通用 | |||
4. | 以下对switch语句和break语句中描述错误的有()。 | |||
A. | 在switch语句中必须使用break语句 | |||
B. | break语句只能用于switch语句 | |||
C. | 在switch语句中,可以根据需要使用或不使用break语句 | |||
D. | break语句是switch语句的一部分 | |||
5. | 在定义int a[2][3];之后,对a的引用正确的有()。 | |||
A. | a[0][2] | B. | a[1,3] | |
C. | a[1>2][!1] | D. | a[2][0] | |
6. | 以下4个选项中,可以看作是一条语句的有()。 | |||
A. | {;} | B. | a=0,b=0,c=0; | |
C. | if(a>0); | D. | if(b==0) m=1;n=2; | |
7. | 以下描述错误的是()。 | |||
A. | continue语句的作用是重新开始一次循环体的执行 | |||
B. | 只能在循环体内和switch语句体内使用break语句 | |||
C. | 在循环体内使用break语句和continue语句的作用相同 | |||
D. | 从多重循环嵌套中退出是,只能使用goto语句 | |||
8. | 对do-while语句描述正确的是()。 | |||
A. | do-while语句构成的循环可以使用break语句退出循环 | |||
B. | do-while语句构成的循环必须使用break语句退出循环 | |||
C. | do-while语句构成的循环,当while中的表达式值为非零时结束循环 | |||
D. | do-while语句构成的循环,当while中的表达式值为零时结束循环 | |||
9. | 下列选项中是C语言合法标志符的有()。 | |||
A. | good_morning | B. | main | |
C. | stdio.h | D. | 8abc | |
10. | 以下关于数组描述错误的是()。 | |||
A. | 数组的大小是固定的,但可以有不同的类型的数组元素 | |||
B. | 数组的大小是可变的,但所有数组元素的类型必须相同 | |||
C. | 数组的大小是固定的,所有数组元素的类型必须相同 | |||
D. | 数组的大小是可变的,可以有不同的类型的数组元素 | |||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论