C语言程序设计期末考试
考试说明:
1、本试卷包含四大题,共35题,满分100分,考试时间120分钟。
2、考试形式为闭卷,禁止查阅任何资料或运行代码。
3、 答题直接在文档中作答,答题结束后,请将答卷发到助教的邮箱(1047231474@qq)即可。请自觉遵守规则,在规定的答题时间内完成答题
一、填空题(24分)
本大题共12题。请将答案填入空格中。每题2分,每题2个空格,每个空格填对得1分,填错或不填得0分。
1、定义长整型变量使用关键词__________。定义长整型常量时,需要加上后缀__________。
2、定义八进制常量需要加上前缀__________,定义十六进制常量需要加上前缀__________。
3、使用函数__________可以获得字符串的长度(只需要写出函数名),该函数的参数类型为__________。
第4题和第5题,根据题目给出的字符串填写字符串长度函数和sizeof分别得到的值。
4、定义字符串char *s1 = "0123456789",使用字符串长度函数求字符串s1的长度,结果为__________,sizeof(s1)的值为__________。
5、定义字符串char s2[100] = "0123456789",使用字符串长度函数求字符串s2的长度,结果为__________,sizeof(s2)的值为__________。
6、定义结构体和联合体如下:
struct S {
    int i;
    char c;
} a;
union U {
    int i;
    char c;
} b;
则sizeof(a)的值为__________,sizeof(b)的值为__________。
第7题到第12题,假设有一个整型数组E,整型下标i,类型包括整型(int)和整型指针(int *)两种,xE表示E处的地址,M[xE]表示E处地址对应的值。
已知对于表达式E,类型为int *,值为xE。给出下列表达式,填写类型和值。
7、表达式为E[0],类型为__________,值为__________。
8、表达式为E[i],类型为__________,值为__________。
9、表达式为&E[2],类型为__________,值为__________。
10、表达式为E+i-1,类型为__________,值为__________。
11、表达式为*(E+i-3),类型为__________,值为__________。
12、表达式为&E[i]-E,类型为__________,值为__________。
二、单项选择题(10分)
本大题共10题。每道题的四个选项中只有一个是正确的。选对得1分,不选、错选或多选得0分。
13、声明浮点型常量时,如果未加后缀,默认声明成__________类型。      (    )
A、float    B、short double    C、double    D、long double
14、下列运算符中,优先级最高的是__________。                        (    )
A、->        B、<<        C、|        D、+
15、在嵌套if语句中,else语句与____________________匹配。          (    )
A、之前的第一个if
B、之前的最后一个if
C、之前最远的没有else配对的if
D、最近的前一个没有else配对的if
16、下列关于三种循环的说法,错误的是____________________。          (    )
A、循环体内只有一句语句时,可以省略花括号
B、只有while和do-while循环可以实现死循环,for循环不能实现死循环
C、在do-while循环的while语句后面需要加分号运算符优先级按从高到低排列
D、实际应用中,do-while循环使用得最少
17、定义函数时,如果省略返回值类型,默认返回值类型是__________。    (    )
A、void        B、char        C、int        D、double
18、关于fopen函数,下列说法中正确的是____________________。        (    )
A、该函数无返回值
B、参数mode的值为a表示只写打开
C、参数mode的值为r+表示只读打开
D、参数mode的末尾加入“t”表示以文本方式打开
19、关于fgetc和fgetchar函数,下列说法中错误的是________________。 (    )
A、两个函数中的一个无返回值
B、两个函数中的一个无参数
C、fgetc函数从流文件中读取字符
D、fgetchar函数从标准输入设备输入一个字符
20、关于fputc和fputchar函数,下列说法中错误的是________________。 (    )
A、两个函数的返回值类型相同
B、两个函数的参数个数相同
C、fputc将一个字符打印到标准输出流上
D、fputchar将一个字符写到流文件中
21、关于fseek函数,下列说法中错误的是____________________。        (    )
A、该函数的功能是移动流文件的文件指针
B、该函数无返回值
C、该函数的第二个参数是长整型
D、该函数的第三个参数只能取0、1或2
22、关于下列函数的说法中错误的是____________________。              (    )
A、getc函数从流文件中读入一个字符
B、getchar函数从标准输入设备中读入一个字符
C、getche函数从标准输入设备中读入一个字符,字符不回显
D、gets函数从标准输入设备中读入一串字符
三、不定项选择题(16分)
本大题共8题。每道题的五个选项中至少有一个是正确的。全部选对得2分,不选、错选、少选或多选得0分。
23、下列各项中,是C语言关键词的有__________。                (          )
A、byte    B、constant    C、integer    D、typedef    E、unsign
24、关于函数返回值,下列说法中正确的是____________________。  (          )
A、非void类型函数返回函数值的格式是return expression;
B、void类型函数中可以有return语句
C、不可以定义嵌套函数
D、函数中声明的自动变量只能在该函数中使用,不能被其他函数使用
E、函数中执行到return语句则终止执行该函数,不会继续执行函数中剩余语句
25、关于静态声明,下列说法中错误的是____________________。    (          )
A、外部的静态声明只能用于变量
B、静态声明可以达到隐藏外部对象的目的
C、静态声明的外部变量只有其所在的源文件中的函数可以访问
D、静态声明的内部变量一直存在并占据存储空间
E、函数中静态声明的内部变量作用域不仅限于该函数
26、下列一维数组初始化语句中,正确的是____________________。  (          )
A、int arr = {1, 2, 3, 4, 5};
B、int arr[] = {1, 2, 3, 4, 5};
C、int arr[6] = {1, 2, 3};
D、int n = 5; char arr[n] = {'a', 'b', 'c', 'd', 'e'};
E、int arr[5] = {0};
27、下列二维数组初始化语句中,正确的是____________________。  (          )
A、int i[2][3] = {{1, 2, 3}, {4, 5, 6}};
B、int i[2][] = {{1, 2, 3, 4, 5, 6}};
C、float f[][3];
D、char c[][3] = {"a", "2"};
E、char c[][3] = {'abc', '2'};
28、已知ip是int *类型,下列说法中正确的是________________。 (          )
A、如果ip指向整型变量x,则*ip = *ip + 10将x的值加10
B、一元运算符*和&优先级高于二元算术运算符
C、对于语句y = *ip + 1,y是int类型
D、++*ip和*ip++都是将ip指向的变量值加1
E、如果iq是int *类型,则iq = ip使得iq指向ip所指的地址
29、下列关于函数指针的说法中正确的是____________________。    (          )
A、如果声明了函数指针int (*fp)(int, int);,则fp的类型是int *
B、void *可以转换成任何类型的指针,任何类型的指针可以转换成void *
C、函数指针指向的函数返回值也是指针类型
D、如果函数指针名为fp,则声明和调用函数指针时,(*fp)的括号不可省略
E、函数指针的实质是返回值为指针类型的函数
30、下列关于结构体和联合体的说法中正确的是________________。  (          )
A、结构体表示法都可以转换成数组表示法
B、对结构体和联合体初始化时都可以同时初始化所有成员
C、声明结构体类型或联合体类型时,关键词struct或union不可省略
D、对结构体的一个成员赋值时,不会影响别的成员的值
E、对联合体的一个成员赋值时,可能覆盖别的成员的值
四、问答与编程题(50分)
本大题共5题,根据题目要求回答问题或写代码。
31、实现一个函数,该函数带一个整型参数,函数输出该参数的十进制、八进制、十六进制表示法的值。函数框架如下:
void print_radix(int i)
{
    printf(________________________________________);
}
例如,调用该函数时,参数值为55,则输出如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。