(21)以下程序的輸出結果是________。
main()
{ int a=-l,b=l,k;
if((++a<0)&&!(b--<=0))
printf("%d %d\n",a,b);
else
printf("%d %d\n”,b,a);
}
A)-l l B)0 1
C)1 0 D)0 0
(21)C
知識點:if條件的判斷
評析:邏輯運算符的優(yōu)先次序如下:!(非)→&&(與)→||(或),但本題需特別注意的是短路的概念:對于&&運算符,其兩邊表達式的值只要有一邊為假,則整個與運算表達式的值即為假,系統(tǒng)在執(zhí)行時,先運算&&左邊的表達式,若為假,則系統(tǒng)不會再判斷&&運算符右邊的表達式了,直接運用短路原理得整個與運算表達式的值為0。由于++a是先運算后使用,b--是先使用后運算。所以本題在執(zhí)行++a后,a值為0,不滿足條件,所以a為l,根據短路原理,b仍為0,接下去執(zhí)行else語句,輸出l 0。
(22)以下選項中,能定義s為合法的結構體變量的是________。
A) typedef struct abc
{ double a;
char b[10];
}s;
B ) struct
{ double a;
char b[10];
}s;
C) struct ABC
{ double a;
char b[10];
}
ABC s;
D ) typedef ABC
{ double a;
char b[10];
}
ABC s:
(22)B
知識點:結構體變量的定義
評析:定義一個結構體類型的變量,可采用三種方法:
①先定義結構體類型,再定義變量名;
②在定義類型的同時定義變量;
③直接定義結構類型變量,即不出現(xiàn)結構體名。
選項B符合第三種定義方法。
(23)請讀程序:
#include<stdio.h>
#include<string.h>
main()
{
char*sl="AbCdEf",*s2="aB";
s1++;s2++;
printf("%d\n",strcmp(s1,s2));
}
上面程序的輸出結果是_______。
A)正數 B)負數 C)零 D)不確定的值
(23)A
知識點:字符串比較函數strcmp()的應用
評析:strcmp(X1,X2)是串比較函數,當X1>X2時返回值為正數,當X1<X2時返回值為負數,當XI=X2時返回值為零。
本題中“sl”、“s2”分別表示這兩個串中第一個字符的地址,s1++和s2++是將指針指向串的第二個字符,則*sl為“bCdEf',,*s2為“B”。而在字符串比較中。大小的確定是由各個字符串相應位置字符的ASCII碼值的大小決定的!癇”的ASCII碼值為66,”b”的ASCII碼值為98,所以sl>s2,返回值為正數。
(24)請讀程序:
#include<stdio.h>
func(int a,int b){
int c:
c=a+b:
return C:
}
main(){
int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}
上面程序的輸出結果是________。
A)11 B)20 C)2l D)31
(24)C
知識點:自增、自減運算
評析:函數func()的作用是返回兩個形參的和,第一個形參是x、y分別自減和自增后的和,其中(x--,y++,x+y)是一個逗號表達式,它的值應該等于x+y,所以整個表達式(x--,y++,x+y)的值為13,而第二個形參的值為8(根據語法規(guī)則,應當先使用,后自增),所以fune()的返回值為13+8=21。
(25)請讀程序:
#include<stdio.h>
main()
{
int a,b;
for(a=1,b=l;a<=100;a++){
if(b>=20)break;
if(b%3==1){b+=3;continue;}
b_=5:
}
printf("%d\n",a);
}
上面程序的輸出結果是________。
A)7 B)8 C)9 D)10
(25)B
知識點:break語句和continue語句
評析:break語句的作用是用于跳出循環(huán)體,繼續(xù)執(zhí)行循環(huán)體下面的語句;而continue語句的作用是用于跳出本次循環(huán),即跳過循環(huán)體中尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循環(huán)的判定!埃ァ笔乔笥噙\算符,執(zhí)行第一次循環(huán)時,條件(b%3==1)為真,b=4,繼續(xù)下一次循環(huán),如此反復,當b=22時,條件(b>=20)為假,跳出循環(huán),此時共循環(huán)8次,即a=8。
(26)請讀程序片段(字符串內沒有空格字符):
printf("%d\n",strlen("ATS\n0l2\l\\"));
上面程序片段的輸出結果是_______。
A)l1 B)10 C)9 D)8
(26)C
知識點:字符串的長度
評析:這個語句的目的是輸出“ATS\n012\1\\”這個串的長度,在串中“\\”代表一個“\”,為了和printf()函數中的轉義字符區(qū)分開來,在語法上使用了兩個反斜杠代替了一個反斜杠,所以它僅僅為一個字符,而”\l”代表數字l,也占一個字符,“\n”是回車換行符,也占一個字符,加上A、T、s、0、1、2,一共是9個字符。
(27)請選出可用作C語言用戶標識符的一組標識符_______。
A)Void B)a3_b3 C)For D)2a
define _123 _abc DO
WORD IF case sizeof
(27)B
知識點:C語言的標識符
評析:c語言規(guī)定標識符只能由字母、數字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。
選項A中的void和define都和c語言的關鍵字重名,不合法;
選項C中的case和c語言的關鍵字重名,不合法;
選項D中的2a是數字打頭而且sizeof和c語言的關鍵字重名,不合法。
(28)請選出以下程序的輸出結果_______。
#include<stdio_h>
sub(int*s,int y)
{ static int t=3;
y=s[t];t--;
}
main()
{ int a[]={1,2,3,4},i,x=0;
for(i=0;i<4;i++){
sub(a,x);printf("%d",x);}
printf("\n");
}
A)1234 B)432l C)0000 D)4444
(28)C
知識點:函數的形參和實參的關系
評析:x作為函數sub()的實參時,函數對x值的改變沒有返回主函數,并不能使得x的值變化,所以在打印時,x的值是始終不變的,即為O。
(29)若有以下說明和語句,請選出哪個是對c數組元素的正確引用_______。
int c[4][5],(*cp)[5];
cp=c;
A)cp+l B)*(cp+3) C)*(cp+1)+3 D)*(*cp+2)
(29)D
知識點:數組元素的引用
評析:cp=c這個語句是將數組第0行的地址賦給了cp。cp+l使指針指向二維數組c的第一行;*(cp+3)是數組c的第三行的第0列的地址值;+(cp+1)+3是數組c的第一行第三列的地址值。
(30)設有以下語句
char a=3,b=6,c;
c=a^b<<2:
則c的二進制值是_______。
A)00011011 B)00010100 C)000ll 100 D)00011000
(30)A
知識點:位運算
評析: “<<”是c語言中規(guī)定的左移運算符,例如,a=a<<2,這個語句即是將a的二進制數左移兩位,左移一位相當于該數乘以2,左移兩位相當于該數乘以2的2次方;,^是異或運算符,所以,c的二進制值應為0001101l。
(31)設有
static char str[]="Beijing";
則執(zhí)行
printf("%d\n",strlen(strcpy(str, "China")));
后的輸出結果為_______。
A)5 B)7 C)12 D)14
(31)A
知識點:字符串的長度
評析:在執(zhí)行printf()函數前,數組str的長度是7,但是當使用strcpy()函數將新的值賦給str后,strlen()函數返回的應當是現(xiàn)在的str字符串的字符個數,即是5。
(32)以下程序的輸出結果是_______。
#include<stdio.h>
main()
{ int i;
for(i=1;i<5;i++){
if(i%2)printf("*");
else continue;
printf("#");
}
print"$\n");
}
A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$
(32)C
知識點:if語句的判斷
評析:當i不可以整除2時打印”*”,然后打印“#”,不能整除2則執(zhí)行continue,跳過printf(“#”);語句,結束本次循環(huán),返回到循環(huán)的起始點。當循環(huán)結束后,打印“$”。
(33)有以下程序
#include<stdio.h>
main()
{ int c;
while((c=getchar())!=‘\n’){
switch(C-‘2’){
case O:case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c十2);break;}
}
}
從第一列開始輸入以下數據,↙代表一個回車符。
2473↙
程序的輸出結果是_______。
A)668977 B)668966 C)66778777 D)6688766
(33)A
知識點:switch()語句
評析:getchar()函數是從鍵盤接受一個字符輸入;當用戶鍵入的字符不是回車符時,會進入一個多分支選擇語句,根據表達式c-‘2’的值進行分支選擇:putchar()是在屏幕上打印一個字符,最后的結果應當為668977。
(34)以下程序的輸出結果是________。
main()
{ int w=5;fun(w);printf("\n");}
fun(int k)
{ if(k>O) fun(k_1);
printf("%d",k);
}
A)5 4 3 2 l B)0 1 2 3 4 5
C)1 2 3 4 5 D)5 4 3 2 1 0
(34)B
知識點:函數的遞歸調用
評析:函數的遞歸調用就是在調用一個函數的過程中又出現(xiàn)直接或間接地調用該函數本身。fun函數共被調用6次,即fun(5)、fun(4)、fun(3)、fun(2)、fun(1)、fun(O)。其中fun(5)是main函數調用的,其余是在fun函數中調用的。
(35)若fp是指向某文件的指針,且已讀到此文件的末尾,則函數feof(f1))的返回值是_________ 。
A)EOF B)0 C)非零值 D)NULL
(35)C
知識點:文件結束符的返回值
評析:函數feof是用來判斷文件是否已讀到末尾,如果己讀到末尾則返回非零值,否則返回O。
(36)算法的時間復雜度是指_______。
A)執(zhí)行算法程序所需要的時間
B)算法程序的長度
C)算法執(zhí)行過程中所需要的基本運算次數
D)算法程序中的指令條數
(36)C
知識點:算法復雜度的概念和意義(時問復雜度與空間復雜度)
評析:所謂算法的時間復雜度,是指執(zhí)行算法所需要的計算工作量。為了能夠比較客觀地反映出一個算法的效率,在度量一個算法的工作量時,不僅應該與所使用的計算機、程序設計語言以及程序編制者無關,而且還應該與算法實現(xiàn)過程中的許多細節(jié)無關。為此,可以用算法在執(zhí)行過程中所需基本運算的執(zhí)行次數來度量算法的工作量。
(37)下列敘述中正確的是_______。
A)線性表是線性結構 B)棧與隊列是非線性結構
C)線性鏈表是非線性結構 D)二叉樹是線性結構
(37)A
知識點:線性結構與非線性結構的概念
評析:根據數據結構中各數據元素之間相關聯(lián)關系的復雜程度,一般將數據結構分為兩大類型:線性結構與非線性結構。如果一個非空的數據結構滿足下列兩個條件: (1)有且只有一個根結點; (2)每一個結點最多有一個前件,也最多有一個后件。則稱該數據結構為線性結構,又稱線性表。所以線性表、棧與隊列、線性鏈表都是線性結構,而二叉樹是非線性結構。
(38)下面關于完全二叉樹的敘述中,錯誤的是_______。
A)除了最后一層外,每一層上的結點數均達到最大值
B)可能缺少若干個左右葉子結點
C)完全二叉樹一般不是滿二叉樹
D)具有結點的完全二叉樹的深度為[log2n]+l
(38)B
知識點:二叉樹的定義及其存儲結構
評析:這里考察完全二又樹與滿二叉樹的定義及二叉樹的性質。滿二叉樹指除最后一層外每一層上所有結點都有兩個子結點的二叉樹。完全二叉樹指除最后一層外,每一層上的結點數均達到最大值,在最后一層上只缺少右邊的若干子結點(葉子結點)的二叉樹。因此選項A是正確的,而選項B是錯誤的。由定義可知,滿二叉樹肯定是完全二又樹,而完全二又樹一般不是滿二叉樹,因此選項c是正確的敘述。選項D即二又樹性質(5),也是正確的。
(39)結構化程序設計主要強調的是_______。
A)程序的規(guī)模 B)程序的易讀性
C)程序的執(zhí)行效率 D)程序的可移植性
(39)B
知識點:結構化程序設計
評析:結構化程序設計主要強調的足結構化程序清晰易讀,可理解性好,程序員能夠進行逐步求精、程序證明和測試.以保證程序的正確性。
(40)在軟件生命周期中,能準確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是_______。
A)概要設計 B)詳細設計 C)可行性分析 D)需求分析
(40)D
知識點:軟件工程基本概念,軟件生命周期概念,軟件工具與軟件開發(fā)環(huán)境
評析:通常,將軟件產品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產品從考慮其概念開始,到該軟件產品不能使用為止的整個時期都屬于軟件生命周期。軟件生命周期的主要活動階段為:
① 可行性研究和計劃制定。確定待開發(fā)軟件系統(tǒng)的開發(fā)目標和總的要求,給出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成開發(fā)任務的實施計劃。
②需求分析。對待開發(fā)軟件提出的需求進行分析并給出詳細定義,即準確地確定軟件系統(tǒng)的功能。編寫軟件規(guī)格說明書及初步的用戶手冊,提交評審。
③軟件設計。系統(tǒng)設計人員和程序設計人員應該在反復理解軟件需求的基礎上,給出軟件的結構、模塊的劃分、功能的分配以及處理流程。
④軟件實現(xiàn)。把軟件設計轉換成計算機可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。
⑤軟件測試。在設計測試用例的基礎上,檢驗軟件的各個組成部分。編寫測試分析報告。
⑥運行和維護。將已交付的軟件投入運行,并存運行使用中不斷地維護,根據新提出的需求進行必要而且可能的擴充和刪改。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |