版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022年河南省焦作市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序:main(){intx[8]={8,7,6,5,O,0},*s;s=x+3;printf("%d\n",s[2]);}執(zhí)行后輸出結(jié)果是()。
A.隨機(jī)值B.0C.5D.6
2.以下描述中正確的是
A.由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復(fù)合語句
B.do-while循環(huán)由d。開始,用while結(jié)束,在while(表達(dá)式)后面不能寫分號
C.在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進(jìn)行判斷
D.do-while循環(huán)中,根據(jù)情況可以省略while
3.如果有n個節(jié)點用二叉樹來存儲,那么二叉樹的最小深度為()
A.Log2(n+1)B.Log2(n)C.Log2(n-1)D.n/2
4.fscanf函數(shù)的正確調(diào)用形式是()
A.fscanf(fp,格式字符串,輸出表列);
B.fscanf(格式字符串,輸出表列,fp);
C.fscanf(格式字符串,文件指針,輸出表列),
D.fscanf(文件指針,格式字符串,輸入表列);
5.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
6.有以下程序:#include<stdio.h>voidfunl(char*p){char*q;q=p;while(*q!='\0')}(*q)++;q++;}mains(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序執(zhí)行后的輸出結(jié)果是()。
A.ProhsbnB.PrphsbnC.ProgsbnD.Program
7.將一棵有100個結(jié)點的完全二叉樹從上到下,從左到右依次對結(jié)點進(jìn)行編號,根結(jié)點的編號為1,則編號為49的結(jié)點的左孩子的編號為______。
A.98B.99C.50D.48
8.一個順序表的第一個元素的存儲地址是100,每個元素的長度為5,則第7個元素的地址是()。
A.130B.125C.120D.135
9.設(shè)有程序段:intk=12:while(k=1)k=k-1:則下列描述中正確的是()。
A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次
10.插入和刪除只能在一端進(jìn)行線性表,稱為()。
A.隊列B.循環(huán)隊列C.棧D.循環(huán)棧
11.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結(jié)果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234
12.以下敘述中正確的是()。
A.程序設(shè)計的任務(wù)就是編寫程序代碼并上機(jī)調(diào)試
B.程序設(shè)計的任務(wù)就是確定所用數(shù)據(jù)結(jié)構(gòu)
C.程序設(shè)計的任務(wù)就是確定所用算法
D.以上三種說法都不完整
13.軟件調(diào)試的目的是______。
A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.挖掘軟件的潛能
14.以下選項中合法的實型常數(shù)是()。
A.5E2.0B.E-3C.2E0D.1.3E
15.若串S=,software,其子串的數(shù)目是()。
A.8B.37C.36D.9
16.有如下程序段
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
程序運行后輸出的結(jié)果是A.A.63
B.36
C.編譯出錯
D.00
17.有以下程序:#includedstdi0.h>#definef(x)X*x*xmain(){inta=3,S,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",S,t);}程序運行后的輸出結(jié)果是()。A.10,64B.10,10C.64,10D.64,64
18.下列存儲器中,存取速度最快的是()。
A.軟盤B.硬盤C.光盤D.內(nèi)存
19.對于"int*pa[5];"的描述中,正確的是()。
A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素
B.pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量
C.pa[5]表示某個元素的第5個元素的值
D.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針
20.設(shè)有定義:intk=1,m=2;noatf=7;則下列選項中錯誤的表達(dá)式是()。
A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m
二、2.填空題(20題)21.將以下程序段寫成三目運算表達(dá)式:【】。
if(a>b)max=a;
elsemax=b;
22.以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、b、c輸入三角形三條邊長時,確定a、b、c能構(gòu)成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。請?zhí)羁铡?/p>
main()
{floata,b,c;
scanf("%f%f%f",&a,&b,&C);
if(())printf("YES\n");/*a、b、c能構(gòu)成三角形*/
elseprintf("NO\n");/*a、b、c不能構(gòu)成三角形*/
}
23.以下程序的輸出結(jié)果是【】。
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf("%d\n",s);
}
24.若從鍵盤輸入58,則以下程序輸出的結(jié)果是【】。
mam()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
25.以下程序運行后的輸出結(jié)果是______。
main()
{
inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d%d%d\n",a,b,C);
}
26.在程序設(shè)計階段應(yīng)該采取______和逐步求精的方法,把一個模塊的功能逐步分解,細(xì)化為一系列具體的步驟,繼而用某種程序設(shè)計語言寫成程序。
27.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>
main()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",(【】);
for(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=(【】);
}
}
printf("sum=%d,count=%dhn",sum,count);
}
28.下面程序的運行結(jié)果是______。
typedefunionstudent
{
charname[10];
longsno;
charsex;
floatscore[4];
}STU;
main()
{
STUa[5];
printf("%d\n",sizeof(A));
}
29.沒有chara,b;,若要通過a&b運算屏蔽掉a中的其他位,只保留第2位和笫8位(右起為第1位),則b的二進(jìn)制是【】。
30.以下程序段的輸出結(jié)果是【】。
inti=9;
printf("%o\n",i);
31.寫出下列程序的輸出結(jié)果______。
main()
{intn=0;
while(n++<=1);
printf("%d,",n);
printf("%d",n++);
}
32.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。
33.在先左后右的原則下,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。
34.若intx=1,y=2;則計算表達(dá)式y(tǒng)+=y-=x*=y后的y值是()。
35.下面程序的功能是將一個字符串str的內(nèi)容倒序,請?zhí)羁铡?/p>
#inelude<stdio.h>
#include<strins.h>
main()
{inti,j,【】;
charstr[]={"1234567"};
for(i=0,j=strlen(str)【】;i<j;i++,j--)
{k=str[i];str[i]=str[j];str[j]=k;}
printf("%s\n",str);
}
36.深度為5的滿二叉樹有()個葉子節(jié)點。
37.以下程序運行后的輸出結(jié)果是______。
inta=5;
fun(intB)
{staticinta=10;
a+=b++;
printf("%d",A);
}
main()
{intc=20;
fun(C),
a+=C++;
printf("%d\n",A);
}
38.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是【】。
intw[10]={23,54,10,33,47,98,72,80,61),*p=w;
39.診斷和改正程序中錯誤的工作通常稱為【】。
40.當(dāng)運行以下程序時,輸入abcd,程序的輸出結(jié)果是()。insert(charstr[]){inti;i=strlen(str);while(i>0){str[2*i]=str[i];str[2*i-1]='*';i--;}printf("%s\n",str);}main(){charstr[40];scanf("%s\n",str);insert(str);}
三、1.選擇題(20題)41.以下程序的功能是()。#include<stdio.h>main(){FILE*fPl;*fp2;fp1:fopen("file1","r");fp2:fopen("file2","w");while(!Feof(fP1))fputc(fgetc(fP1),fp2);fclose(fP1);fclose(fp2);}
A.將磁盤文件的內(nèi)容顯示在屏幕上
B.將兩個磁盤文件合為一個
C.將一個磁盤文件復(fù)制到另一個磁盤文件中
D.將兩個磁盤文件合并后送屏幕
42.已知year為整型變量,不能使表達(dá)式(year%4==0&&year%100!=O)||year%400==0的值為“真”的數(shù)據(jù)是______。
A.1990B.1992C.1996D.2000
43.在C語言中,函數(shù)的隱含存儲類別是______。
A.autoB.staticC.externD.無存儲類別
44.對建立良好的程序設(shè)計風(fēng)格,下列描述正確的是()。
A.程序應(yīng)該簡單、清晰、可讀性好B.符號名的命名只需要符合語法C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無
45.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}該程序的輸出結(jié)果是______。
A.2B.4C.6D.8
46.請讀程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c);}若運行時從鍵盤上輸入9876543210,則上面程序的輸出結(jié)果是______。
A.a=98,b=765,c=4321
B.a=10,b=432,c=8765
C.a=98,b=765.000000,c=4321.000000
D.a=98,b=765.0,c=4321.0
47.以下程序運行后,輸出結(jié)果為______。main(){inta[2][3]={1,3,5,7,9,11),*s[2],**pp,*p;s[0]=a[0],s[1]=a[1];pp=s;p=(int*)malloc(sizeof(int));**pp=s[1][1];p=*pp;printf("%d\n",*p);}
A.1B.7C.9D.11
48.有如下程序:#include<stdio.h>main(){intx=1,a=0,b=0;switch(x){casc0:b++;case1:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
49.若fp是指向某文件的指針,且已讀到文件末尾,則函數(shù)feof(fp)的返回值是
A.EOFB.-1C.1D.NULL
50.下列選項中,不能用作標(biāo)識符的是A._1234_B._1_2C.int_2_D.2_int_
51.對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是()。
A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2
52.軟件生命周期中花費費用最多的階段是
A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護(hù)
53.若fp是指向某文件的指針,且已讀到此文件末尾,則庫函數(shù)feof(fp)的返回值是()
A.EOFB.0C.非零值D.NULL
54.已定義c為字符型變量,則下列語句中正確是______。
A.c='97';B.c="97";C.c=97;D.c="a";
55.下列能正確定義一維數(shù)組的選項是()。
A.inta[5]={0,1,2,3,4,5}
B.chara[]={0,1,2,3,4,5};
C.chara={'A','B','C'};
D.inta[5]="0123";
56.設(shè)有下列定義:structsk{intm;floatx;)dara,*q;若要使q指向data中的m域,正確的賦值語句是()。
A.q=&data.m;
B.*q=data.m;
C.q=(structsk*)&data.m;
D.q=(structsk*)data.m;
57.以下程序中函數(shù)reverse的功能是對a所指數(shù)組中的內(nèi)容進(jìn)行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-1];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}程序運行后的輸出結(jié)果是______。
A.22B.10C.34D.30
58.若有下列定義,則對a數(shù)組元素地址的正確引用是()。
inta[5],*p=a;
A.p+5B.*a+1C.&a+1D.&a[0]
59.以下有關(guān)宏替換的敘述不正確的是()。
A.雙引號中出現(xiàn)的宏名不替換B.使用宏定義可以嵌套C.宏定義儀儀是符號替換D.宏名必須用大寫字母表示
60.結(jié)構(gòu)化程序設(shè)計主要強(qiáng)調(diào)的是()。
A.程序的規(guī)模B.程序的效率C.程序設(shè)計語言的先進(jìn)性D.程序的易讀性
四、選擇題(20題)61.有以下程序:
i
程序運行后的輸出結(jié)果是()。。,
A.3,4B.4,1C.2,3D.1,2
62.請選出以下語句的輸出結(jié)果Printf("%d\n",strlen("\t\"\065\xff\n"));
A.5B.14C.8D.輸出項不合法,無正常輸出
63.數(shù)據(jù)庫設(shè)計中反映用戶對數(shù)據(jù)要求的模式是()。
A.內(nèi)模式B.概念模式C.外模式D.設(shè)計模式
64.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}執(zhí)行后的輸出結(jié)果是()。A.6B.7C.8D.9
65.有如下程序:
main
{inta=2,b=-1.c=2;
if(a<b)if(b<0)c=0;
elsec++;
printf("%d\n",c);
}
該程序的輸出結(jié)果是()。A.A.0B.1C.2D.3
66.
67.
68.
69.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。
A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);
70.在數(shù)據(jù)庫設(shè)計中,將E—R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()。
A.需求分析階段B.概念設(shè)計階段C.邏輯設(shè)計階段D.物理設(shè)計階段
71.軟件生命周期中所花費用最多的階段是()。
A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護(hù)
72.
73.以下敘述中錯誤的是()。A.可以通過typedef增加新的類型
B.可以用typedef將已存在的類型用一個新的名字來代表
C.用typedef定義新的類型名后,原有類型名仍有效
D.用typedd可以為各種類型起別名,但不能為變量起別名
74.下列判斷正確的是()。A.A.chara="ABCD":等價于char*a;*a="ABCD":
B.charstr[10]={"ABCD"}:等價于charstr[10];str[]={"ABCD"};
C.char*s="ABCD":等價于chars;*s="ABCD";
D.charc[5]="ABCD",d[5]="ABCD":等價于charc[5]-d[5]="ABCD";
75.結(jié)構(gòu)化程序設(shè)計的3種結(jié)構(gòu)是()。
A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)
B.分支結(jié)構(gòu)、等價結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價結(jié)構(gòu)
D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
76.以下定義語句中正確的是()。
77.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A.軟件集成測試計劃B.軟件詳細(xì)設(shè)計說明書C.用戶手冊D.軟件需求規(guī)格說明書
78.以下敘述中正確的是()。
A.在C語言中,預(yù)處理命令行都以“#”開頭
B.預(yù)處理命令行必須位于c源程序的起始位置
C.#include<stdi0.h>必須放在C程序的開頭
D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能
79.以下程序運行時,若從鍵盤輸入l02030<回車>,輸出的結(jié)果是()。
A.10200B.102030C.10300D.10030
80.有以下程序:
voidfunl(char*p)
{char*q;
q=P;
while(*q!='\O')
{(*q)++;q++;}
}
main
{chara[]={"Program"),*P;
p=&a[3];funl(p);
printf("%s\n",a);
}
程序執(zhí)行后的輸出結(jié)果是()。A.A.ProhsbnB.PrphsbnC.ProgsbnD.Program
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:求兩個非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若num1和num2分別為49和21,則輸出的最大公約數(shù)為7;若num1和num2分別為27和81,則輸出的最大公約數(shù)為27。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),該函數(shù)的功能是:實現(xiàn)B=A+A',即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.B解析:通過賦值語句“s=x+3”,使指針變量s指向數(shù)組元素x[3],輸出語句中的spl等價于*(s+2),即x[5]值為0。所以,B選項為所選。
2.C解析:do-while語句的一般形式為:do循環(huán)體語句while(表達(dá)式);,其中循環(huán)體語句可以是復(fù)合型語句,但必須用花括號括起來。while后必須要有分號作為語句的結(jié)束,在do-while循環(huán)中,不可以省略while。
3.A
4.D
5.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
6.A解析:在main函數(shù)中,p=&a[3]說明指針p指向a數(shù)組的第4個字符(即字符\'g\');fun1中的q=p意味著指針q也指向了a數(shù)組的第4個字符。執(zhí)行while語句,表達(dá)式(*q)++使\'g\'+1,使\'g\'變成了\'h\';表達(dá)式q++使q指向a[4]的起始地址。繼續(xù)執(zhí)行while語句,直到遇到\'\\0\'結(jié)束循環(huán),返回形參。最終得到的結(jié)果是從字符串'Program\'的第4個字符開始,每個字符加1。
7.A
8.A
9.C本題考查while,while循環(huán)表達(dá)式k-1是個賦值表達(dá)式而不是邏輯表達(dá)式,k的初值為l2不符合循環(huán)條件,所以循環(huán)體語句一次也不執(zhí)行。
10.C
11.D
12.D\n程序設(shè)計是指設(shè)計、編制、調(diào)試程序的方法和過程。內(nèi)容涉及有關(guān)的基本概念、工具、方法以及方法學(xué)等。程序設(shè)計通常分為問題建摸、算法設(shè)計、編寫代碼和編譯調(diào)試4個階段。
\n
13.B解析:在對程序進(jìn)行測試時會發(fā)現(xiàn)錯誤,這就要進(jìn)行程序調(diào)試(排錯)。程序調(diào)試活動由三部分組成:一是錯誤定位,根據(jù)錯誤的外部表現(xiàn)形式,確定程序中出錯的位置,找出錯誤的內(nèi)在原因;二是對程序進(jìn)行修改,排除這個錯誤;三是進(jìn)行回歸測試,防止引進(jìn)新的錯誤。所以程序調(diào)試的目的就是診斷和改正程序中的錯誤。軟件調(diào)試不能改善軟件的性能,也不能挖掘軟件的潛能。
14.C解析:在C語言中,實數(shù)有兩種表示形式:十進(jìn)制數(shù)形式與指數(shù)形式。
一般形式的實數(shù):小數(shù)形式的實數(shù)由整數(shù)部分、小數(shù)點和小數(shù)部分組成(必須要有小數(shù)點),
指數(shù)形式的小數(shù);指數(shù)形式的實數(shù)由尾數(shù)部分、e(E)和指數(shù)部分組成(字母e或E的前后必須要有數(shù)字,且其后面的指數(shù)必須為整數(shù))。
選項A中,5E2.0中E后面的2.0不是整數(shù);選項B中,E前面沒有數(shù)字:選項D中,E后面沒有數(shù)字。最終可以判斷選項C正確。
15.B
16.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進(jìn)行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實參指向的變量的值,不能使實參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。
在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。
17.A本題考查帶參數(shù)的宏定義。第一次函數(shù)調(diào)用求S的值,x=a+1,所以X*X*X應(yīng)寫成a+1*a+1*a+1,沒有括號優(yōu)先級,結(jié)果為l0,第二次函數(shù)調(diào)用x*X*X可寫成(a+1)*(a+1)*(a+1),所以結(jié)果為43=64。
18.D\nD【解析】存儲器中.存取速度最快的是內(nèi)存。
\n
19.D
20.C解析:在C語言中,求余運算符“%”兩邊的運算對象都應(yīng)為整型數(shù)據(jù),所以需要對變量f進(jìn)行強(qiáng)制類型轉(zhuǎn)換,正確的寫法為k%(int)f。在C語言中,邏輯運算符與賦值運算符、算術(shù)運算符、關(guān)系運算符之間從高到低的運算優(yōu)先次序是:!(邏輯“非”)、算術(shù)運算符、關(guān)系運算符、&&(邏輯“與”)、‖(邏輯“或”)、賦值運算符。根據(jù)運算符的優(yōu)先級與結(jié)合性,對于選項A),先計算k>=k的值(為真,即1),再用1對k進(jìn)行賦值。對于選取項B),先計算k什的值,再對其取負(fù)數(shù)。對于選項D),先計算k>=f的值(為假,即0),再用0與m進(jìn)行比較,故最終結(jié)果為0。
21.max=(a>b)?a:bmax=(a>b)?a:b解析:本題考查三目運算符的用法,條件表達(dá)式的一般形式為:
表達(dá)式1?表達(dá)式2:表達(dá)式3
所以,本題可以寫成(a>b)?a:b,它是一個條件表達(dá)式,執(zhí)行順序是:如果條件(a>b)為真,則條件表達(dá)式取值a,否則取值b。
22.(a+b>C)&&(a+c>B)&&(b+c>A)(a+b>C)&&(a+c>B)&&(b+c>A)解析:本題主要考查運算符邏輯與“&&”的用法。
23.2222解析:在main函數(shù)中,調(diào)用reverse函數(shù)將b數(shù)組中的前8個成員進(jìn)行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},然后再執(zhí)行for循環(huán)結(jié)構(gòu),將b[6],b[7]…b[9]的值相加,結(jié)果為22。
24.585858585858解析:在程序小,執(zhí)行scanf()語句后,a被賦值為58。接著執(zhí)行第一個if語句,因為,a=58>50,執(zhí)行第一個if語句后面的輸出語句,輸出58;接著執(zhí)行第二個if語句,因為,a=58>40,執(zhí)行第二個if語句后面的輸出語句,輸出58;接著執(zhí)行第三個if語句,因為,a=58>30,執(zhí)行第三個if語句后面的輸出語句,輸出58,所以最后的輸出為585858。
25.252137252137解析:本題中先定義了整型變量a、b和c,然后分別給賦值a為25,b為八進(jìn)制的025,c為十六進(jìn)制0x25。然后調(diào)用pruntf()函數(shù)將a、b和c分別用十進(jìn)制輸出,且中間用空格隔開,八進(jìn)制025轉(zhuǎn)換為十進(jìn)制的值為21,十六進(jìn)制的0x25轉(zhuǎn)換為十進(jìn)制的值為37,故最后的輸出結(jié)果為252137。
26.自頂向下自頂向下解析:在程序設(shè)計時,應(yīng)先考慮總體,后考慮細(xì)節(jié),逐步使問題具體化,對復(fù)雜的問題,應(yīng)該設(shè)計一些子目標(biāo)作為過渡,上述方法概括為:自頂向下,逐步細(xì)化。
27.&a[i]或a+Ia[i]或*(a+i)&a[i]或a+I\r\na[i]或*(a+i)解析:主函數(shù)中一開始定義了一個長度為20的整形數(shù)組,然后通過一個循環(huán),循環(huán)20次給它的每個元素賦初值,所以在第一個空格處應(yīng)填各個元素的地址,即填&a[i]或a+i,然后再通過一個循環(huán)執(zhí)行20次,每循環(huán)一次,先判斷該循環(huán)是否大于0,如果大于0將其累加到變量sum中,所以第二個空格處應(yīng)該填入數(shù)組元素,即應(yīng)該填a[i]或*(a+i)。
28.8080解析:本題考查的知識點是共用體數(shù)組變量所占內(nèi)存的長度。數(shù)組a是共用體變量,共用體類型變量所占的內(nèi)存長度為最大成員的長度,即單精度數(shù)組的長度,為4×4=16,因此,數(shù)組a所占的內(nèi)存長度為5×16=80,所以最后輸出的s的值為80。
29.1000001010000010解析:運算“&”的規(guī)則是只有當(dāng)兩個相應(yīng)的二進(jìn)制位都為1時,該位的結(jié)果才為1。要保留第2、8位,只要將其與二進(jìn)制數(shù)10000010相與。
30.1111解析:本題考核的知識點是printf()函數(shù)的輸出格式。本題中定義了一個整型變量i并賦初值為9,然后要求以八進(jìn)制輸出i的值,9的八進(jìn)制數(shù)的表示為11。
31.333,3解析:本題在while(n++<=1)語句后,直接加了分號,說明如果while()的條件為真時,該循環(huán)什么都不做:n++是先取n的當(dāng)前值和1做比較,然后再將n加1。第一次循環(huán),n=0時,循環(huán)條件n++=<1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時,循環(huán)條件n++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時,循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時仍將n加1,得到n=3.退出循環(huán)后執(zhí)行printf語句,第二個printf語句輸出n++,是先輸出n的當(dāng)前值3,然后再將n加l,即程序結(jié)束后得到n=4,但輸出的是3。
32.非線性結(jié)構(gòu)非線性結(jié)構(gòu)
33.中序中序解析:在先左后右的原則下,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷.前序遍歷是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點、遍歷左了樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。后序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點,最后遍歷左子樹;并且遍歷左、右子樹時,仍然光遍歷右子樹,然后訪問根結(jié)點,最后遍歷左子樹。
34.0
35.k-1k-1解析:第一處應(yīng)該是定義的某個變量,讀程序可知,變量k沒有定義,所以此處應(yīng)填入k。字符串的倒序,就是將首尾對應(yīng)的字符(數(shù)組元素)兩兩交換。可用兩個游標(biāo)變量i和j分別代表前端元素的下標(biāo)和后端元素的下標(biāo),交換以這兩個變量值為下標(biāo)的元素str[i]和str[j]。開始時,i的值為0,j的值為字符串末元素的下標(biāo)(字符串長度減1)。每次交換后,i增1,j減1。繼續(xù)交換的條件是str[i]仍然位于str[j]的前面,即i<j。字符串末元素的下標(biāo)是它的長度減1,所以在第二處應(yīng)填入-1。
36.1616解析:在滿二叉樹中,每一層上的節(jié)點數(shù)都達(dá)到最大值,在第k層上有2[k-1]個節(jié)點,且深度為m的滿二叉樹有2[m]-1個節(jié)點,深度為5的滿二叉樹葉子節(jié)點數(shù)為2[5-1]=16。
37.30253025解析:本題考核的知識點是變量的存儲屬性和算術(shù)運算的應(yīng)用。本題涉及了自動變量、靜態(tài)變量和外部變量。外部變量是定義在所有函數(shù)之外的變量,本題中inta=5定義了一個外部變量a,它是一個全局變量,即作用域是從定義的位置開始到本文件的結(jié)束;靜態(tài)變量的存儲空間在程序的整個運行期間是固定的(static),本題函數(shù)fun()中staticinta=10定義個一個靜態(tài)變量a,此靜態(tài)變量a是個靜態(tài)的局部變量,即它的值只能在本函數(shù)中使用;自動變量是C程序中使用最多的一種變量,它的建立和撤消都是由系統(tǒng)在程序執(zhí)行過程中自動進(jìn)行的,auto是自動變量的存儲類別標(biāo)識符,如果省略auto,系統(tǒng)隱含認(rèn)為此變量為auto,本題中main()中intc=20定義了一個自動變量c,此自動變量c是個靜態(tài)的局部變量.算術(shù)運算中a+=b++相當(dāng)于a=a+b,b=b+1.所以,在第一個ptine('%d',a)中a=a+b=10+20=30,第二個printf('%d',a)中a=a+c=5+20=25,即輸出3025。
38.p[5]或*(p+5)p[5]或*(p+5)解析:98是數(shù)組w的第5個元素(最開始的為第0個),而通過*p=w已經(jīng)將p指向了數(shù)組w,要想不移動指針p而引用98,可以有以下兩種寫法:p[5]、*(p+5)。
39.程序調(diào)試程序調(diào)試解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調(diào)試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調(diào)試主要在開發(fā)階段。
40.a*b*c*d*a*b*c*d*解析:本題考查的是函數(shù)與一個簡單的算法結(jié)合在一起的應(yīng)用。首先定義一個int型變量來存放字符串str的長度,執(zhí)行while條件語句。通過分析可知,字符串2*i項的值可由第i項的值得到;第2*i-1項直接賦值為*,i遞減,如此反復(fù)直到不滿足i>0的條件時,輸出運行后的字符串。
41.C解析:程序首先定義了兩個文件類型的指針fp1、fp2。為讀打開文件filel,并讓指針fp1指向該文件;為寫打開文件file2,并讓指針fp2指向該文件。循環(huán)執(zhí)行從文件file1中讀取一個字符,輸出到文件file2中,直到文件file1結(jié)束。因此程序的功能是將文件file1中的內(nèi)容復(fù)制到文件file2中。
42.A
43.C解析:C語言規(guī)定,只要在定義函數(shù)時不進(jìn)行存儲類型的顯式說明,函數(shù)的存儲類型就隱含為外部類型,即extern型,外部類型允許其他文件中的函數(shù)調(diào)用。
44.A解析:“清晰第一,效率第二”,在考慮到程序的執(zhí)行效率的同時,一定要保證程序清晰、可讀;對符號名的命名,除了要符合語法要求外,還要具有一定的含義;程序的注釋可以幫助程序員理解程序,不是可有可無的。
45.B解析:函數(shù)fib內(nèi)部有兩個遞歸調(diào)用,當(dāng)n=3時,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值為4。
46.C解析:scanf()把用戶從鍵盤錄入的數(shù)字的第1、2位存入整型變量a;把第3、4、5位存入單精度實型變量b,把第6、7、8、9位存入單精度實型變量c,用戶錄入的第10位被scanf()遺棄。這時變量a、b、c的值分別為:98、765.000000、4321.000000。
47.C解析:s是一個含有兩個元素的指針數(shù)組,pp是一個指向指針變量的指針,s[0]是指向二維數(shù)組a行下標(biāo)為0的元素的首地址,即a[0][0]的地址,s[1]為a[1][0]的地址。pp的值為s[0]的地址。**pp=s[1][1]后,a[0][0]的值將被賦值為a[1][1]的值,執(zhí)行p=*pp;后,p中將是s[0]的值,最后的輸出語句將輸出地址s[0]所指向的數(shù)據(jù),即a[0][0]。
48.A解析:該程序的關(guān)鍵是要搞清楚程序執(zhí)行的路線。由于x的值等于1,所以在switch語句中,程序從case1后面的語句開始執(zhí)行。由于case1后面沒有break語句,所以程序順序執(zhí)行case2后面的語句。程序共執(zhí)行了三條語句:a++;a++;b++;所以,變量a和b最后的值分別為2和l。選項A)正確。
49.C解析:EOF是指向文本文件的結(jié)束標(biāo)志,NULL是打開文件錯誤時的返回值。feof(fp)用來判斷文件是否在文件末尾,文本文件和二進(jìn)制文件均可以使用此函數(shù),如果遇到文件結(jié)束就返回1,否則返回0。
50.D解析:本題考核的知識點是用戶的標(biāo)識符。在C語言中,合法的標(biāo)識符由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或者下劃線,如:acd,d_ad、_adf124,_124等都是合法的標(biāo)識符號.而2asdf、_sd/=都不是合法的標(biāo)識符.在C語言中大寫字母和小寫字母被認(rèn)為是兩個不同的字符,如:ACD和acd是兩個不同的標(biāo)識符號。選項D中用下劃線作為第一個字符,這是不合法的,故選項D不正確,所以,4個選項中選項D符合題意。
51.DD。【解析】本題主要考查對排序算法的理解。冒泡排序法首先將第一個記錄的關(guān)鍵字與第二個記錄的關(guān)鍵字進(jìn)行比較,若逆序則交換,然后比較第二個與第三個,以此類推,直至第n-1個與第n個記錄的關(guān)鍵字進(jìn)行比較。第一趟冒泡排序使最大的關(guān)鍵字元素放到最后。以此類推,進(jìn)行第2~n次冒泡排序。如果在排序過程中不存在逆序,則排序結(jié)束。在最壞情況下,冒泡排序中,若初始序列為“逆序”序列,則需要比較n(D-1)/2次。快速排序是對冒泡排序的一種改進(jìn)。它的基本思想是:通過一趟排序?qū)⒋庞涗浄指畛瑟毩⒌膬刹糠郑渲幸徊糠钟涗浀年P(guān)鍵字比另一部分記錄的關(guān)鍵字小,然后分別對這兩部分記錄繼續(xù)進(jìn)行排序,最終達(dá)到整個記錄有序。對于快速排序,當(dāng)初始記錄序列按關(guān)鍵字有序或基本有序時,快速排序退化為冒泡排序,最壞情況下比較次數(shù)為n(n-1)/2。
52.D解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護(hù)3個階段。本題中,詳細(xì)設(shè)計、軟件編碼和軟件測試都屬于軟件開發(fā)階段;維護(hù)是軟件生命周期的最后一個階段,也是持續(xù)時間最長,花費代價最大的一個階段,軟件工程學(xué)的一個目的就是提高軟件的可維護(hù)性,降低維護(hù)的代價。
53.C
54.C解析:\'97\'不是字符變量,選項A錯誤;'97'是字符串,選項B錯誤;'a'是字符串,選項D錯誤;正確答案是選項C。
55.B解析:在定義數(shù)組時,如果賦給的初始值個數(shù)大于數(shù)值的長度,這樣就會越界,因此選項A)錯誤;選項C)中定義的是一個字符變量C;選項D)中整型數(shù)組,中只能存儲整型數(shù)據(jù),而不能存儲字符串常量“0123”。
56.C解析:利用強(qiáng)制類型轉(zhuǎn)換(structsk*),把整數(shù)型地址&data.m轉(zhuǎn)換成結(jié)構(gòu)體變量指針賦給結(jié)構(gòu)體指針變量q。
57.A解析:主函數(shù)調(diào)用reverse時。實參為b和8,即reverse函數(shù)的功能是將數(shù)組b中的前8個元素逆置,其余元素不變。因此函數(shù)調(diào)用結(jié)束后數(shù)組b的內(nèi)容為:8、7,6、5、4、3、2、1、9、10。main函數(shù)中for循環(huán)語句的功能是求b[6]元素到b[9]元素的和,即s=b[6]+b[7]+b[8]+b[9]=2+1+9+10=22,因此printf語句的輸出結(jié)果是22。
58.D解析:本題考查如何引用數(shù)組元素的地址。
選項A)中,p+5引用的是a[5]的地址,而數(shù)組a只有5個元素,即a[0]、a[1]、a[2];a[3]、a[4],所以引用錯誤;選項B)中,*a+1指的是將數(shù)組a的第一個元素加1;選項C)中,這種引用方式錯誤;選項D)中,&a[0]引用的是數(shù)組的首地址。
59.D解析:本題考查宏替換的規(guī)則。宏替換分為簡單的字符替換和帶參數(shù)的宏替換兩類。使用宏時應(yīng)注意以下幾點:①定義僅僅是符號替換,不是賦值語句,因此不做語法檢查;②為了區(qū)別程序中其他的標(biāo)識符,宏名的定義通常用大寫字母,但不是必須用大寫;③雙引號中出現(xiàn)的宏名不替換;④使用宏定義可以嵌套,即后定義的宏中可以使用先定義的宏。
60.D解析:程序不僅是編寫完就結(jié)束了,為了測試和維護(hù)程序,往往還有其他人閱讀和跟蹤程序,因此程序設(shè)計的風(fēng)格應(yīng)該強(qiáng)調(diào)簡單和清晰,即程序的易讀性,“清晰第一,效率第二”。
61.C本題考查結(jié)構(gòu)體數(shù)組的相關(guān)操作,dt為結(jié)構(gòu)體數(shù)組,那么指針P指向了結(jié)構(gòu)體數(shù)組的一個元素,所以P一>x為1,P一>Y為2,結(jié)果為2,3。選項C正確。
62.A解析:本題考查用strlen函數(shù)計算字符串長度的方法。該字符串中包含的字符是:\'\\t\'(跳格符)、\'\\'\'(雙引號)、\'\\065\'(ASCII值為八進(jìn)制065,也即+進(jìn)制為51的字符)、\'\\xff\'(ASCII值為+六進(jìn)制ff,也即+進(jìn)制為255的字符)、\'\\n\'(換行符)。
63.C數(shù)據(jù)庫系統(tǒng)的三級模式是概念模式、外模式和內(nèi)模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,給出了每個用戶的局部數(shù)據(jù)描述,所以選擇C。內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法。
64.Csum=fun((a++,b++,a+b),c++)中a++,b++,a+b為逗號表達(dá)式,運算后取a+b的值為5,c++為3,故函數(shù)調(diào)用后輸出結(jié)果為8。
65.Celse與離它最近的if構(gòu)成if…else語句,而當(dāng)a為2時,第一個if語句不成立,因此什么也不做,即c的值仍然為2,故選擇C選項。
66.C
67.C
68.A
69.B在C語名中規(guī)定進(jìn)行強(qiáng)制類型轉(zhuǎn)換的格式是:(類型名)變量名;并且給表達(dá)式賦值。
70.CC)【解析】邏輯結(jié)構(gòu)設(shè)計的任務(wù):概念結(jié)構(gòu)是各種數(shù)據(jù)模型的共同基礎(chǔ),為了能夠用某一DBMS實現(xiàn)用戶需求,還必須將概念結(jié)構(gòu)進(jìn)一步轉(zhuǎn)化為相應(yīng)的數(shù)據(jù)模型,這正是數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計所要完成的任務(wù)。它包括從E—R圖向關(guān)系模式轉(zhuǎn)換和邏輯模式規(guī)范化及調(diào)整、實現(xiàn)。
71.D解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護(hù)3個階段。本題中,詳細(xì)設(shè)計、軟件編碼和軟件測試都屬于軟什開發(fā)階段;維護(hù)是軟件生命周期的最后一個階段,也是持續(xù)時間最長,花費代價最大的一個階段.軟件工程學(xué)的一個目的就是提高軟件的可維護(hù)性,降低維護(hù)的代價。
72.D
73.Atypede偽原類型起個別名,并沒有增加新的類型,所以答案選擇A)。
74.Da=“ABCD”書寫錯誤,因為“=”左邊不能出現(xiàn)常量;數(shù)組名S是代表S數(shù)組首地址常量,而不是變量;字符串只有在定義時維數(shù)可以省略。
75.D結(jié)構(gòu)化程序設(shè)計的基本要點:①采用自頂向下、逐步求精的程序設(shè)計方法;②任何程序都可由順序、選擇和循環(huán)3種基本控制結(jié)構(gòu)構(gòu)造。
76.A定義變量時不能連等,所以B)錯誤,c)選項中,b是指針,c定義為指向指針的指針才可以接受&b,所以c)錯誤,D)選項,b=1.1前沒有類型名,所以錯誤。
77.D需求分析階段的工作可以概括為:需求獲取、需求分析、編寫需求規(guī)格說明書、需求評審四個方面。所以選擇D。
78.A預(yù)處理命令是以“#”號開頭的命令,它們不是C語言的可執(zhí)行命令,這些命令應(yīng)該在函數(shù)之外書寫,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、c錯誤。C語言的預(yù)處理能夠?qū)崿F(xiàn)宏定義和條件編譯等功能,所以D錯誤。
79.C根據(jù)scanf函數(shù)附加的格式說明字符,可知%后的”*”是附加說明符,用來表示跳過它相應(yīng)的數(shù)據(jù),所以本題中忽略第2個數(shù)據(jù)的輸入,則i=10,j=30,k的值不變,還是0,所以輸出結(jié)果是l0300。
80.A本題中使用了函數(shù)的調(diào)用,由{unl函數(shù)中的while循環(huán)可知,循環(huán)的作用是為了把q所指向的內(nèi)容增加l,而從主函數(shù)傳到函數(shù)時是從下標(biāo)為3開始傳,因此當(dāng)調(diào)用函數(shù)執(zhí)行完后,傳過去的字符串為'hsbn',前面不變。
81.
【解析】本題是考查常用的求最大公約數(shù)的算法,其過程是設(shè)兩數(shù)為a、b,若a大于b.則用a除以b,否則用b除以a,用除得的余數(shù)再去除以除數(shù),再得到一個余數(shù),一直除下去,直到余數(shù)為0,即可求出最大公約數(shù)。要實現(xiàn)變量a、b互換,應(yīng)該使用t=a;a=b;b=t;,此處t為中問變量;返回值為最大公約數(shù),因此應(yīng)返回除數(shù)b,而不是a。
82.
【解析】矩陣與其逆置矩陣的關(guān)系為:逆置矩陣中某一位置上的元素值為原矩陣中,行下標(biāo)與列下標(biāo)互換后的位置上的元素。根據(jù)這個特點求出各個位置上逆置矩陣中對應(yīng)的值,進(jìn)行相加并放在該位置上。
2022年河南省焦作市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序:main(){intx[8]={8,7,6,5,O,0},*s;s=x+3;printf("%d\n",s[2]);}執(zhí)行后輸出結(jié)果是()。
A.隨機(jī)值B.0C.5D.6
2.以下描述中正確的是
A.由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復(fù)合語句
B.do-while循環(huán)由d。開始,用while結(jié)束,在while(表達(dá)式)后面不能寫分號
C.在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進(jìn)行判斷
D.do-while循環(huán)中,根據(jù)情況可以省略while
3.如果有n個節(jié)點用二叉樹來存儲,那么二叉樹的最小深度為()
A.Log2(n+1)B.Log2(n)C.Log2(n-1)D.n/2
4.fscanf函數(shù)的正確調(diào)用形式是()
A.fscanf(fp,格式字符串,輸出表列);
B.fscanf(格式字符串,輸出表列,fp);
C.fscanf(格式字符串,文件指針,輸出表列),
D.fscanf(文件指針,格式字符串,輸入表列);
5.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
6.有以下程序:#include<stdio.h>voidfunl(char*p){char*q;q=p;while(*q!='\0')}(*q)++;q++;}mains(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序執(zhí)行后的輸出結(jié)果是()。
A.ProhsbnB.PrphsbnC.ProgsbnD.Program
7.將一棵有100個結(jié)點的完全二叉樹從上到下,從左到右依次對結(jié)點進(jìn)行編號,根結(jié)點的編號為1,則編號為49的結(jié)點的左孩子的編號為______。
A.98B.99C.50D.48
8.一個順序表的第一個元素的存儲地址是100,每個元素的長度為5,則第7個元素的地址是()。
A.130B.125C.120D.135
9.設(shè)有程序段:intk=12:while(k=1)k=k-1:則下列描述中正確的是()。
A.while循環(huán)執(zhí)行10次B.循環(huán)是無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語句執(zhí)行一次
10.插入和刪除只能在一端進(jìn)行線性表,稱為()。
A.隊列B.循環(huán)隊列C.棧D.循環(huán)棧
11.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",執(zhí)行其結(jié)果為()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234
12.以下敘述中正確的是()。
A.程序設(shè)計的任務(wù)就是編寫程序代碼并上機(jī)調(diào)試
B.程序設(shè)計的任務(wù)就是確定所用數(shù)據(jù)結(jié)構(gòu)
C.程序設(shè)計的任務(wù)就是確定所用算法
D.以上三種說法都不完整
13.軟件調(diào)試的目的是______。
A.發(fā)現(xiàn)錯誤B.改正錯誤C.改善軟件的性能D.挖掘軟件的潛能
14.以下選項中合法的實型常數(shù)是()。
A.5E2.0B.E-3C.2E0D.1.3E
15.若串S=,software,其子串的數(shù)目是()。
A.8B.37C.36D.9
16.有如下程序段
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
程序運行后輸出的結(jié)果是A.A.63
B.36
C.編譯出錯
D.00
17.有以下程序:#includedstdi0.h>#definef(x)X*x*xmain(){inta=3,S,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",S,t);}程序運行后的輸出結(jié)果是()。A.10,64B.10,10C.64,10D.64,64
18.下列存儲器中,存取速度最快的是()。
A.軟盤B.硬盤C.光盤D.內(nèi)存
19.對于"int*pa[5];"的描述中,正確的是()。
A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素
B.pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量
C.pa[5]表示某個元素的第5個元素的值
D.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針
20.設(shè)有定義:intk=1,m=2;noatf=7;則下列選項中錯誤的表達(dá)式是()。
A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m
二、2.填空題(20題)21.將以下程序段寫成三目運算表達(dá)式:【】。
if(a>b)max=a;
elsemax=b;
22.以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當(dāng)給a、b、c輸入三角形三條邊長時,確定a、b、c能構(gòu)成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。請?zhí)羁铡?/p>
main()
{floata,b,c;
scanf("%f%f%f",&a,&b,&C);
if(())printf("YES\n");/*a、b、c能構(gòu)成三角形*/
elseprintf("NO\n");/*a、b、c不能構(gòu)成三角形*/
}
23.以下程序的輸出結(jié)果是【】。
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf("%d\n",s);
}
24.若從鍵盤輸入58,則以下程序輸出的結(jié)果是【】。
mam()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
25.以下程序運行后的輸出結(jié)果是______。
main()
{
inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d%d%d\n",a,b,C);
}
26.在程序設(shè)計階段應(yīng)該采取______和逐步求精的方法,把一個模塊的功能逐步分解,細(xì)化為一系列具體的步驟,繼而用某種程序設(shè)計語言寫成程序。
27.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?zhí)羁铡?/p>
main()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",(【】);
for(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=(【】);
}
}
printf("sum=%d,count=%dhn",sum,count);
}
28.下面程序的運行結(jié)果是______。
typedefunionstudent
{
charname[10];
longsno;
charsex;
floatscore[4];
}STU;
main()
{
STUa[5];
printf("%d\n",sizeof(A));
}
29.沒有chara,b;,若要通過a&b運算屏蔽掉a中的其他位,只保留第2位和笫8位(右起為第1位),則b的二進(jìn)制是【】。
30.以下程序段的輸出結(jié)果是【】。
inti=9;
printf("%o\n",i);
31.寫出下列程序的輸出結(jié)果______。
main()
{intn=0;
while(n++<=1);
printf("%d,",n);
printf("%d",n++);
}
32.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。
33.在先左后右的原則下,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。
34.若intx=1,y=2;則計算表達(dá)式y(tǒng)+=y-=x*=y后的y值是()。
35.下面程序的功能是將一個字符串str的內(nèi)容倒序,請?zhí)羁铡?/p>
#inelude<stdio.h>
#include<strins.h>
main()
{inti,j,【】;
charstr[]={"1234567"};
for(i=0,j=strlen(str)【】;i<j;i++,j--)
{k=str[i];str[i]=str[j];str[j]=k;}
printf("%s\n",str);
}
36.深度為5的滿二叉樹有()個葉子節(jié)點。
37.以下程序運行后的輸出結(jié)果是______。
inta=5;
fun(intB)
{staticinta=10;
a+=b++;
printf("%d",A);
}
main()
{intc=20;
fun(C),
a+=C++;
printf("%d\n",A);
}
38.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是【】。
intw[10]={23,54,10,33,47,98,72,80,61),*p=w;
39.診斷和改正程序中錯誤的工作通常稱為【】。
40.當(dāng)運行以下程序時,輸入abcd,程序的輸出結(jié)果是()。insert(charstr[]){inti;i=strlen(str);while(i>0){str[2*i]=str[i];str[2*i-1]='*';i--;}printf("%s\n",str);}main(){charstr[40];scanf("%s\n",str);insert(str);}
三、1.選擇題(20題)41.以下程序的功能是()。#include<stdio.h>main(){FILE*fPl;*fp2;fp1:fopen("file1","r");fp2:fopen("file2","w");while(!Feof(fP1))fputc(fgetc(fP1),fp2);fclose(fP1);fclose(fp2);}
A.將磁盤文件的內(nèi)容顯示在屏幕上
B.將兩個磁盤文件合為一個
C.將一個磁盤文件復(fù)制到另一個磁盤文件中
D.將兩個磁盤文件合并后送屏幕
42.已知year為整型變量,不能使表達(dá)式(year%4==0&&year%100!=O)||year%400==0的值為“真”的數(shù)據(jù)是______。
A.1990B.1992C.1996D.2000
43.在C語言中,函數(shù)的隱含存儲類別是______。
A.autoB.staticC.externD.無存儲類別
44.對建立良好的程序設(shè)計風(fēng)格,下列描述正確的是()。
A.程序應(yīng)該簡單、清晰、可讀性好B.符號名的命名只需要符合語法C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無
45.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}該程序的輸出結(jié)果是______。
A.2B.4C.6D.8
46.請讀程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c);}若運行時從鍵盤上輸入9876543210,則上面程序的輸出結(jié)果是______。
A.a=98,b=765,c=4321
B.a=10,b=432,c=8765
C.a=98,b=765.000000,c=4321.000000
D.a=98,b=765.0,c=4321.0
47.以下程序運行后,輸出結(jié)果為______。main(){inta[2][3]={1,3,5,7,9,11),*s[2],**pp,*p;s[0]=a[0],s[1]=a[1];pp=s;p=(int*)malloc(sizeof(int));**pp=s[1][1];p=*pp;printf("%d\n",*p);}
A.1B.7C.9D.11
48.有如下程序:#include<stdio.h>main(){intx=1,a=0,b=0;switch(x){casc0:b++;case1:a++;case2:a++;b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結(jié)果是()。
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
49.若fp是指向某文件的指針,且已讀到文件末尾,則函數(shù)feof(fp)的返回值是
A.EOFB.-1C.1D.NULL
50.下列選項中,不能用作標(biāo)識符的是A._1234_B._1_2C.int_2_D.2_int_
51.對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正確的是()。
A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2
52.軟件生命周期中花費費用最多的階段是
A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護(hù)
53.若fp是指向某文件的指針,且已讀到此文件末尾,則庫函數(shù)feof(fp)的返回值是()
A.EOFB.0C.非零值D.NULL
54.已定義c為字符型變量,則下列語句中正確是______。
A.c='97';B.c="97";C.c=97;D.c="a";
55.下列能正確定義一維數(shù)組的選項是()。
A.inta[5]={0,1,2,3,4,5}
B.chara[]={0,1,2,3,4,5};
C.chara={'A','B','C'};
D.inta[5]="0123";
56.設(shè)有下列定義:structsk{intm;floatx;)dara,*q;若要使q指向data中的m域,正確的賦值語句是()。
A.q=&data.m;
B.*q=data.m;
C.q=(structsk*)&data.m;
D.q=(structsk*)data.m;
57.以下程序中函數(shù)reverse的功能是對a所指數(shù)組中的內(nèi)容進(jìn)行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-1];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}程序運行后的輸出結(jié)果是______。
A.22B.10C.34D.30
58.若有下列定義,則對a數(shù)組元素地址的正確引用是()。
inta[5],*p=a;
A.p+5B.*a+1C.&a+1D.&a[0]
59.以下有關(guān)宏替換的敘述不正確的是()。
A.雙引號中出現(xiàn)的宏名不替換B.使用宏定義可以嵌套C.宏定義儀儀是符號替換D.宏名必須用大寫字母表示
60.結(jié)構(gòu)化程序設(shè)計主要強(qiáng)調(diào)的是()。
A.程序的規(guī)模B.程序的效率C.程序設(shè)計語言的先進(jìn)性D.程序的易讀性
四、選擇題(20題)61.有以下程序:
i
程序運行后的輸出結(jié)果是()。。,
A.3,4B.4,1C.2,3D.1,2
62.請選出以下語句的輸出結(jié)果Printf("%d\n",strlen("\t\"\065\xff\n"));
A.5B.14C.8D.輸出項不合法,無正常輸出
63.數(shù)據(jù)庫設(shè)計中反映用戶對數(shù)據(jù)要求的模式是()。
A.內(nèi)模式B.概念模式C.外模式D.設(shè)計模式
64.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}執(zhí)行后的輸出結(jié)果是()。A.6B.7C.8D.9
65.有如下程序:
main
{inta=2,b=-1.c=2;
if(a<b)if(b<0)c=0;
elsec++;
printf("%d\n",c);
}
該程序的輸出結(jié)果是()。A.A.0B.1C.2D.3
66.
67.
68.
69.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。
A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);
70.在數(shù)據(jù)庫設(shè)計中,將E—R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()。
A.需求分析階段B.概念設(shè)計階段C.邏輯設(shè)計階段D.物理設(shè)計階段
71.軟件生命周期中所花費用最多的階段是()。
A.詳細(xì)設(shè)計B.軟件編碼C.軟件測試D.軟件維護(hù)
72.
73.以下敘述中錯誤的是()。A.可以通過typedef增加新的類型
B.可以用typedef將已存在的類型用一個新的名字來代表
C.用typedef定義新的類型名后,原有類型名仍有效
D.用typedd可以為各種類型起別名,但不能為變量起別名
74.下列判斷正確的是()。A.A.chara="ABCD":等價于char*a;*a="ABCD":
B.charstr[10]={"ABCD"}:等價于charstr[10];str[]={"ABCD"};
C.char*s="ABCD":等價于chars;*s="ABCD";
D.charc[5]="ABCD",d[5]="ABCD":等價于charc[5]-d[5]="ABCD";
75.結(jié)構(gòu)化程序設(shè)計的3種結(jié)構(gòu)是()。
A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)
B.分支結(jié)構(gòu)、等價結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價結(jié)構(gòu)
D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
76.以下定義語句中正確的是()。
77.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A.軟件集成測試計劃B.軟件詳細(xì)設(shè)計說明書C.用戶手冊D.軟件需求規(guī)格說明書
78.以下敘述中正確的是()。
A.在C語言中,預(yù)處理命令行都以“#”開頭
B.預(yù)處理命令行必須位于c源程序的起始位置
C.#include<stdi0.h>必須放在C程序的開頭
D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能
79.以下程序運行時,若從鍵盤輸入l02030<回車>,輸出的結(jié)果是()。
A.10200B.102030C.10300D.10030
80.有以下程序:
voidfunl(char*p)
{char*q;
q=P;
while(*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《基礎(chǔ)化學(xué)綜合實驗A》教學(xué)大綱
- 幼兒園0的意義課件
- 交通工程設(shè)施設(shè)計教案
- 玉溪師范學(xué)院《網(wǎng)絡(luò)思想政治教育》2022-2023學(xué)年第一學(xué)期期末試卷
- 玉溪師范學(xué)院《商務(wù)談判》2022-2023學(xué)年第一學(xué)期期末試卷
- 玉溪師范學(xué)院《籃球主項》2021-2022學(xué)年第一學(xué)期期末試卷
- 房地產(chǎn)營銷策劃 -雅安國際旅游度假區(qū) 2023-2024年度系列營銷活動策劃方案
- 2023年水路貨物運輸服務(wù)項目評估分析報告
- 2019湘美版 高中美術(shù) 選擇性必修6 現(xiàn)代媒體藝術(shù)《第一單元 攝影》大單元整體教學(xué)設(shè)計2020課標(biāo)
- 2024屆河北省定州市全國統(tǒng)一招生高考押題卷數(shù)學(xué)試題(一)
- 圖消防安全三自主兩公開一承諾公示牌模板
- 農(nóng)業(yè)合作社全套報表(已設(shè)公式)-資產(chǎn)負(fù)債表-盈余及盈余分配表-成員權(quán)益變動表-現(xiàn)金流量表
- 高速公路施工交通組織專項方案
- 全國教師教學(xué)創(chuàng)新團(tuán)隊申報書(范例)
- GB/T 9119-2000平面、突面板式平焊鋼制管法蘭
- GB/T 4955-1997金屬覆蓋層覆蓋層厚度測量陽極溶解庫侖法
- GB/T 26316-2010市場、民意和社會調(diào)查服務(wù)要求
- GB/T 17644-1998紡織纖維白度色度試驗方法
- GB 19173-2003桑樹種子和苗木
- GB 18564-2001汽車運輸液體危險貨物常壓容器(罐體)通用技術(shù)條件
評論
0/150
提交評論