- 相關推薦
2013全國計算機等級考試二級C語言試題一
考試頻道小編收集整理了全國計算機等級考試二級C語言試題,供大家交流參考。(分享:2014年中考時間)
一、選擇題
在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項涂寫在答題卡相應位置上,答在試卷上不得分。
(1)程序流程圖中帶有箭頭的線段表示的是
A)圖元關系 B)數(shù)據(jù)流 C)控制流 D)調用關系
(2)下面不屬于軟件設計原則的是
A)抽象 B)模塊化 C)自底向上 D)信息隱蔽
(3)下列選項中,不屬于模塊間耦合的是
A)數(shù)據(jù)耦合 B)標記耦合 C)異構耦合 D)公共耦合
(4)下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是 A)便于用戶、開發(fā)人員進行理解和交流 B)反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據(jù)
C)作為確認測試和驗收的依據(jù) D)便于開發(fā)人員進行需求分析
(5)算法的時間復雜度是指
A)執(zhí)行算法程序所需要的時間 B)算法程序的長度 C)算法執(zhí)行過程中所需要的基本運算次數(shù)
D)算法程序中的指令條數(shù)
(6)已知數(shù)據(jù)表A中每個元素距其最終位置不遠,為節(jié)省時間,應采用的算法是
A)堆排序 B)直接插入排序 C)快速排序 D)B)和C)
(7)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是
A)ABCED B)DCBEA C)DBCEA D)CDABE
(8)數(shù)據(jù)庫設計包括兩個方面的設計內容,它們是
A)概念設計和邏輯設計 B)模式設計和內模式設計 C)內模式設計和物理設計 D)結構特性設計和行為特性設計
(9)關系表中的每一橫行稱為一個
A)元組 B)字段 C)屬性 D)碼
(10)設有表示學生選課的三張表,學生S(學號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學號,課號,成績),則表SC的關鍵字 (鍵或碼)為
A)課號,成績 B)學號,成績 C)學號,課號 D)學號,姓名,成績
(11)以下不正確的敘述是
A)在C程序中,逗號運算符的優(yōu)先級最低 B)在C程序中,APH和aph是兩個不同的變量
C)若a和b類型相同,在計算了賦值表達式a=b后b中的值將放入a中,而b中的值不變
D)當從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實型變量只能輸入實型數(shù)值
(12)請選出可用作C語言用戶標識符的是
A)void,define,WORD B)a3_b3,_123,IF C)FOR,--abc,Case D)2a,Do,Sizeof
(13)以下選項中,不能作為合法常量的是
A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0
(14)在C語言中,運算對象必須是整型數(shù)的運算符是
A)% B)\ C)%和\ D)**
(15)若變量均已正確定義并賦值,以下合法的C語言賦值語句是
A)x=y==5; B)x=n%2.5; C)x+n=i; D)x=5=4+1;
(16)有以下程序段
char ch; int k;
ch=′a′; k=12;
printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);
已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結果是
A)因變量類型與格式描述符的類型不匹配輸出無定值 B)輸出項與格式描述符個數(shù)不符,輸出為零值或不定值
C)a,97,12k=12 D)a,97,k=12
(17)已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母的表達式是
A)kk>=′A′&& kk<=′Z′ B)!(kk>=′A′||kk<=′Z′) C)(kk+32)>=′a′&&(kk+32)<=′Z′ D)isalpha(kk)&&(kk<91)
(18)當變量c的值不為2、4、6時,值也為"真"的表達式是
A)(c==2)||(c==4)||(c==6) B)(c>=2&& c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&& c<=6)&&(c%2!=1)
(19)若有條件表達式 (exp)?a++:b--,則以下表達式中能完全等價于表達式(exp)的是
A)(exp==0) B)(exp!=0) C)(exp==1) D)(exp!=1)
(20)以下不正確的定義語句是
A)double x[5]={2.0,4.0,6.0,8.0,10.0}; B)int y[5]={0,1,3,5,7,9}; C)char c1[]={′1′,′2′,′3′,′4′,′5′}; D)char c2[]={′\x10′, ′xa′, ′\x8′};
(21)下列程序執(zhí)行后的輸出結果是
main()
{ int a[3][3], *p,i;
p=&a[0][0];
for(i=1; i<9; i++)p[i]=i+1;
printf("%d\n",a[1][2];)
A)3 B)6 C)9 D)隨機數(shù)
(22)設有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
則
A)運行程序段后輸出0 B)運行程序段后輸出1 C)程序段中的控制表達式是非法的 D)程序段執(zhí)行無限次
(23)(23)下面程序段的運行結果是
char *s="abcde";
s+=2;printf("%d",s);
A)cde B)字符′c′ C)字符′c′的地址 D)無確定的輸出結果
(24)閱讀下列程序,則執(zhí)行后的結果為
#include "stdio.h"
main()
{ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
A)3e,6 B)62,5 C)56,5 D)3E,6
(25)下面判斷正確的是
A)char *a="china";等價于 char *a;*a="china"; B)char str[5]={"china"};等價于char str[]={"china"};
C)char *s="china";等價于 char *s;s="china"; D)char c[4]="abc",d[4]="abc";等價于char c[4]=d[4]="abc";
(26)若有定義:int a[2][3];,以下選項中對a數(shù)組元素正確引用的是
A)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][!1]
(27)有定義語句:char s[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是
A)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]);
(28)有以下程序
#include
#define N 5
#define M N+1
#define f(x) (x*M)
main()
{ int i1,i2;
i1=f(2);
i2=f(1+1);
printf("%d %d\n",i1,i2);
}
程序的運行結果是
A)12 12 B)11 7 C)11 11 D)12 7
(29)若有以下說明和定義
union dt
{ int a; char b; double c;}data;
以下敘述中錯誤的是
A)data的每個成員起始地址都相同 B)變量data所占內存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等
C)程序段:data.a=5;printf("%f\n",data.c);輸出結果為5.000000 D)data可以作為函數(shù)的實參
(30)有以下程序
#include
main()
{FILE *fp;int k,n,a[6]={1,2,3,4,5,6};
fp=fopen("d2.dat","w");
fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);
fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);
fclose(fp);
fp=fopen("d2.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);
}
程序運行后的輸出結果是
A)1 2 B)1 4 C)123 4 D)123 456
(31)若已定義
int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;
其中 則對a數(shù)組元素不正確的引用是
A)a[p-a] B)*(&a[i]) C)p[i] D)a[10]
(32)有以下程序
#include
void fun(int ?*s,int n1,int n2)
{ int i,j,t;
i=n1; j=n2;
while(i
}
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3); fun(a,4,9); fun(a,0,9);
for(k=0;k
}
程序的運行結果是
A)0987654321 B)4321098765 C)5678901234 D)0987651234
(33)閱讀下列程序,當運行函數(shù)時,輸入asd af aa z67,則輸出為
#include
#include
#include
int fun (char *str)
{ int i,j=0;
for(i=0;str[i]!=′ \0′;i++)
if(str[i]!=′ ′)str[j++]=str[i];
str[j]= ′\0′;
}
main()
{
char str[81];
int n;
printf("Input a string : ");
gets(str);
puts(str);
fun(str);
printf("%s\n",str);
}
A)asdafaaz67 B)asd af aa z67 C)asd D)z67
(34)有以下程序
int fun(int n)
{if(n==1)return 1;
else
return(n+fun(n-1));
}
main()
{int x;
scanf("%d",&x); x=fun(x);printf("%d\n",x)
}
執(zhí)行程序時,給變量x輸入10,程序的輸出結果是
A)55 B)54 C)65 D)45
(35)下面程序段中,輸出*的個數(shù)是
char *s="\ta\018bc";
for(;*s!='\0';s++)printf("*");
A)9 B)5 C)6 D)7
(36)C語言結構體類型變量在程序運行期間
A)TC環(huán)境在內存中僅僅開辟一個存放結構體變量地址的單元 B)所有的成員一直駐留在內存中
C)只有最開始的成員駐留在內存中 D)部分成員駐留在內存中
(37)已知函數(shù)的調用形式為fread(buf,size,count,fp),參數(shù)buf的含義是
A)一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù) B)一個文件指針,指向要讀的文件 C)一個指針,指向要讀入數(shù)據(jù)的存放地址 D)一個存儲區(qū),存放要讀的數(shù)據(jù)項
(38)設有以下語句
char x=3,y=6,z;
z=x^y<<2;
則z的二進制值是
考試頻道小編收集整理了全國計算機等級考試二級C語言試題
A)00010100 B)00011011 C)00011100 D)00011000
(39)在C語言中,只有在使用時才占用內存單元的變量,其存儲類型是
A)auto和register B)extern和register C)auto和static D)static和register
(40)設有定義語句int (?*f)(int);,則以下敘述正確的是
A)f是基類型為int的指針變量 B)f是指向函數(shù)的指針變量,該函數(shù)具有一個int類型的形參
C)f是指向int類型一維數(shù)組的指針變量 D)f是函數(shù)名,該函數(shù)的返回值是基類型為int類型的地址
二、填空題
請將每一個空的正確答案寫在答題卡序號的橫線上,答在試卷上不給分。
(1)測試用例包括輸入值集和 【1】 值集。
(2)在樹形結構中,樹根結點沒有 【2】 。
(3)數(shù)據(jù)結構分為邏輯結構與存儲結構,線性鏈表屬于 【3】 。
(4)一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體"項目主管"與實體"項目"的聯(lián)系屬于 【4】 的聯(lián)系。
(5)數(shù)據(jù)庫設計分為以下6個設計階段:需求分析階段、 【5】 、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。
(6)閱讀下面程序段,則執(zhí)行后輸出的結果是 【6】 。
#include "stdio.h"
main()
{ char fun(char,int);
char a=′A′;
int b=13;
a=fun(a,b);
putchar(a);}
char fun(char a,int b)
{ char k;
k=a+b;
return k;}
(7)函數(shù)fun的返回值是 【7】
fun(char *a,char *b)
{ int num=0,n=0;
while(*(a+num)!='\0')mm++;
while(b[n]){*(a+num)=b[n];num++;n++;}
return num;
}
(8)以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。
例如,若一維數(shù)組中的數(shù)據(jù)是:
2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
刪除后,數(shù)組中的內容應該是:
2 3 4 5 6 7 8 9 10。
請?zhí)羁铡?/p>
#include
#define N 80
int fun(int a[], int n)
{ int i,j=1;
for(i=1;i
if(a[j-1] 【8】 a[i])
a[j++]=a[i];
【9】 ;
}
main()
{ int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10}, i, n=19;
printf("The original data : \n");
for(i=0; i
n=fun(a,n);
printf("\nThe data after deleted: \n");
for(i=0; i
}
(9)以下程序的運行結果是 【10】 。
#include
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0:a++; break;
case 1: b++; break;
}
case 2:a++; b++; break;
case 3:a++; b++;
}
printf("a=%d,b=%d\n",a,b);
}
(10)以下程序的輸出結果是 【11】 。
fun (int x,int y,int z)
{ z =x*x+y*y;}
main ()
{ int a=31;
fun (6,3,a)
printf ("%d", a)
}
(11)函數(shù)my_cmp( )的功能是比較字符串s和t的大小,當s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,s
My_cmp(char*s,char*t)
{ while (*s == *t)
{ if (*s == ′ \0)return0;
++s; ++t;
} return 【12】 ;
}
(12)以下程序的輸出結果是 【13】 。
void reverse(int a[],int n)
{ int i,t;
for(i=0;i
{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf(" %d\n",s);
}
(13)以下說明語句中, 【14】 是結構體類型名。
typedef struct
{ int n;
char ch[8];
} PER;
(14)以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>
#include
main()
{FILE ?*fp; char ch;
fp=fopen( 【15】 );
ch=fgetc(fp);
while(!feof(fp)) { putchar(ch); ch=fgetc(fp); }
putchar('\n');fclose(fp);
}
一、選擇題
(1)C 【解析】 程序流程圖是人們對解決問題的方法、思路或算法的一種圖形方式的描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內容;流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流;帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項中,在圖元之間用帶有箭頭的線段表示圖元關系。在模塊之間用帶有箭頭的線段表示調用關系。
(2)C 【解析】 軟件設計遵循軟件工程的基本目標和原則,建立了適用于在軟件設計中應該遵循的基本原理和與軟件設計有關的概念,它們具有抽象、模塊化、信息隱蔽和數(shù)據(jù)獨立性。自底向上是集成測試中增量測試的一種。
(3)C 【解析】 模塊之間的耦合程度反映了模塊的獨立性,也反映了系統(tǒng)分解后的復雜程度。按照耦合程度從強到弱分別是:內容耦合、公共耦合、外部耦合、控制耦合、標記耦合、數(shù)據(jù)耦合和非直接耦合,沒有異構耦合這種方式。
(4)D 【解析】 軟件需求規(guī)格說明書(SRS,Software Requirement Specification)是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。它具有以下幾個方面的作用:① 便于用戶、開發(fā)人員進行理解和交流;② 反映出用戶問題的結構,可以作為軟件開發(fā)工作的基礎和依據(jù);③ 作為確認測試和驗收的依據(jù)。
(5)C 【解析】 算法的復雜度主要包括算法的時間復雜度和空間復雜度。所謂算法的時間復雜度是指執(zhí)行算法所需要的計算工作量,即算法執(zhí)行過程中所需要的基本運算的次數(shù);算法的空間復雜度一般是指執(zhí)行這個算法所需要的內存空間。
(6)B 【解析】 堆排序的比較次數(shù)為nlog2n;直接插入排序的比較次數(shù)為n(n-1)/2;快速排序的比較次數(shù)為nlog2n。當數(shù)據(jù)表A中每個元素
(7)B 【解析】 棧操作原則上"后進先出",棧底至棧頂依次存放元素A、B、C、D,則表明這4個元素中D是最后進棧,B、C處于中間,A最早進棧,所以出棧時一定是先出D,再出C,最后出A。
(8)A 【解析】 數(shù)據(jù)庫設計包括數(shù)據(jù)庫概念設計和數(shù)據(jù)庫邏輯設計兩個方面的內容。
(9)A 【解析】 關系表中,每一行稱為一個元組,對應表中的一條記錄;每一列稱為一個屬性,對應表中的一個字段;在二維表中凡能唯一標識元組的最小屬性集稱為該表的鍵或碼。
(10)C 【解析】 "選課SC" 表是 "學生S" 表和 "課程C" 表的映射表,主鍵是兩個表主鍵的組合。
(11)D 【解析】 在C語言所有的運算符中,逗號運算符的優(yōu)先級最低。C語言中區(qū)分大小寫,所以APH和aph是兩個不同的變量。賦值表達式a=b表示將b的值付給a,而b本身的值保持不變;通過鍵盤可以向計算機輸入允許的任何類型的數(shù)據(jù)。選項D)中當從鍵盤輸入數(shù)據(jù)時,對于整型變量可以輸入整型數(shù)值和字符,對于實型變量可以輸入實型數(shù)值和整型數(shù)值等。
(12)B 【解析】 C語言規(guī)定用戶標識符由字母、數(shù)字和下劃線組成,且第一個字符必須是字母或下劃線,可見選項C),D)是錯誤的;此外,C語言不允許用戶將關鍵字作為標識符,而選項A)中的void正是C語言的關鍵字。
(13)B 【解析】 C語言的語法規(guī)定,字母e(E)之前必須有數(shù)字,且e(E)后面的指數(shù)必須是整數(shù),而選項B)中,e(E)后面的指數(shù)是小數(shù),所以不合法。
(14)A 【解析】 在C語言中,"%"運算符兩側的運算數(shù)必須是整型。
(15)A 【解析】 賦值運算符左側的操作數(shù)必須是一個變量,而不能是表達式或者常量,選項C)和D)錯誤。"%"運算符兩側都應當是整型數(shù)據(jù),選項B)錯誤。
(16)D 【解析】 輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表示將變量以帶符號的十進制整型數(shù)輸出,所以第一個輸出語句輸出的結果為a,97;第二個輸出語句輸出的結果為k=12。
(17)B 【解析】 C語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在'A'和'Z'之間就可以了,選項A)和C)符合要求。函數(shù)isalpha用來確定一個字符是否為字母,大寫字母的ASCII碼值的范圍為65到90,所以如果一個字母的ASCII碼小于91,那么就能確定它是大寫字母。
(18)B 【解析】 滿足表達式(c>=2&&c<=6)的整型變量c的值是2,3,4,5,6。當變量c的值不為2,4,6時,其值只能為3或5,所以表達式c!=3和c!=5中至少有一個為真,即不論c為何值,表達式B)都為"真"。
(19)B 【解析】 條件運算符要求有3個操作對象,稱三目(元)運算符,它是C語言中惟一的一個三目運算符。條件表達式的一般形式為:表達式1?表達式2:表達式3其求解順序是:先求解表達式1,若為非0(真)則求解表達式2,此時表達式2的值就作為整個條件表達式的值。若表達式1的值為0(假),則求解表達式3,表達式3的值就是整個條件表達式的值,注意++、--的用法。
(20)B 【解析】 在一維數(shù)組中要注意的是作為下標表達式的常量表達式的值必須是大于等于0,選項B)中定義有5個元素,但賦值時有6個元素,所以是錯誤的。
(21)B 【解析】 本題中,a[1][2]是二維數(shù)組中的第6個元素,對應for循環(huán)中i的值為5,p[5]=5+1。
(22)B 【解析】 本題中,"!"表示邏輯非運算符,"!="表示不等于運算符,邏輯非運算符比不等于運算符的優(yōu)先級高。
(23)C 【解析】 對于字符串指針,其保留的是整個串的首地址,即第一個字符的起始地址;當該指針做算術運算時,就是該指針根據(jù)其類型向后移動相應的存儲空間。
(24)A 【解析】 數(shù)組c[][4]表示一個4行4列數(shù)組,c[2][2]表示第3行第3列上的元素62,*(*(c+1)+1))表示第2行第2列上的元素6,通過十六進制輸出為3e,6。
(25)C 【解析】 選項A)char *a;*a="china"應改為?a=china?;,選項B)應該是char str[6];D)項表述方法有錯誤。
(26)D 【解析】 C語言中數(shù)組下標是從0開始的,所以二維數(shù)組a[2][3]的第一維下標取值為0、1;第二維的下標取值為0、1、2,因而選項A)、B)、C)都是錯誤的,選項D)表示數(shù)組元素a[0][0]。
(27)D 【解析】 在格式輸入中,要求給出的是變易的地址,而D)答案中給出的s[1]是一個值的表達式。 (28)B 【解析】 根據(jù)宏替換的替換規(guī)則,我們可知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。
(29)D 【解析】 選項A),共用體的每個成員的起始地址都相同;選項B),共用體變量所占的內存長度等于最長的成員的長度;選項C)因為每個成員的起始地址相同,所以整型數(shù)5以浮點型輸出時為5.000000;選項D)C語言規(guī)定,不能把共用體變量作為函數(shù)的參數(shù)。
(30)D 【解析】 將有6個元素的整型數(shù)組分兩行輸出到一個文件中,因為輸出的都是數(shù)字并且每行都沒有分隔符,所以當再對其進行讀取操作時,每一行都會被認為是一個完整的數(shù),而換行符則作為它們的分隔符。
(31)D 【解析】 通常,引用一個數(shù)組元素可以用下標法,如a[p-a]形式,或指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出數(shù)組范圍,注意,數(shù)組的下標是從0開始的。
(32)C 【解析】 函數(shù)fun(int *s,int n1,int n2)的功能是對數(shù)組s中的元素進行首尾互相調換。所以在主函數(shù)中,當fun(a,0,3)執(zhí)行完后,數(shù)組a[12]={4,3,2,1,5,6,7,8,9,0};再執(zhí)行fun(a,4,9),數(shù)組a[12]={4,3,2,1,0,9,8,7,6,5};再執(zhí)行fun(a,0,9)后,數(shù)組a[12]={5,6,7,8,9,0,1,2,3,4}。
(33)A 【解析】 本題題意要求刪除所有空格,即除了空格以外的其他所有字符都要留下。由于C語言中沒有直接刪除字符的操作,所以我們對于刪除字符的操作都是采用"留下"字符的算法,以前的題目亦是如此。用str[i]從串頭到串尾逐一走動,每走到一個字符都判斷其是否為空格,若不是空格(注意在if()的單引號之間有一個空格),則將其保存str[j]中。注意j的下標變化、初值及最后加串結束符'\0'。
(34)A 【解析】 本程序考察的是函數(shù)的遞歸調用,在調用一個函數(shù)的過程中又出現(xiàn)直接或間接地調用該函數(shù)本身,稱為函數(shù)的遞歸調用,執(zhí)行結果為1+2+3+4+5+6+7+8+9+10=55。
(35)C 【解析】 本題中,格式符0表示的是八進制無符號形式輸出整型數(shù)(不帶前導0),字符常量在內存中占一個字節(jié),存放的是ACSII碼代碼值。C語言規(guī)定,所有字符常量都作為整型量來處理,在計算機內部,其對應的整數(shù)值就是ACSII字符集中該字符的序號,即&*s中有幾個字符就輸出幾個*。
(36)B 【解析】 結構體類型的變量在程序運行期間要作為一個整體占用連續(xù)的內存單元。
(37)C 【解析】 這是一道考查fread函數(shù)的題。buf是一個指針,fread是讀入數(shù)據(jù)的存放地址;fwrite是輸出數(shù)據(jù)的地址(以上指的是起始地址)。
(38)B 【解析】 本題考查兩個位運算符。
按位異或運算符"^"是雙目運算符,其功能是參與運算的兩數(shù)各對應的二進位相異或,當兩對應的二進位相異或時,結果為1。
左移運算符"<<"是雙目運算符,其功能把"<< "左邊的運算數(shù)的各二進位全部左移若干位,由"<<"右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補0,并且"<<"運算符的優(yōu)先級于"^"。
(39)A 【解析】 在C語言中只有自動變量和寄存器變量在使用時才占用內存單元。
(40)B 【解析】 本題考查的是指向函數(shù)的指針。語句 int (* f)(int);是對一個函數(shù)的聲明,其中f是指向該函數(shù)的指針,該函數(shù)有一個整型的參數(shù),函數(shù)返回值類型為整型。
二、選擇題
(1)【1】 輸出 【解析】 軟件測試用例是為了有效發(fā)現(xiàn)軟件缺陷面編寫的包含測試目的、測試步驟、期望測試結果的特定集合。正確認識和設計軟件測試用例可以提高軟件測試的有效性,便于測試質量的度量,增強測試過程的可管理性。軟件測試用例包括:輸入值集和輸出值集。測試用例是軟件測試的核心。
(2)【2】 前件 【解析】 在樹形結構中,每一個結點只有一個前件,稱為父結點;沒有前件的結點只有一個,稱為樹的根結點;每一個結點可以有多個后件,它們都稱為該結點的子結點;沒有后件的結點稱為葉子結點。
(3)【3】 存儲結構 【解析】 數(shù)據(jù)的邏輯結構是指反映數(shù)據(jù)元素之間邏輯關系的數(shù)據(jù)結構;數(shù)據(jù)的存儲結構是指數(shù)據(jù)的邏輯結構在計算機存儲空間中的存放形式。在數(shù)據(jù)的存儲結構中,不僅要存放各數(shù)據(jù)元素的信息,還需要存放各數(shù)據(jù)元素之間前后件關系的信息。
(4)【4】 一對多(或1∶N) 【解析】 兩個實體集間的聯(lián)系實際上是實體集間的函數(shù)系,這種函數(shù)關系可以有3種,即一對一(1∶1)的聯(lián)系、一對多(1∶N)或多對一(N∶1)的聯(lián)系和多對多(N∶N)的聯(lián)系。
(5)【5】 概念設計階段 【解析】 數(shù)據(jù)庫設計分為以下6個設計階段:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、實施階段及數(shù)據(jù)庫運行和維護階段。
(6)【6】 N 【解析】 函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實現(xiàn)的是在字符'A'的ASCII碼值上加上一個常數(shù),使之變成另一個ASCII碼值,從而輸出字符。
(7)【7】 字符串a和b的長度之和 【解析】 本題首先通過第一個while循環(huán)計算字符串a的長度,再通過第二個循環(huán),將字符串a和b相連,最后返回連接后的總長度。
8)【8】!= 【9】 return j 【解析】 本題程序的流程是:讓i,j都從1開始,其中j用于控制刪除后剩下的數(shù)中的下標,i用于搜索原數(shù)組中的元素。j始終是新數(shù)組已有元素中最后一個元素的下一個元素的下標,所以if()中的條件是a[j-1]!=a[i],其中a[j-1]就是新數(shù)組中的最后一個元素,若條件成立則表示出現(xiàn)了不同的值,所以a[i]要留到新數(shù)組中。注本題中i、j的初值都要從1開始,該算法只能用于數(shù)組已排序的題目中。
(9)【10】 a=2,b=1 【解析】 本題考查了 switch結構的內容。C語言中,程序執(zhí)行完一個case標號的內容后,如果沒有break語句,控制結構會轉移到下一個case繼續(xù)執(zhí)行,因為case 常量表達式只是起語句標號作用,并不是在該處進行條件判斷。本題程序在執(zhí)行完內部switch結構后,繼續(xù)執(zhí)行了外部switch結構的 case 2:分支,最后a和b的值分別為2和1。
(10)【11】 31 【解析】 在函數(shù)調用時,形參值的改變,不會改變實參值。
(11)【12】 *s-*t 【解析】 兩字符串大小比較必須從它們的首字符開始,在對應字符相等情況下循環(huán),直至不相等結束。相等時,若字符串已到了字符串的結束標記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準備比較下一對字符。對應字符不相同,循環(huán)結束。循環(huán)結束時,就以兩個當前字符的差返回,所以在空框處應填入*s-*t,保證在s > t時,返回正值,當s < t時,返回負值。
(12)【13】 22 【解析】 在main函數(shù)中,調用reverse函數(shù)將b數(shù)組中的前8個成員進行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},然后再執(zhí)行for循環(huán)結構,將b[6],b[7]...b[9]的值相加,結果為22。
(13)【14】 PER 【解析】 本題中,typedef聲明新的類型名PER來代替已有的類型名,PER代表上面指定的一個結構體類型,此時,也可以用PER來定義變量。
(14)【15】 “filea.dat”,“r” 【解析】 fopen函數(shù)的調用方式通常為 fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內容,所以空白處應當填入 "filea.dat","r"。
【全國計算機等級考試二級C語言試題一】相關文章:
全國計算機等級考試二級C語言試題二09-18
全國計算機等級考試二級C語言筆試試題06-29
全國計算機等級考試二級C語言06-27
全國計算機等級考試二級C語言考題10-31
全國計算機等級考試二級C++筆試題08-24
全國計算機等級考試二級c語言上機題庫10-28
全國計算機等級考試二級C語言上機精選訓練06-29