青岛大学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分)

       

#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分)

       

1-3

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

       

1-4

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

       

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

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

       

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分)

       

1-7

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

       

1-8

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

       

1-9

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

       

1-10

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

       

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

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

2-2

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

2-3

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

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

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

2-5

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

2-6

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

2-7

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

2-8

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

2-9

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

#include <stdio.h>
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;
}
2-10

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

填空题 总分:10
4-1

执行以下程序,

#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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;
}

猜你喜欢

转载自blog.csdn.net/weixin_42403632/article/details/104122252