淮 海 工 学 院
10 11 学年 第 2 学期 C语言程序设计 期中考试试卷
题号
总分
得分
单项选择题答题表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
一、单项选择题〔共20题,每题1分,共20分,答案填写在单项选择题答题表中〕
1.以下叙述中正确的是〔 〕.
A)C 程序的基本组成单位是语句
B)C 程序中的每一行只能写一条语句
C)简单C 语句必须以分号结束
D)C 语句必须在一行内写完在
2.一个C程序是由____________.
A)一个主程序和若干个子程序构成
B)一个或多个函数构成
C)若干过程组成
D)若干子程序组成
3.以下选项中正确的定义语句是____________.
A)double a; b;
B)double a=b=7;
C)double a=7, b=7;
D)double, a, b;
4.计算机能直接执行的程序是〔 〕.
A)C源程序
B)目标程序
C)汇编程序
D)可执行程序
5.下列符号可以作为变量名的是____________.
A)+a
B)*p
C)_DAY
D)next  day
6.设c是字符变量,则以下表达式正确的是____________.
A)c=666
B)c='c'
C)c="c"
D)c="abcd"
7.以下说法正确的是____________.
A)输入项可以为一个实型常量,如scanf<"%f", 3.5>
B)只有格式控制没有输入项也能进行正确输入,如scanf<"%d">
C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf<%4.2f", &f>
D)当输入数据时,必须指定变量的地址,如scanf<"%f", &f>
8.若a, b, c均定义为整型,要给它们输入数据,正确的输入语句是____________.
A)read<a, b, c>;
B)scanf<"%d%d%d", a, b, c>;
C)scanf<"%D%D%D", a, b, c>;
D)scanf<%d%d%d", &a, &b, &c>;
9.若有if <w> x; else ++y; 则其中与w 等价的表达式是____________.
A)w == l
B)w == 0
C)w != l
D)w != 0
10.为了避免嵌套的if-else语句的二义性,C语言规定else总是与____________组成配对关系.
A)缩排位置相同的if
B)在其之前未配对的if
C)在其之前最近的未配对的if
D)同一行上的if
11.选择出合法的if语句<int x, a, b, c;>____________.
A)if<a == b> x++;
B)if <a =< b> x++;
C)if<a <> b> x++;
D)if <a=>b> x++;
12.若变量已正确定义为int 型,要通过语句scanf<"%d, %d, %d", &a, &b, &c>;给a 赋值1、给b 赋值2、给c 赋值3,以下输入形式中错误的是〔凵 代表一个空格符〕〔 〕.
A)凵凵凵1,2,3<回车>
B)1凵2凵3<回车>
C)1, 凵凵凵2, 凵凵凵3<回车>
D)1,2,3<回车>
13.C语言中while和do-while循环的主要区别是____________.
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
14.以下关于数组的描述正确的是____________.
A)数组的大小是固定的,但可以有不同类型的数组元素
B)数组的大小是可变的,但所有数组元素的类型必须相同
C)数组的大小是固定的,所有数组元素的类型必须相同
D)数组的大小是可变的,可以有不同类型的数组元素
15.以下关于字符数组的描述中错误的是____________
A)字符数组可以存放字符串
B)字符数组中的字符串可以整体输入和输出
C)可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
16.若有定义语句:char s[10]="123\n\0\45670";,则strlen<s>的值是__________.
A)9
B)7
C)3
D)4
17.在C语言程序中,下列叙述正确的是____________.
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义不可以嵌套,但函数的调用可以嵌套
C)函数的定义和调用都可以嵌套
D)函数的定义和调用均不可以嵌套
18.以下叙述中错误的是________.
A)用户定义的函数中可以没有return 语句
B)用户定义的函数中可以有多个return 语句,以便可以调用一次返回多个函数值
C)用户定义的函数中若没有return 语句,则应当定义函数为void 类型
D)函数的return 语句中可以没有表达式
19.在声明一个结构体类型时系统分配给它的存储空间是____________.
A)该结构体变量中第一个成员所需存储空间
B)该结构体变量中最后一个成员所需存储空间
C)该结构体变量中所有成员所需存储空间的总和
D)结构体类型本身并不占用存储空间,即系统并不给结构体类型分配存储空间
20.已知函数调用f<1, 'k' + 5, g<1,2,3>>,则函数f定义中的形参个数为_________个.
A)2
B)3
C)4
D)5
二、填空题〔共15空,每空1分,共15分
1.C编译器的功能是___*.c  -- *.obj_________.
2.表达式9 / 5 + 4的值是____5________.表达式3 * <4 + 5>的值是___27_________.
3.判断整型变量n是否是偶数的逻辑表达式是_n%2==0__________.
4.程序的三种基本控制结构分别是_顺序__、_分支__和_循环_.
5.C语言中的循环控制语句有while、do…while和___for_______语句三种.
6.计算数组的存储空间可以使用sizeof运算符,计算数组a的存储空间的表达式是__sizeof<a>__________.计算数组a的元素个数的表达式是____sizeof<a>/sizeof<a[0]>___.
7.在函数中可以利用__return_语句返回函数计算结果
8.若有定义int a[] = {1,2,3,4,5,6},则数组a的大小为____6___,引用数组a的最后一个元素的表达式是__a[5]_________.
9.C语言使用关键字__break___定义立即结束本次循环体的执行.
10.读取一行文本的字符串处理函数是_gets<>/scanf<"%s", >_.
三、程序分析题〔共5题,每题5分,共25分
1.写出以下程序的运行结果〔假定程序已包含正确的头文件〕.
#include  <stdio.h>
main<>
{
    int x=1,y=0;
    if<!x>
        y++;
    else if<x==0>
        if <x> y+=2;
            else y+=3;
    printf<"%d\n",y>;
}
y=0
2.写出以下程序的运行结果〔假定程序已包含正确的头文件〕.
main<> {
    int n = 1, fact = 1;
    while <n <= 5> {
fact = fact * n;
++n;
}
printf<"%d\n", fact>;
}
5X4X3X2X1=120
3.写出以下程序的运行结果〔假定程序已包含正确的头文件〕.
main<> {
    int a[10] = {1, 2, 3, 4, 5};
    printf<"%d\n", a[4] + a[9]>;
}
5+0=5
4.写出以下程序的运行结果〔假定程序已包含正确的头文件〕.
#include <stdio.h>
int fun<>
{
    static int x=1;
    x*=2;
    return x;
}
main<>
{
    int i,s=1;
    for<i=1;i<=3;i++> s*=fun<>;
    printf<"%d\n",s>;
}
64
5.写出以下程序的运行结果〔假定程序已包含正确的头文件〕.
int fun<int n> {
    int m;
    m = 4 * n;
    return m;
}
main<> {
    int k = 50, s;
    s = fun<k>;
    printf<"%d\n", s>;
}
200
四、程序填空题〔共10空,每空2分,共20分〕
1.下面的程序计算整数n的因子的和,请填空.
#include  <stdio.h>
void main<> {
    int i, n, sum;
printf<"n = ">;
    scanf<"%d", _&n___>;    /* 读取整数n */
    sum = __0___________;
    for<i = 1; i <= n; ++i>
        if < n % i == 0>
            _sum +=i__________________;
    printf<"sum = %d\n, __sum____>;
}
2.下面的程序中定义的函数fun计算数组元素的最大值,请填空
int fun<int b[10]> {
    int max, i;
    max = __b[0]_;   /* b[0] ~b[9] 都可以的 */
    for <i = 1; i < 10; __i++___>
        if <__b[i]>max__> max = b[i];   /* max <b[I] */
    return __maxc语言数组最大值最小值___;
}
void main<> {
    int m, a[10] = {56, 32, 78, 99, 12, 43, 31, 67, 90, 17};
    m = fun<a>;    /* 调用函数fun */
    printf<"Max = %d\n", m>;
}
五、程序设计题<共2小题,共20分>
1.编写一个程序,输入一个整数n,输出大于n的最小的素数.例如输入12,程序应输出13;若输入24,程序应输出29.<本题8分>
#include <stdio.h>
#Include <math.h>
int isPrime<int n>;
int main<void>
{
    int n;
    int i;
    printf<"Input n: ">;
    scanf<"%d", &n>;
for<i=n+1; ;i++>
    if<isPrime<i>>
{
printf<"%d\n", i>
break;;
    }
    return 0;
}
int isPrime<int n>
{
    int i;
    for<i=2; I<sqrt<n>; i++>

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