青島大學2018秋《C語言程序設計》期末模擬練習-第I部分(70分鐘)

青島大學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;
}
發佈了19 篇原創文章 · 獲贊 12 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章