下面這段程序中的循環將是無限循環,程序將始終運行、無法結束(假設運行該程序的計算機系統永遠不會發生意外情況而崩潰或斷電)。 (2分)
#include "stdio.h"
int main(){
for(long num=1; num>0; num++)
printf("%ld\n", num);
return 0;
}
假設某段C語言程序中定義了兩個變量a
、b
,並且兩個變量都不爲0,則表達式 a / b
的值必不爲0。 (2分)
假設有定義如下: int array[5][10];
則該語句定義了一個數組array。其中array的類型是指針的指針(二級指針),即: int **
。 (2分)
下面這段代碼,打印輸出的結果是133
。 (2分)
#include <stdio.h>
int main(){
int a,b;
a = 012;
b = 123;
printf("%d", a+b);
return 0;
}
下面這段代碼是不規範的,程序可能運行出錯,原因是:通過指針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;
}
關於C語言指針的運算:指針只有加減操作,沒有乘除操作。指針可以加常數、減常數;相同類型的指針可以相減,不可以相加。 (2分)
sizeof(int)
可計算整型所佔的內存字節數,但是sizeof( )
並不是一個函數,而是一個運算符(操作符,operator)。 (2分)
C語言中定義的全局變量存放在棧區,局部變量存放在堆區。 (2分)
C語言中,%
爲求模(求餘)雙目運算符,它的兩個運算數(操作數)都必須是整型(如int
、short
、char
等),不能是浮點型(如double
、float
)。 (2分)
下面這段代碼,用%.2f
格式打印輸出int
型變量,不會進行類型轉換,打印輸出的結果不會是2019.00
。 (2分)
#include <stdio.h>
int main(){
int k=2019;
printf("%.2f", k);
return 0;
}
以下代碼,語法正確的是: (2分)
以下名字,不能作爲C語言標識符的是: (2分)
執行以下程序,打印輸出的內容是: (2分)
#include <stdio.h>
int x=5;
void incx( ){
x++;
}
int main( ){
int x=3;
incx( );
printf("%d\n", x);
return 0;
}
定義變量 int a;
,則表達式 a = 3, 5;
執行過後,a
的值和表達式的值分別是: (2分)
假設有變量定義如下 int a, k;
則以下哪條語句不能確保將變量k
的值變爲0: (2分)
定義int score = 75;
則表達式 80 < score < 90
的值是: (2分)
變量a
和b
爲double
型,以下判斷a
與b
數值相等的最恰當的寫法是: (2分)
定義 char a;
則以下賦值語句不恰當的是: (2分)
執行如下程序段,打印輸出的內容是: (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;
}
對於定義char str[] = "abc\0def";
(注:其中0
爲數字零),求字符串str的長度len(即調用標準庫函數strlen:len = strlen(str)
)和數組str的大小size(即size = sizeof(str)
),len和size分別是: (2分)
執行以下程序,
#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"
。爲防止格式書寫錯誤,建議直接從上面的代碼中複製部分相關內容。)
執行以下程序:
#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"
。)
執行以下程序:
#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"
)
下面這段程序打印輸入的整數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;
}
數學家希爾伯特在1900年國際數學家大會的報告上提出一個“孿生素數猜想”,即:
存在無窮多個素數p,使得p + 2是素數。p和p+2這一對差爲2的素數,被稱爲“孿生素數”。
看起來,這個猜想是成立的,我們總能找到很多對孿生素數,例如:3和5, 5和7, 11和13…… 這一猜想至今還未被證明。
下面這段程序對於輸入的整數n
(n<100000),尋找大於n的最小的一對孿生素數p
和q
(q=p+2,而且你應當相信,在整型變量的取值範圍內一定可以找到這對p
和q
)。
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;
}