四川大学期 C 程序设计期末考试试题(B 闭卷)
(2008——2009 课程号: 909002020 适用专业年级: 学年第 下 学期) 成绩: 姓名: 课序号: 课程名称: 程序设计 C 任课教师: 学生人数: 印题份数: 学号:
考 试 须 知 四川大学学生参加由学校组织或由学校承办的各级各类考试,必须严格执行《四川大学考试工作 管理办法》和《四川大学考场规则》 。有考试违纪作弊行为的,一律按照《四川大学学生考试违纪作 弊处罚条例》进行处理。 四川大学各级各类考试的监考人员,必须严格执行《四川大学考试工作管理办法》《四川大学考 、 场规则》和《四川大学监考人员职责》 。有违反学校有关规定的,严格按照《四川大学教学事故认定 及处理办法》进行处理。文档收集自网络,仅用于个人学习
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案。每小题 1 分,共 40 分)
1.编译是指将源文件翻译成( ) 。
A) 目标文件 B) 可执行文件 C) 文本文件 D) 系统文件 2.以下说法中正确的是( ) 。
A) C语言程序总是从第一个的函数开始执行
B) 在C语言程序中,要调用的函数必须在main()函数中定义 C) C语言程序总是从main()函数开始执行
D) C语言程序中的main()函数必须放在程序的开始部分 3.以下属于整型常量不正确写法的为( ) 。 A) 123 B) 0123 C) 0x123 D) 1,230 4. 以下正确声明整型变量的为( ) 。 A) int 1x, 2x, 3x;
B) int 1x, int 2x, int 3x; C) int x1, x2, x3;
D) int x1, int x2, int x3; 5.设有如下定义: int x=10,y=3,z=1; 则语句printf(\的输出结果是( ) 。
文档收集自网络,仅用于个人学习 A) 1 B) 0 C) 4 D)3 6.以下程序的输出结果是( ) 。 int a=5;
float x=3.14f; a*=x*(‘E’- ‘A’);
printf(“%f\\n”,(float)a);
A) 62.000000 B) 62.800000 C) 63.000000 D) 62 文档收集自网络,仅用于个人学习 7.若变量已正确定义,要将 a 和 b 中的数进行交换,下面选项中错误的是( A) a=a+b;b=a-b;a=a-b; B) t=a, a=b, b=t; C) a=t;t=b; b=a; D) t=b; b=a; a=t;
8.设 x 为 int 型变量,则执行以下语句后,x 的值为( ) 。 int x = 10; x*=x/=x; printf(\ A)0 B)1 C)-10 D)10
1 / 7
9.下列不合法的字符常量为( ) 。 A) ‘a’ B) ‘\\n’ C) “a” D) ‘\\\\’
10.有字符串“09\\\\10\\\\01\\n”, 以下说法正确的是( ) 。
A) 字符串的长度为 10 个字符 B) 字符串在内存中占据 10 个字节 C) 字符串包含 7 个字符 D) 字符串包含 3 个字符 11.设整型变量x为5,使y不为2的表达式是( ) 。 A) y=x/2 B)y=6-(--x) C)y=x%2 D)y=x>3?2:1 12.为表示关系 x≤y≤z,应使用的 C 语言表达式是( ) 。
A) x<=y<=z B) x<=y & y<=z C) x<=y && y<=z D) x<=y || y<=z 文档收集自网络,仅用于个人学习 13.表达式 !x 与以下哪个表达式等价( ) 。 A)x==0 B)x==1 C)x!=0 D)x!=1 14.以下程序的输出结果是( ) 。 main() { int k=3; if (k=5) k++;
else k--; printf(\
A)6 B)5 C)4 D)2 15.表达式 10!=9;的值是( ) 。
A) true B) false C) 0 D) 1
16.设int x=1,y=1;表达式(!x++ || y--)的值是( ) 。 A)0 B)1 C)2 D)-1
17.设整型变量a的值为2,执行语句a+=a-=a*a;后,变量a的值是( ) 。 A)0 B)-4 C)4 D)2 18.下列说法正确的是( ) 。
A)用 for、while 和 do?while 三种循环处理同一问题,无法互相代替。 B)break 语句只能用于 switch 语句或者循环语句中。
C)用 switch 语句实现的功能,不一定能由多个 if?else 语句实现。 D)continue 语句能用于 switch 语句中。 19.以下程序的输出结果是( ) 。 char str[15]=”hello!”; printf(“%d\\n”,strlen(str));
A)15 B)6 C)16 D)7 20.下面程序段的输出结果是( ) 。 int i=2;
while(i-->=0) ; printf(“%d”,i);
A)2 B)0 C)-1 D)-2
21.设有定义语句: char s[]=“China”;则不能输出该字符串 s 的语句是( ) 。 A)puts(s) B)printf(“%s”, s)
C)putchar(s) D)int i; for(i=0;s[i]!=’\\0’;i++) printf(“%c”,s[i]); 文档收集自网络,仅用于个人学习 22.判断字符串 s1 是否等于字符串 s2,应当使用( ) 。
A)if(s1=s2) B)if(s1==s2) C)if(!strcmp(s1,s2)) D)if(strcmp(s1,s2)==1)
2 / 7
23.下面关于数组的描述,正确的是( ) 。 文档收集自网络,仅用于个人学习 A)定义数组时的长度可以用一个已经赋值的整型变量表示 B)数组中各个元素的数据类型可以不同。 C)可以直接对整型数组整体赋值。
D)在定义数组时若对全部数组元素赋初值,则可以不指定数组长度。 24.以下不能正确定义二维数组的语句是( ) 。
A)int a[2][2]={{1},{2}}; B)int a[][2]={1,2,3,4}; 文档收集自网络,仅用于个人学习 C)int a[2][2]={{1},2,3}; D)int a[2][]={{1,2},{3,4}}; 文档收集自网络,仅用于个人学习 25.在下列选项中,没有构成死循环的程序段是( ) 。 A)int i=100;
B)int k=1000; while(1) do {i=i0+1; { if(i>100) ++k; break }; }while (k>=10000); 文档收集自网络,仅用于个人学习 C)int s=36;while(s);--s; D)for(; ; );
26.不能把字符串Hello!赋给数组s的语句是( ) 。
A)char s[10]={'H','e','l','l','o','!'}; B)char s[10]; s=\文档收集自网络,仅用于个人学习 C)chars[10]; strcpy(s,\ D)char s[10]=\文档收集自网络,仅用于个人学习 27.下列关于变量作用域的叙述中,正确的是( ) 。 A) 主函数中定义的变量在整个程序范围内都是有效的。 B) 在一个程序文件中定义的所有变量都不允许重名。 C) 自定义函数中的变量在主函数中不能使用。 D) 全局变量在整个程序范围内都是有效的。 28.以下程序段的输出结果是( ) 。 char s1[100]=“12345”, s2[10]=“1234”; printf(“%d”,strlen(strcpy(s1, s2)));
A)110 B)100 C)9 D)4
29.函数调用时实参与对应形参之间的数据传递方式是( ) 。 A)双向值传递 B)由用户指定 C)单向值传递 D)先由实参传给形参,再由形参传回给实参
30.在宏定义#define PI 3.1415926 中,用宏名 PI 代替一个( ) 。 A)常量 B)单精度数 C)双精度数 D)字符串 31.执行下面的程序后,a的值是( ) 。 #define SQR(X) X*X main( )
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m); printf(\
A)10 B)1 C)9 D)0
32.若int a[5], *p=a;并在后面的语句中未改变p的值,不能表示a[1]地址的表达式为( A)a++ B)p++ C)a+1 D)p+1
33.下列关于指针定义的描述,错误的是( ) 。
A)在定义指针变量时,标识符前的“*”号表示后面的指针变量所指向的内容。 B)指针变量的类型与它所指向的变量类型一致。 C)指针变量的命名规则与标识符相同。 ) 。
3 / 7
D)指针是一种变量,该变量用来存放某个变量的地址值。 34.以下程序段的运行结果是( ) 。 int a[5]={2,4,6,8,10}, *p; p=a+1; printf(“%d”,p[2]);
A)8 B)10 C)随机值 D)2
35.若有定义 float x;,定义指针变量 p 并使其指向变量 x 的语句正确的是( ) 。 A) float *p=&x; B) float p=&x; C) float &p=&x; D) float p=*x; 文档收集自网络,仅用于个人学习 36.下面程序段的运行结果是( ) 。 char *s=“abcde”; s+=2;
printf(“%c”,*s);
A)cde B)c C)abcde D)无确定的输出结果 37.当说明一个共用体变量时,系统分配给它的内存是( ) 。
A)所有成员所需内存量的总和 B)成员中第一个成员所需内存量 C)成员中占内存最大者所需的容量 D)成员中最后一个成员所需的内存量 38.设有如下定义: struct student { int age; float score; } s1, *p; p=&s1;
对结构体成员正确的引用是( ) 。
A)student.age; B)s1->age; C)p.student.age; D)(*p).age; 文档收集自网络,仅用于个人学习 39.C 语言中对文件的存取是按( )为单位的。 A)字节 B)字符串 C)位 D)文件总容量
40.要打开一个已存在的用于读写的非空文本文件“score.txt” ,正确的语句是( )A)fp=fopen(\ B)fp=fopen(\文档收集自网络,仅用于个人学习 C)fp=fopen(\ D)fp=fopen(\文档收集自网络,仅用于个人学习 二、阅读下面各程序,写出运行结果(每小题 5 分,共 30 分) 1.#include
main() { int i; for (i=0;i<6;i++) { switch(i%3) 2.
{ case 0:printf(“%d”,i); #include
4 / 7
。 for(i=1;i<4;i++) main()
{ s=s+a[i]; { int i; printf(\ for (i=0;i<4;i++) } printf(”%d ”,fun(i)); } } 5.#include
1.程序的三种基本结构是顺序结构、选择结构和 【1】 。 2.C语言中正确的标识符是由 【2】 组成的。 3.在C语言程序中,对文件进行操作首先要 【3】 ,在使用结束之后要对文件实行 【4】 操作, 防止文件中信息的丢失。 文档收集自网络,仅用于个人学习 4.用操作符 【5】 可以求出操作数所需内存的字节数。 5.设有int x = 6>5?4>3?2:1:0;,变量x的值是 【6】 。 6.以下程序用于求出数组 a 中最小元素及其下标: #include
{ int a[100], i ,min, p; for(i=0;i<=99;i++)
5 / 7