![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
C考前沖刺練習(xí)模擬試題 |
全國計算機等級考試二級C語言考前沖刺試卷(2) 一、選擇題 (1)下列選項中,不是一個算法的基本特征的是( )。 A)完整性 B)可行性 C)有窮性 D)擁有足夠的情報 (2)下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性的是( )。 A)線性表 B)隊列 C)樹 D)棧 (3)下列敘述中錯誤的是( )。 A)線性表是由n個元素組成的一個有限序列 B)線性表是一種線性結(jié)構(gòu) C)線性表的所有結(jié)點有且僅有一個前件和后件 D)線性表可以是空表 (4)按照“先進(jìn)先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是( )。 A)隊列 B)棧 C)雙向鏈表 D)二叉樹 (5)下列關(guān)于線性鏈表的描述中正確的是( )。 A)存儲空間不一定連續(xù),且各元素的存儲順序是任意的 B)存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面 C)存儲空間必須連續(xù),且各前件元素一定存儲在后件元素的前面 D)存儲空間必須連續(xù),且各元素的存儲順序是任意的 (6)某二叉樹共有60個葉子結(jié)點與50個度為1的結(jié)點,則該二叉樹中的總結(jié)點數(shù)為( )。 A)148 B) (7)下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進(jìn)行查找的是( )。 A)順序存儲的有序線性表 B)結(jié)性鏈表 C)二叉鏈表 D)有序線性鏈表 (8)最簡單的交換排序方法是( )。 A)快速排序 B)選擇排序 C)堆排序 D)冒泡排序 (9)對于長度為n的線性表,在最壞情況下,下列各種排序法所對應(yīng)的比較次數(shù)中,正確的是( )。 A)冒泡排序為n /2 B)冒泡排序為n D)快速排序為n D)快速排序為n(n-1)/2 (10)結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)是( )。 A)過程、子程序和分程序 B)順序、選擇和重復(fù) C)遞歸、堆棧和隊列 D)調(diào)用、返回和轉(zhuǎn)移 (11)在C語言中,以下說法不正確的是( )。 A)在C程序中,整數(shù)和實數(shù)都能被準(zhǔn)確無誤地表示出來 B)在C程序中,任何一個變量名都代表存儲器中的一個位置 C)靜態(tài)變量的生存期與整個程序的運行期相同 D)C語言中,任何變量都必須先聲明才能進(jìn)行引用 (12)一個C語言程序是由( )。 A)一個主程序和若干子程序組成 B)函數(shù)組成 C)若干過程組成 D)若干子程序組成 (13)以下標(biāo)識符不是關(guān)鍵字的是( )。 A)break B)char C)Switch D)return (14)下列選項中,不能作為合法常量的是( )。 A)1.234e04 B)1.234e (15)以下不合法的用戶標(biāo)識符是( )。 A)r3_t3 B)Else C) (16)下列敘述中正確的是( )。 A)調(diào)用printf()函數(shù)時,必須要有輸出項 B)使用putchar()函數(shù)時,必須在之前包含頭文件stdio.h C)在C語言中,整數(shù)可以以十二進(jìn)制、八進(jìn)制或十六進(jìn)制的形式輸出 D)調(diào)節(jié)getchar()函數(shù)讀入字符時,可以從鍵盤上輸入字符所對應(yīng)的ASCII碼 (17)執(zhí)行以下程序段后,w的值為( )。 int w='A', x=14, y=15; w=((x || y)&&(w<'a')); A)-1 B)NULL C)l D)0 (18)設(shè)有定義:“long x= A)printf("x=%d\n",x); B)printf("x=%id\n",x); C)printf("x=%dL\n",x); D)printf("x=%ld\n",x); (19)已有定義int a=3;和輸出語句printf("%8x",a);以下正確的敘述是( )。 A)整型變量的輸出格式符只有%d一種 B)%x是格式符的一種,它可以適用于任何一種類型的數(shù)據(jù) C)%x是格式符的一種,其變量的值按十六進(jìn)制數(shù)輸出,但%8x是錯誤的 D)%8x是正確的格式符,其中數(shù)字8規(guī)定了輸出字段的寬度 (20)若有定義int x,y; 并已正確給變量賦值,則下列選項中與表達(dá)式(x-y)?(x++):(y++)中的條件表達(dá)式(x-y)等價的是( )。 A)(x-y>0) B)(x-y<0) C)(x-y<0||x-y>0) D)(x-y==0) (21)若a、b、c、d都是int型變量且都已經(jīng)正確賦初值,則以下不正確的賦值語句是( )。 A)a+d; B)a++; C)a=b=c=d=100; D)a=(b=3)+(d=5); (22)有以下程序 #define F(X,Y)(X)*(Y) main() { int a=3, b=4; printf("%d\n", F(a++, b++)); } 程序運行后的輸出結(jié)果是( )。 A)12 B)15 C)16 D)20 (23)下面程序的輸出結(jié)果是( )。 main() { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2));} A)3 B)4 C)1 D)2 (24)有以下程序: #include<stdio.h> main() { int a=6,b=7,m=1; switch(a%2) { case 0:m++;break; case 1:m++; switch(b%2) { defaut:m++; case0:m++;break; } } printf("%d\n",m); } 程序運行后的輸出結(jié)果是( )。 A)1 B) (25)有以下程序 #include <stdio.h> int fun(int a,int b) { if(b==0) return a; else return(fun(--a,--b)); } main() { printf("%d\n", fun(4,2));} 程序的運行結(jié)果是( )。 A)1 B) (26)關(guān)于字符常量,以下敘述正確的是( )。 A)空格不是一個字符常量 B)字符常量能包含大于一個的字符 C)單引號中的大寫字母和小寫字母代表的是相同的字符常量 D)所有的字符常量都可以作為整型量來處理 (27)下面函數(shù)調(diào)用語句含有實參的個數(shù)為( )。 func((exp1,exp2),(exp3,exp4,exp5)); A)1 B) (28)語句int(*ptr)()的含義是( )。 A)ptr是一個返回值是int的函數(shù) B)ptr是指向int型數(shù)據(jù)的指針變量 C)ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù) D)ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針 (29)以下不正確的定義語句是( )。 A)double x[5]={1.0,2.0,3.0,4.0,5.0}; B)int y[5]={0,1,2,3,4,5}; C)char c1[]={'1', '2', '3', '4', '5'}; D)char c2[]={'a', 'b', 'c'}; (30)若有以下定義,則對數(shù)組元素的正確引用是( )。 int a[5],*p=a; A)*&a[5] B)(*a)+ (31)下列字符數(shù)組初始化語句中,不正確的是( )。 A)char c[]='goodmorning'; B)char c[20]= "goodmorning"; C)char c[]={'a','b','c','d'}; D)char c[]={"goodmorning"}; (32)下列程序的運行結(jié)果為( )。 #include<stdio.h> void abc(char*str) { int a,b,i,j; for(i=j=0;str[i]!='\0';i++) if(str[i]!='a') str[j++]=str[i]; str[j]='\0'; } void main() { char str[]="abcdef"; abc(str); printf("str[]=%s",str); } A)str[]=bcdef B)str[]=abcdef C)str[]=a D)str[]=ab (33)閱讀下面程序,則執(zhí)行后的結(jié)果為( )。 #include "stdio.h" main() { char *str="abcdefghijklmnopq"; while(*str++!=′e′); printf("%c\n",*str);} A)f B)a C)e D)q (34)設(shè)有如下的程序段: char str[]="HelloWorld"; char*ptr; ptr=str; 執(zhí)行上面的程序段后,*(ptr+10)的值為( )。 A)'\0' B)'0' C)不確定的值 D)'0'的地址 (35)下述語句中,在字符串s1和s2相等時顯示“they are Equal”的是( )。 A)if(*s1==*s2) B)if(!strcmp(s1,s2)) puts("they are Equal"); puts("they are Equal"); C)if(s1==s2) D)if(strcmp(s1,s2)) Puts("they are Equal"); puts("they are Equal"); (36)在一個C源程序文件中,要定義一個只允許本源文件中所有函數(shù)使用的全局變量,則該變量需要使用的存儲類別是( )。 A)auto B)register C)extern D)static (37)以下程序的輸出結(jié)果是( )。 #include <stdio.h> void prt (int *x, int *y, int *z) {printf("%d,%d,%d\n",++*x,++*y,*(z++));} main() {int a=10,b=40,c=20; prt (&a,&b,&c); prt (&a,&b,&c);} A)11,42,31 B)11,41,20 12,22,41 12,42,20 C)11,21,40 D)11,41,21 11,21,21 12,42,22 (38)設(shè)有以下說明,則不正確的敘述是( )。 union un { int a; char b; float c; }arr; A)arr所占的內(nèi)存長度等于成員c的長度 B)arr的地址和它的各成員的地址都是同一地址 C)arr可以作為函數(shù)參數(shù) D)不能在定義arr時對它初始化 (39)若x=4,y=5,則x&y的結(jié)果是( )。 A)0 B) (40)下列關(guān)于C語言數(shù)據(jù)文件的敘述中正確的是( )。 A)文件由ASCII碼字符序列組成,C語言只能讀寫文本文件 B)文件由二進(jìn)制數(shù)據(jù)序列組成,C語言只能讀寫二進(jìn)制文件 C)文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件 D)文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件 二、填空題 (1)軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護期,詳細(xì)設(shè)計屬于___________中的一個階段。 (2)結(jié)構(gòu)化分析方法是面向___________進(jìn)行分析的方法。 (3)常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示___________,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。 (4)在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊,其中__________的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。 (5)診斷和改正程序中錯誤的工作通常稱為___________。 (6)若a=1,b=2,c=3,d=4;則條件表達(dá)式a>b ? a : c<d ? c : d的結(jié)果為___________。 (7)若有定義:int x=1,y=2;float a=3.7,b=2.1;則(x+y)%2+(int)a/(int)b表達(dá)式的值為___________。 (8)以下程序的運行結(jié)果是___________。 main() { int a=1,b=2,c; if(a>b) c=1; else if(a==b) c=0; else c=-1; printf("%d\n",c);} (9)下面程序的運行結(jié)果是___________。 #include<stdio.h> main() { int a,s,n,m; a=2;s=0;n=1;m=1; while(m<=4){n=n*a; s=s+n; ++m; } printf("s=%d",s); } (10)以下程序的功能是:對輸入的一行字符中的數(shù)字字符的字面值累加,輸出此累加和,請?zhí)羁铡?/SPAN> #include<stdio.h> #include<ctype.h> main() { char c; int a,s=0; while(___________) if(isdigit(c)) {a= c-'0';s+=a;} printf("s=%d",s); } (11)下面程序的輸出結(jié)果是___________。 #include<stdio.h> main() { static char a[]="zhao",b[]="juan"; char *ptrl=a,*ptr2=b; int k; for(k=0;k<4;k++) if(*(ptrl+k)==*(ptr2+k)) printf("%c",*(ptrl+k));} (12)下列函數(shù)從字符數(shù)組s[]中刪除和c一樣的字符,請在下面橫線處填空。 void delete(s,c) char s[],c; { int i,j; for(i=j=0; ___________;i++) if(s[i]!='c') s[j++]=s[i]; s[j]="\0";} (13)下面程序的運行結(jié)果是___________。 #include<stdio.h> main() { char a[80],*p="AbabCDcd"; int i=0,j=0; while(*p!='\0') { if(*p>='a' && *p<='z') { a[i]=*p;i++;} } a[i]='\0'; puts(a); } (14)設(shè)有下列程序: #include<stdio.h> #include<string.h> main() { int i; char s[10],t[10]; gets(t); for(i=0;i<2;i++) { gets(s); if(strcmp(t,s)<0) strcpy(t,s); } printf("%s\n",t); } 程序運行后,從鍵盤上輸入(<CR>代表回車符):CDEF<CR>BADEF<CR>QTHRG<CR>,則程序的輸出結(jié)果是___________。 (15)下面程序的運行結(jié)果是___________。 #define P(a) printf("%d ",a) main() { int j,a[]={1,2,3,4,5,6,7},i=5; for(j=3;j>1;j--) { switch(j) { case 1: case 2: P(a[i++]); break; case 3: P(a[--i]); } } 參考答案 一、選擇題 (1)A) (2)C) (3)C) (4)A) (5)A) (6)B) (7)A) (8)D) (9)D) (10)B) (11)A) (12)B) (13)C) (14)B) (15)C) (16)B) (17)C) (18)D) (19)D) (20)C) (21)A) (22)A) (23)A) (24)B) (25)B) (26)D) (27)B) (28)C) (29)B) (30)D) (31)A) (32)A) (33)A) (34)A) (35)B) (36)D) (37)B) (38)C) (39)B) (40)D) 二、填空題 (1)軟件開發(fā) (2)數(shù)據(jù)流 (3)模塊 (4)驅(qū)動模塊 (5)調(diào)試 (6)3 (7)2 (8)-1 (9)s=30 (10)(c=getchar())!='\n' (11)a (12)s[i]!='\0' (13)babcd (14)QTHRG (15)5 5 |