C考前沖刺練習模擬試題 |
全國計算機等級考試二級C語言考前沖刺試卷(2) 一、選擇題 (1)下列選項中,不是一個算法的基本特征的是( )。 A)完整性 B)可行性 C)有窮性 D)擁有足夠的情報 (2)下列數據結構中,屬于非線性的是( )。 A)線性表 B)隊列 C)樹 D)棧 (3)下列敘述中錯誤的是( )。 A)線性表是由n個元素組成的一個有限序列 B)線性表是一種線性結構 C)線性表的所有結點有且僅有一個前件和后件 D)線性表可以是空表 (4)按照“先進先出”組織數據的數據結構是( )。 A)隊列 B)棧 C)雙向鏈表 D)二叉樹 (5)下列關于線性鏈表的描述中正確的是( )。 A)存儲空間不一定連續,且各元素的存儲順序是任意的 B)存儲空間不一定連續,且前件元素一定存儲在后件元素的前面 C)存儲空間必須連續,且各前件元素一定存儲在后件元素的前面 D)存儲空間必須連續,且各元素的存儲順序是任意的 (6)某二叉樹共有60個葉子結點與50個度為1的結點,則該二叉樹中的總結點數為( )。 A)148 B) (7)下列數據結構中,能用二分法進行查找的是( )。 A)順序存儲的有序線性表 B)結性鏈表 C)二叉鏈表 D)有序線性鏈表 (8)最簡單的交換排序方法是( )。 A)快速排序 B)選擇排序 C)堆排序 D)冒泡排序 (9)對于長度為n的線性表,在最壞情況下,下列各種排序法所對應的比較次數中,正確的是( )。 A)冒泡排序為n /2 B)冒泡排序為n D)快速排序為n D)快速排序為n(n-1)/2 (10)結構化程序設計的3種基本結構是( )。 A)過程、子程序和分程序 B)順序、選擇和重復 C)遞歸、堆棧和隊列 D)調用、返回和轉移 (11)在C語言中,以下說法不正確的是( )。 A)在C程序中,整數和實數都能被準確無誤地表示出來 B)在C程序中,任何一個變量名都代表存儲器中的一個位置 C)靜態變量的生存期與整個程序的運行期相同 D)C語言中,任何變量都必須先聲明才能進行引用 (12)一個C語言程序是由( )。 A)一個主程序和若干子程序組成 B)函數組成 C)若干過程組成 D)若干子程序組成 (13)以下標識符不是關鍵字的是( )。 A)break B)char C)Switch D)return (14)下列選項中,不能作為合法常量的是( )。 A)1.234e04 B)1.234e (15)以下不合法的用戶標識符是( )。 A)r3_t3 B)Else C) (16)下列敘述中正確的是( )。 A)調用printf()函數時,必須要有輸出項 B)使用putchar()函數時,必須在之前包含頭文件stdio.h C)在C語言中,整數可以以十二進制、八進制或十六進制的形式輸出 D)調節getchar()函數讀入字符時,可以從鍵盤上輸入字符所對應的ASCII碼 (17)執行以下程序段后,w的值為( )。 int w='A', x=14, y=15; w=((x || y)&&(w<'a')); A)-1 B)NULL C)l D)0 (18)設有定義:“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是格式符的一種,它可以適用于任何一種類型的數據 C)%x是格式符的一種,其變量的值按十六進制數輸出,但%8x是錯誤的 D)%8x是正確的格式符,其中數字8規定了輸出字段的寬度 (20)若有定義int x,y; 并已正確給變量賦值,則下列選項中與表達式(x-y)?(x++):(y++)中的條件表達式(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型變量且都已經正確賦初值,則以下不正確的賦值語句是( )。 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++)); } 程序運行后的輸出結果是( )。 A)12 B)15 C)16 D)20 (23)下面程序的輸出結果是( )。 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); } 程序運行后的輸出結果是( )。 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));} 程序的運行結果是( )。 A)1 B) (26)關于字符常量,以下敘述正確的是( )。 A)空格不是一個字符常量 B)字符常量能包含大于一個的字符 C)單引號中的大寫字母和小寫字母代表的是相同的字符常量 D)所有的字符常量都可以作為整型量來處理 (27)下面函數調用語句含有實參的個數為( )。 func((exp1,exp2),(exp3,exp4,exp5)); A)1 B) (28)語句int(*ptr)()的含義是( )。 A)ptr是一個返回值是int的函數 B)ptr是指向int型數據的指針變量 C)ptr是指向函數的指針,該函數返回一個int型數據 D)ptr是一個函數名,該函數的返回值是指向int型數據的指針 (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)若有以下定義,則對數組元素的正確引用是( )。 int a[5],*p=a; A)*&a[5] B)(*a)+ (31)下列字符數組初始化語句中,不正確的是( )。 A)char c[]='goodmorning'; B)char c[20]= "goodmorning"; C)char c[]={'a','b','c','d'}; D)char c[]={"goodmorning"}; (32)下列程序的運行結果為( )。 #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)閱讀下面程序,則執行后的結果為( )。 #include "stdio.h" main() { char *str="abcdefghijklmnopq"; while(*str++!=′e′); printf("%c\n",*str);} A)f B)a C)e D)q (34)設有如下的程序段: char str[]="HelloWorld"; char*ptr; ptr=str; 執行上面的程序段后,*(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源程序文件中,要定義一個只允許本源文件中所有函數使用的全局變量,則該變量需要使用的存儲類別是( )。 A)auto B)register C)extern D)static (37)以下程序的輸出結果是( )。 #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)設有以下說明,則不正確的敘述是( )。 union un { int a; char b; float c; }arr; A)arr所占的內存長度等于成員c的長度 B)arr的地址和它的各成員的地址都是同一地址 C)arr可以作為函數參數 D)不能在定義arr時對它初始化 (39)若x=4,y=5,則x&y的結果是( )。 A)0 B) (40)下列關于C語言數據文件的敘述中正確的是( )。 A)文件由ASCII碼字符序列組成,C語言只能讀寫文本文件 B)文件由二進制數據序列組成,C語言只能讀寫二進制文件 C)文件由記錄序列組成,可按數據的存放形式分為二進制文件和文本文件 D)文件由數據流形式組成,可按數據的存放形式分為二進制文件和文本文件 二、填空題 (1)軟件生命周期分為軟件定義期、軟件開發期和軟件維護期,詳細設計屬于___________中的一個階段。 (2)結構化分析方法是面向___________進行分析的方法。 (3)常用的軟件結構設計工具是結構圖(SC),也稱程序結構圖。其中,用矩形表示___________,用帶空心圓的箭頭表示傳遞的是數據。 (4)在進行模塊測試時,要為每個被測試的模塊另外設計兩類模塊:驅動模塊和承接模塊,其中__________的作用是將測試數據傳送給被測試的模塊,并顯示被測試模塊所產生的結果。 (5)診斷和改正程序中錯誤的工作通常稱為___________。 (6)若a=1,b=2,c=3,d=4;則條件表達式a>b ? a : c<d ? c : d的結果為___________。 (7)若有定義:int x=1,y=2;float a=3.7,b=2.1;則(x+y)%2+(int)a/(int)b表達式的值為___________。 (8)以下程序的運行結果是___________。 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)下面程序的運行結果是___________。 #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)以下程序的功能是:對輸入的一行字符中的數字字符的字面值累加,輸出此累加和,請填空。 #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)下面程序的輸出結果是___________。 #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)下列函數從字符數組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)下面程序的運行結果是___________。 #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)設有下列程序: #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>,則程序的輸出結果是___________。 (15)下面程序的運行結果是___________。 #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)軟件開發 (2)數據流 (3)模塊 (4)驅動模塊 (5)調試 (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 |