青岛大学2018秋《C语言程序设计》期末模拟练习-第I部分(70分钟)

青岛大学2018秋《C语言程序设计》期末模拟练习-第I部分(70分钟)
开始时间 1/1/2016, 12:00:00 AM
结束时间 1/18/2038, 12:00:00 AM
答题时长 70分钟
考生 小旺
总分 60

判断题 总分:20
1-1

下面这段程序中的循环将是无限循环,程序将始终运行、无法结束(假设运行该程序的计算机系统永远不会发生意外情况而崩溃或断电)。 (2分)

T         F

#include "stdio.h"
int main(){
    for(long num=1; num>0; num++)
        printf("%ld\n", num);
    return 0;
}
1-2

假设某段C语言程序中定义了两个变量ab,并且两个变量都不为0,则表达式 a / b的值必不为0。 (2分)

T         F

1-3

假设有定义如下: int array[5][10]; 则该语句定义了一个数组array。其中array的类型是指针的指针(二级指针),即: int **(2分)

T         F

1-4

下面这段代码,打印输出的结果是133(2分)

T         F

#include 
int main(){
    int a,b;
    a = 012;
    b = 123;
    printf("%d", a+b);
    return 0;
}
1-5

下面这段代码是不规范的,程序可能运行出错,原因是:通过指针p访问局部变量tmp,而tmp的空间在函数hoho运行结束后已经释放。 (2分)

T         F

int* hoho(int n){
    int tmp;
    tmp += n;
    return &tmp;
}
/* 此处省略若干行代码 */
int main(){
    /* 此处省略若干行代码 */
    int *p;
    p = hoho(3);
    /* 此处省略若干行代码,且这些代码不会修改p的值 */
    *p = 6;
    return 0;
}

1-6

关于C语言指针的运算:指针只有加减操作,没有乘除操作。指针可以加常数、减常数;相同类型的指针可以相减,不可以相加。 (2分)

T         F

1-7

sizeof(int)可计算整型所占的内存字节数,但是sizeof( )并不是一个函数,而是一个运算符(操作符,operator)。 (2分)

T         F

1-8

C语言中定义的全局变量存放在栈区,局部变量存放在堆区。 (2分)

T         F

1-9

C语言中,%为求模(求余)双目运算符,它的两个运算数(操作数)都必须是整型(如intshortchar等),不能是浮点型(如doublefloat)。 (2分)

T         F

1-10

下面这段代码,用%.2f格式打印输出int型变量,不会进行类型转换,打印输出的结果不会是2019.00(2分)

T         F

#include 
int main(){
    int k=2019;
    printf("%.2f", k);
    return 0;
}
单选题 总分:20
2-1

以下代码,语法正确的是: (2分)

  1. while ( ) ;
  2. for( ) ;
  3. do ; while(1);
  4. do while(1);
2-2

以下名字,不能作为C语言标识符的是: (2分)

  1. ThisIsQingdaoUniversity
  2. $$
  3. monkey~1
  4. _
2-3

执行以下程序,打印输出的内容是: (2分)

#include 
int x=5;
void incx( ){
    x++;
}
int main( ){
    int x=3;
    incx( );
    printf("%d\n", x);
    return 0;
}
  1. 3
  2. 4
  3. 5
  4. 6
2-4

定义变量 int a;,则表达式 a = 3, 5;执行过后,a的值和表达式的值分别是: (2分)

  1. 3 , 5
  2. 5 , 3
  3. 3 , 3
  4. 5 , 5
2-5

假设有变量定义如下 int a, k; 则以下哪条语句不能确保将变量k的值变为0: (2分)

  1. k = a + ~a + 1;
  2. k ^= k;
  3. k = (k && !a) || (!k && a);
  4. k = k && !k;
2-6

定义int score = 75; 则表达式 80 < score < 90 的值是: (2分)

  1. 1
  2. 0
  3. true
  4. false
2-7

变量abdouble型,以下判断ab数值相等的最恰当的写法是: (2分)

  1. a == b
  2. a = b
  3. (a-b>=-1e-6) && (a-b<=1e-6)
  4. a - b == 0
2-8

定义 char a; 则以下赋值语句不恰当的是: (2分)

  1. a = 65;
  2. a = "A";
  3. a = '\65';
  4. a = 6 + 'A';
2-9

执行如下程序段,打印输出的内容是: (2分)

#include 
void fun (int c, int *d) {
    c++;
    (*d)++;
}
int main ( ){
    int a=1, b=2;
    fun(a, &b);
    printf("%d, %d", a, b);
    return 0;
}
  1. 1, 3
  2. 2, 1
  3. 1, 2
  4. 2, 2
2-10

对于定义char str[] = "abc\0def"; (注:其中0为数字零),求字符串str的长度len(即调用标准库函数strlen:len = strlen(str))和数组str的大小size(即size = sizeof(str)),len和size分别是: (2分)

  1. 7,8
  2. 7,7
  3. 3,8
  4. 3,7
填空题 总分:10
4-1

执行以下程序,

#include 
int main( ){
    int array[10]={2, 12, 24, 36, 48, 49, 2333, 6666, 23333, 99999};
    int key=2333, flag=0, low=0, m, h=9, times=0;
    while(low <= h){
        m = (low + h) / 2;
        times++;
        if(array[m] == key) {
            printf("Found-%d-%d", m, times);
            flag = 1;
            break;
        }
        else if(array[m] > key) h = m - 1;
        else low = m + 1;
    }
    if(flag == 0) printf("Not Found!");
    return 0;
}

程序运行结果(即:在屏幕上打印的内容)是_____________(5分)
(注意:要严格按照程序打印的格式填写答案,包括字母的大小写、空格的多少、连字符-和叹号!的格式等,不得随意增加引号、空格等无关字符,否则不得分。例如printf(“hello World”);打印的内容就是hello World,而不是"hello World"。为防止格式书写错误,建议直接从上面的代码中复制部分相关内容。)

4-2

执行以下程序:

#include 
int main( ){
    int score, bonus;
    score = 60;
    bonus = 3;
    switch(bonus){
    case 1:
        score += 10;
    case 2:
        score += 20;
    case 3:
        score += 30;
    default:
        score -= 9;
    }
    printf("%d", score);
    return 0;
}

程序运行结果(即:在屏幕上打印的内容)是_____________(3分) 。 (注意:要严格按照程序打印的格式填写答案,不得随意增加引号、空格等无关字符,否则不得分。例如printf("hello World");打印的内容就是hello World,而不是"hello World"。)

4-3

执行以下程序:

#include 
int main( ){
    int num, r;
    num = 16;
    r = num % 2;
    if(r=0) printf("even");
    else printf("odd");
    return 0;
}

程序运行结果(即:在屏幕上打印的内容)是(_____________2分) 。 (注意:要严格按照程序打印的格式填写答案,注意字母的大小写,不得随意增加引号、空格等无关字符,否则不得分。例如printf("hello World");打印的内容就是hello World,而不是"hello World"

5-1

下面这段程序打印输入的整数num的最高位数字(例如,输入321,则打印3;输入-678,则打印6)。请填写空缺的代码。

#include 
int main(){
    int num;
    scanf("%d", &num);
    int digit=0;
    if( num < 0)  _____________(1分) ;
    while( _____________(1分) ){
        _____________(1分);
        num = _____________(1分) ;
    }
    printf("%d\n", digit);
    return 0;
}
5-2

数学家希尔伯特在1900年国际数学家大会的报告上提出一个“孪生素数猜想”,即:
存在无穷多个素数p,使得p + 2是素数。p和p+2这一对差为2的素数,被称为“孪生素数”。
看起来,这个猜想是成立的,我们总能找到很多对孪生素数,例如:3和5, 5和7, 11和13…… 这一猜想至今还未被证明。
下面这段程序对于输入的整数n(n<100000),寻找大于n最小的一对孪生素数pq(q=p+2,而且你应当相信,在整型变量的取值范围内一定可以找到这对pq)。

int isPrime(int num){
    for(int i=2; i<=num/2; i++)
        if( _____________(2分) ) return 0;
    	return 1;
}
int main(){
    int n;
    for(int i=0; i<6; i++) {  // 总共寻找6次
        scanf("%d",&n);   //输入一个整数n
        if( _____________(2分)) printf("3 5\n");
        else{
            for(n++;  _____________(2分); n++);   //注意看清楚,此行代码中所要填的空之后带有分号
            printf("%d %d\n",n, n+2);
        }
    }
    return 0;
}

你可能感兴趣的:(c语言,c语言)