




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021-2022年廣東省清遠(yuǎn)市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)知識(shí)點(diǎn)匯總卷(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(20題)1.
2.
3.
4.以下與函數(shù)fseek(fp,0L,SEEK_SET)有相同作用的是
A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)
5.設(shè)已有定義“floatx;”,則下列對(duì)指針變量P進(jìn)行定義且賦初值的語句中正確的是()。
A.int*p=(float)x;
B.float*p=&x;
C.floatp=&x;
D.float*p=1024;
6.
7.在具有101個(gè)元素的順序表中查找值為x的元素結(jié)點(diǎn)時(shí),平均比較元素的次數(shù)為()。
A.50B.51C.100D.101
8.下列字符數(shù)組初始化語句中,不正確的是()。
A.charc[]=goodmorning;
B.charc[20]="goodmorning";
C.charc[]={a,b,c,d);
D.charc[]={"ffgoodmorning"};
9.
10.若有定義“charc=“hello!”;”,則以下說法正確的是()。
A.c占用7字節(jié)內(nèi)存B.c是一個(gè)字符串變量C.定義中有語法錯(cuò)誤D.c的有效字符個(gè)數(shù)是6
11.軟件需求規(guī)格說明書的作用不包括()。
A.軟件設(shè)計(jì)的依據(jù)B.軟件可行性研究的依據(jù)C.軟件驗(yàn)收的依據(jù)D.用戶與開發(fā)人員對(duì)軟件要做什么的共同理解
12.若有運(yùn)算符:>、=、<<、%、sizeof,則它們按優(yōu)先級(jí)(由高至低)的正確排列順序?yàn)?)
A.%、sizeof、>、<<、=
B.sizeof、%、>、=、<<
C.sizeof、<<、>、%、=
D.sizeof、%、<<、>、=
13.下列敘述中正確的是()。
A.在C語言中,預(yù)處理命令行都以“#”開頭
B.預(yù)處理命令行必須位于C語言源程序的起始位置
C.“include<stdio.h>”必須放在C語言程序的開頭
D.C語言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能
14.以下不能將s所指字符串正確復(fù)制到t所指存儲(chǔ)空間的是()。A.while(*t=*s){t++;s++;}
B.for(i=0;t[i]=s[i];i++);
C.do{*t++:*s++;}while(*s);
D.for(i=0,j=0;t[i++]=s[j++];);
15.排序方法中,從未排序序列中依次取出元素與已排序序列中的元素進(jìn)行比較,將其放入已排序序列的正確位置上的方法,稱為()。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
16.設(shè)一棵二叉樹共有50個(gè)葉子結(jié)點(diǎn)(終端結(jié)點(diǎn)),則共有___個(gè)度為2的結(jié)點(diǎn)。
A.25B.49C.50D.51
17.若有定義和語句int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d,%d\n",*p,**pp);則輸出結(jié)果是()
A.10,10B.10,20C.20,10D.20,20
18.有以下程序:#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<9)printf("%d\n",a);clscprintf("%d\n",a--);}程序運(yùn)行時(shí)從鍵盤輸入9<回車>,則輸出結(jié)果是()。A.10B.11C.9D.8
19.設(shè)n、m為一棵二叉樹上的兩個(gè)結(jié)點(diǎn),在中序遍歷時(shí),n在m之前的條件是_____________。
A.n在m右方B.n是m的祖先C.n在m左方D.n是m子孫
20.
下列程序執(zhí)行后的輸出結(jié)果是()。
voidfunc(int*a,intb[])
{b[0]=*a+b;}main
{inta,b[5];
a=0.b[0]=3;
func(&a,b);printf("%d\n",b[0]);
}
A.6B.7C.8D.9
二、2.填空題(20題)21.表示“整數(shù)x的平方大于36"時(shí)的值為“真”的C語言邏輯表達(dá)式是【】。
22.以下程序中函數(shù)huiwen的功能是檢查一個(gè)字符串是否是回文,當(dāng)字符串是回文時(shí),函數(shù)返回字符串“yes!”,否則函數(shù)返回字符串“no!”,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adsda。請(qǐng)?zhí)羁铡?/p>
#include<stdio,h>
#include<string,h>
char*huiwen(char*str)
{char*p1,*p2;inti,t=0;
p1=str;p2=【】;
for(i=0;i<=strlen(str)/2;i++)
if(*pl++!=*p2--){t=1;break
if(【】)return("yes!");
elsereturn("no!");
}
main(){charstr[50];
printf("Iaput:");scanf("%s",str);
printf("%s\n",【】);
23.以下程序運(yùn)行后的輸出結(jié)果是______。
main()
{
chara[]="123456789",*p;
inti=0;
p=a;
while(*p)
{
if(i%2==0)
*p='*';
p++;i++;
}
puts(a);
}
24.以下程序段的輸出結(jié)果是【】。
main()
{inta=2,b=2,c=4;
a*=16+(b++)-(++C);
printf("%d",a);
}
25.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu)、存取方式等)改變時(shí),不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。
26.設(shè)有以下定義的語句:
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
則*(*(P+2)+1)值為【】。
27.若由以下定義,則不移動(dòng)指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是【】。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
28.將以下程序?qū)懗扇窟\(yùn)算表達(dá)式是【】。
if(a>b)max=a;
elsemax=b;
29.下列程序的輸出結(jié)果是______。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;}
i+=11;
a+=i;
}
printf("%d\n",A);
}
30.fun函數(shù)的功能是:首先對(duì)a所指的N行N列的矩陣,找出各行中的最大的數(shù),再求這N個(gè)最大值中的最小的那個(gè)數(shù)作為函數(shù)值返回。請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
#defineN100
intfun(int(*a)[N])
{
introw,col,max,min;
for(row=0;row<N;row++
{
for(max=a[row][0],col=1;col<N;col++)
if(【】)max=a[row][col];
if(row==0)min=max;
elseif(【】)min=max;
}
returnmin;
}
31.下面程序的運(yùn)行結(jié)果是【】。
intf(inta[],intn)
{if(n>1)returna[0]+f(&a[1],n-1);
elsereturna[0];
}
main()
{intaa[3]={1,2,3},s;
s=f(&aa[0],3);
printf("%d\n",s);
}
32.按照邏輯結(jié)構(gòu)分類,數(shù)據(jù)結(jié)構(gòu)可分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),隊(duì)列屬于______。
33.注釋說明了程序的功能,它分為【】注釋和功能性注釋。
34.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。
35.以上程序運(yùn)行后的輸出結(jié)果是【】。
main()
{inti=10,j=0;
do
{j=j+i;i-;}
while(i>2);
printf("%d\n",j);
}
36.若x和n均是int型變量,且x=12,n=5,則執(zhí)行y=x%=(n%=2)表達(dá)式后y的值為()。
37.以下程序建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表結(jié)點(diǎn)中的數(shù)據(jù)通過鍵盤輸入,當(dāng)輸入數(shù)據(jù)為-1時(shí),表示輸入結(jié)束(鍵表頭結(jié)點(diǎn)的data域不放數(shù)據(jù),表空的條件是ph->next==NULL),請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
structlist{intdata;structlist*next;};
structlist*creatlist()
{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));
p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");
scanf("%d",&a);
while(a!=-1)
{p=(structlist*)malloc(sizeof(structlist));
【】=a;q->next=p;【】=p;scanf("%d",&a);}
p->next='\0';return(ph);}
main()
{structlist*head;head=creatlist();}
38.下面程序的運(yùn)行結(jié)果是______。
intf(inta[],intn)
{if(n>1)returna[0]+f(&a[1],n-1);
elsereturna[0];
{
main()
{intaa[3]={1,2.3},s;
s=f(&aa[0],3);
printf("%d\n",s);
}
39.以下程序的功能是:對(duì)輸入的一行字符串的數(shù)字字符按它們的字面值累加,輸出此累加和。例如,輸入一行字符是:ab34dh8u,輸出值應(yīng)當(dāng)是15。請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
#include<ctype.h>
main()
{charch;inta,s;
【】;
while((ch=getchar())【】)
if(isdigit(ch))
{a=【】;s+=a;}
printf("s=%d\n\n",s);}
40.若a=1,b=2,則表達(dá)式!(x=A)‖(y=B)&&0的值是______。
三、1.選擇題(20題)41.以下能正確定義且賦初值的語句是()。
A.intn1=n2=10;
B.charc=32;
C.floatf=f+1.1;
D.doublex=12.300.5;
42.有以下程序:main(){inti=0,s=0;do{if(i%2){i++;continue;}i++;s+=i;}while(i<7);.printf("%d\n",s);}執(zhí)行后輸出的結(jié)果是()。
A.16B.12C.28D.21
43.有以下程序voidswap(char*x,char*y){chart;t=*x;*X=*y;*y=t;}main(){char*s1:"abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序執(zhí)行后的輸出結(jié)果是
A.123,abcB.abc,123C.1bc,a23D.321,cba
44.有以下程序point(char*p){p+=3;}main(){charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);}程序運(yùn)行后的輸出結(jié)果是______。
A.aB.bC.cD.d
45.下列程序的輸出結(jié)果是______。intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&b);printf("%d\n,res);}
A.4B.6C.8D.10
46.下列敘述中正確的是A.break語句只能用于switch語句
B.在switch語句中必須使用default
C.break語句必須與switch語句中的case配對(duì)使用
D.在switch語句中,不一定使用break語句
47.下列程序的輸出結(jié)果是()。#include<stdio.h>intfun(intx){inta;if(x==0‖x==1)return3;elsea=x-fun(x-2);returna;}voidmain(){printf("%d",fun(7));}
A.2B.8C.9D.5
48.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性的是()。
A.線性表B.隊(duì)列C.樹D.棧
49.執(zhí)行以下程序后i的值為()。main(){intx,i;for(i=l,x=1;i<=36;i++){if(x>=20)break;if(x%5==1){x+=5;continue;}x-=5;)printf("%d",i);}
A.3B.4C.5D.6
50.以下四個(gè)程序中,完全正確的是()。
A.#include<stdio.h>
B.#include<stdio.h>main();main(){/*programming*/{/*/programming/*/printf("programming!\n");}printf("programming!\n");}
C.#include<stdio.h>
D.include<stdio.h>main()main(){/*/*programming*/*/{/*programming*/printf("programming!\n");}printf("programming!\n");}
51.有以下程序:#include<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}程序的輸出結(jié)果是(注意:ch[0]在低字節(jié),ch[1]在高字節(jié))()。
A.13B.14C.208D.209
52.按照“先進(jìn)后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊(duì)列B.棧C.雙向鏈表D.二叉樹
53.下面程序的輸出結(jié)果是()。voidprty(int*x){printf("%din",++*x);}main(){inta=25;prty(&a);}
A.23B.24C.25D.26
54.設(shè)有定義:Structcomplex{intreal,unreal;}data1={1,8},data2;則以下賦值語句中錯(cuò)誤的是()。
A.data2={data1.rea1,data1.unrea1};
B.data2=(2,6);
C.data2.rea1=data1->rea1;
D.data2->rea1=data1.unrea1;
55.具有3個(gè)結(jié)點(diǎn)的二叉樹有
A.2種形態(tài)B.4種形態(tài)C.7種形態(tài)D.5種形態(tài)
56.以下選項(xiàng)中,能定義s為合法的結(jié)構(gòu)體變量的是()。
A.typedefstructabc{doublea;charb[10];}s;
B.struct{doublea;charb[10];}s;
C.structABC{doublea;charb[10];}ABCs;
D.typedefABC{doublea;charb[10];}ABCs;
57.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號(hào),姓名,性別,年齡,身份證號(hào)),課程c(課號(hào),課名),選課SC(學(xué)號(hào),課號(hào),成績),則表sc的關(guān)鍵字(鍵或碼)為()。
A.課號(hào),成績B.學(xué)號(hào),成績C.學(xué)號(hào),課號(hào)D.學(xué)號(hào),姓名,成績
58.已知函數(shù)的調(diào)用形式為fread(buf,size,count,fp),參數(shù)buf的含義是
A.一個(gè)整型變量,代表要讀入的數(shù)據(jù)項(xiàng)總數(shù)
B.一個(gè)文件指針,指向要讀的文件
C.一個(gè)指針;指向要讀入數(shù)據(jù)的存放地址
D.一個(gè)存儲(chǔ)區(qū),存放要讀的數(shù)據(jù)項(xiàng)
59.有以下程序段
intj;floaty;charname[50];
scanf("%2d%f%s",&j,&y,name);
當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abe后,y的值為
A.55566.0B.566.0C.7777.0D.566777.0
60.若指針p已正確定義,要使p指向兩個(gè)連續(xù)的整型動(dòng)態(tài)存儲(chǔ)單元,不正確的語句是______。
A.p=2*(int*)malloc(sizeof(int));
B.p=(int*)mallet(2*sizeof(int));
C.p=(int*)malloc(2*2);
D.p=(int*)calloc(2,sizeof(int));
四、選擇題(20題)61.
62.設(shè)有定義:
63.有以下程序main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}程序運(yùn)行后的輸出結(jié)果是______。
A.22B.76C.72D.62
64.已知大寫字母A的ASCIl碼值是65,小寫字母a的ASCIl碼值是97。以下不能將變量C中的大寫字母轉(zhuǎn)換為對(duì)應(yīng)小寫字母的語句是()。
A.C=(。A’+C.%26一"a"B.c=c+32C.c=c一"A"+"a"D.c=(c一’A")%26+-a"
65.以下選項(xiàng)中正確的語句組是()。
A.char*s;8={1.BOOK!”}i
B.char*s;8=”BOOK!”;
C.charS[10];S=”BOOK!”;
D.charS[];S=”BOOK!”;
66.有以下程序:
A.xyyxB.yyyyC.yyxxD.yxyx
67.
68.數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖內(nèi)容的是
A.控制流B.加工C.?dāng)?shù)據(jù)存儲(chǔ)D.?dāng)?shù)據(jù)流
69.現(xiàn)有定義inta;doubleb;floatc;chark;,則表達(dá)式a/b+C—k值的類型為:()。
A.intB.doubleC.floatD.char
70.有以下程序程序輸出()。
A.編譯有錯(cuò)B.0,0,0,3C.1,1,2,0D.0,l,2,0
71.有以下程序:
程序的運(yùn)行結(jié)果是()。
A.*7
B.*3*5
C.*5
D.*2*6
72.下列程序的輸出結(jié)果是()。#include<stdio.h>main{inta=3,b=2,c=1;if(a<b)if(b<0)c=0;elsec++:printf("%d\n",c);}A.2B.0C.1D.不確定的值
73.下列對(duì)隊(duì)列的敘述正確的是()。
A.隊(duì)列按“先進(jìn)后出”原則組織數(shù)據(jù)
B.隊(duì)列屬于非線性表
C.隊(duì)列在隊(duì)尾刪除數(shù)據(jù)
D.隊(duì)列按“先進(jìn)先出”原則組織數(shù)據(jù)
74.有下列程序:
main
{inty=10;
do{y--;}while(--y);
printf("%d\n",--y);
)
當(dāng)執(zhí)行程序時(shí),輸出的結(jié)果是()。
A.-1B.1C.4D.0
75.用黑盒技術(shù)測試用例的方法之一為
A.因果圖B.邏輯覆蓋C.循環(huán)覆蓋D.基本路徑測試
76.已知各變量的類型說明如下:
則以下不符合C語言語法的表達(dá)式是()。
A.
B.
C.
D.
77.以下選項(xiàng)中非法的表達(dá)式是()。
A.a+1=a+1
B.a=b==0
C.(Char.(100+100.
D.7<=X<60
78.
79.
80.若以下選項(xiàng)中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)fun()的功能是:求兩個(gè)非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若num1和num2分別為49和21,則輸出的最大公約數(shù)為7;若num1和num2分別為27和81,則輸出的最大公約數(shù)為27。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計(jì)題(1題)82.下列程序定義了M×M的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫函數(shù)proc(),函數(shù)的功能是求出數(shù)組周邊元素的平方和并作為函數(shù)值返回給主函數(shù)中的s。例如,若a數(shù)組中的值為則返回主程序后s的值應(yīng)為310。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
參考答案
1.D
2.B
3.D
4.D解析:本題考查的是文件操作函數(shù).題目中fseek(fp,0L,SEEK_SET)的作用將文件指針定位到文件開始。feof(fp)的作用是判斷文件指針是否已到文件結(jié)尾,因此選項(xiàng)A不對(duì)。ftell(fp)的作用是獲取當(dāng)前文件指針的位置,因此選項(xiàng)B不對(duì)。fgetc(fp)的作用是從文件中讀取一個(gè)字節(jié),因此選項(xiàng)C不對(duì)。rewind(中)的作用是將文件指針重定位到文件開頭,所以應(yīng)該選擇D。
5.B指針是用來存放地址的變量,定義指針變量的形式為:類型名*指針變量名。賦值時(shí)應(yīng)將某個(gè)變量地址,如選項(xiàng)B中變量x的地址&x賦給指針變量。故本題答案為B選項(xiàng)。
6.B
7.B
8.A本題考查兩個(gè)概念:①用單引號(hào)括起來的一個(gè)字符常量只能存放一個(gè)字符;②℃語言中沒有字符串變量,只能用字符數(shù)組來存儲(chǔ)字符串。
9.B
10.Cc是字符變量,“hello!”是字符串。字符串不能賦給字符變量,定義中有語法錯(cuò)誤。本題答案為C選項(xiàng)。
11.B《軟件可行性分析報(bào)告》是軟件可行性研究的依據(jù)。
12.D解析:主要考查運(yùn)算符的優(yōu)先級(jí)。sizeof的優(yōu)先級(jí)最高,后面的順序是:%、<<、>,優(yōu)先級(jí)最低的是“=”。
13.A預(yù)處理命令以“#”開頭,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、C選項(xiàng)錯(cuò)誤。C語言的預(yù)處理能夠?qū)崿F(xiàn)宏定義和條件編譯的功能,所以D選項(xiàng)錯(cuò)誤。故本題答案為A選項(xiàng)。
14.C解析:C項(xiàng)復(fù)制時(shí)沒有復(fù)制結(jié)束串“\0”。
15.C
16.B難易程度:易
17.D
18.A本題考查簡單的運(yùn)算符操作.當(dāng)輸入9時(shí),(a++<9)為假,所以執(zhí)行else語句中的printf("%d\n",a--),在執(zhí)行時(shí)此時(shí)a經(jīng)過a++操作a=10,所以答案為A。
19.C
20.A
\n本題考查函數(shù)的調(diào)用,從主函數(shù)傳遞到調(diào)用函數(shù)中,*a的值為0,因此當(dāng)執(zhí)行完調(diào)用函數(shù)后,b[0]的值為6。
\n
21.x<-6||x>6
22.p1+(stfien(str)-1)或str+(strlen(str)-1)t==0或!thuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+strp1+(stfien(str)-1)或str+(strlen(str)-1)\r\nt==0或!t\r\nhuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+str解析:回文字符串是指正向與反向拼寫都一樣。由huiwen函數(shù)可知,第三處應(yīng)該填寫調(diào)用函數(shù)huiwen(str)。在函數(shù)huiwen中,執(zhí)行P1=str;使p1指向字符串str中第一個(gè)字符的地址,則第一處應(yīng)該使p2指向字符串str中最后一個(gè)字符的地址,故填p1+(stden(str)-1)或str+(strlen(str)-1)。本題要求如果是回文,則返回'yes!',否則,返回'no!',故當(dāng)t=0時(shí),說明字符串str為回文,所以第二處應(yīng)填t==0或!t。
23.*2*4*6*8**2*4*6*8*解析:程序中定義了一個(gè)字符數(shù)組a,并初始化為123456789,接著定義了一個(gè)指針p并讓它指向數(shù)組a,緊接著執(zhí)行了一個(gè)while循環(huán),此循環(huán)的作用是:當(dāng)i為偶數(shù)時(shí),將“*”賦給a[i],p指向數(shù)組末尾,循環(huán)結(jié)束,此時(shí)數(shù)組中a[0]、a[2]、a[4]、a[6]和a[8]的值都為“*”,所以最后調(diào)用puts()函數(shù)輸出的a的值為*2*4*6*8*
24.2626解析:a*=16+(b++)-(++c)等價(jià)于a*=a*(16+(b++)-(++c))=2*(16+(2-5)=26。b++是先使用b的值參加運(yùn)算,再對(duì)b加1;++c是先c加1,再使用c的值參加運(yùn)算。
25.物理獨(dú)立性物理獨(dú)立性
26.6060解析:p是指向整型數(shù)組的指針變量,p=a使得p指向數(shù)組a的第1行。p+2是數(shù)組a第3行的地址,*(p+2)是數(shù)組a第3行{50,60},其實(shí)*(p+2)為數(shù)組a第3行的首地址,*(p+2)+1為數(shù)組a第3行第2個(gè)元素的地址,那么*(*(P+2)+1)就是數(shù)組a第3行第2個(gè)元素,即60。
27.*(p+5)或p[5]*(p+5)或p[5]解析:本題的考查點(diǎn)是通過指針引用數(shù)組元素。98是數(shù)組w的第5個(gè)元素(最開始的為第0個(gè)),而通過*p=w已經(jīng)將p指向了數(shù)組w,要想不移動(dòng)指針p而引用98,可以有以下兩種方法:p[5]、*(p+5)。
28.max=(a>b)?a:b;max=(a>b)?a:b;解析:本題考查三目運(yùn)算符的用法,條件運(yùn)算符要求有三個(gè)操作對(duì)象,稱三目(元)運(yùn)算符,它是C語言中惟一的一個(gè)三目運(yùn)算符。條件表達(dá)式的一般形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3所以,我們可以寫成(a,b)?a:b,它是一個(gè)“條件表達(dá)式”。執(zhí)行順序是:如果(a>b)條件為真,則條件表達(dá)式取值a,否則取值b。注意:逗號(hào)表達(dá)式的執(zhí)行原理。
29.3232解析:while(表達(dá)式)的功能是:首先計(jì)算表達(dá)式的值,若為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢,再計(jì)算表達(dá)式的值,若仍為真,則重復(fù)執(zhí)行循環(huán)體語句,直到表達(dá)式的值為假時(shí),結(jié)束while語句的執(zhí)行,繼續(xù)執(zhí)行while語句后面的語句:i=0時(shí)滿足循環(huán)條件,也滿足if的條件,執(zhí)行語句得i=11,a=11,第2次循環(huán)不滿足if的條件,執(zhí)行i--,i=10,執(zhí)行i+=11;a+=i后,得i=21,a=32,不滿足i<20,循環(huán)結(jié)束。
30.a[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)max<min或min>max或max<=min或min>=maxa[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)\r\nmax<min或min>max或max<=min或min>=max解析:本題有兩層for循環(huán),主函數(shù)中定義了整型變量row、col、max和min,其中row用來存放外循環(huán)中的循環(huán)次數(shù),col用來存放內(nèi)循環(huán)中的次數(shù),max記錄每行中的最大值,min記錄所有行中最大值中的最小值。在內(nèi)循環(huán)中,首先給max賦初值為每行的第0列元素值,然后從第一列開始依次與max進(jìn)行比較。如果大于max則將其值賦給max,當(dāng)每一行循環(huán)結(jié)束,max記錄了每一行的最大值。所以第一個(gè)空應(yīng)該填a[row][col]>max或a[row][col]>=max。退出內(nèi)循環(huán),在第一次退出內(nèi)循環(huán)時(shí),將min賦初值為第0行的max,然后在每次退出內(nèi)循環(huán)時(shí),將min和每行的max比較,如果大于max,則將max值賦min,所以第二個(gè)空應(yīng)該填max>min或mm>max,當(dāng)退出外循環(huán)時(shí),min為所有行中的最大值的最小值。
31.66解析:經(jīng)過分析將遞歸函數(shù)寫成其數(shù)學(xué)表達(dá)式如下:
本題中定義了一個(gè)長度為3的數(shù)組aa并初始化。接著調(diào)用遞歸函數(shù)f,由上面的數(shù)學(xué)表達(dá)式以計(jì)算其返回值s=1+2+3=6,所以空格處應(yīng)該填6。
32.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:隊(duì)列有且只有一個(gè)根結(jié)點(diǎn),而且每一個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件,滿足線性結(jié)構(gòu)的條件,所以屬于線性結(jié)構(gòu)。
33.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。
34.非線性結(jié)構(gòu)非線性結(jié)構(gòu)
35.5252解析:do...while語句的形式為:
do
{
語句;
}while(條件表達(dá)式)
當(dāng)條件表達(dá)式為非零時(shí),繼續(xù)執(zhí)行循環(huán)體,直到條件表達(dá)式為零時(shí)退出循環(huán)。
36.00解析:n%=2等價(jià)于n=n%2,結(jié)果為1:x%=1等價(jià)于x=x%1,結(jié)果為0。
37.p->dataqp->data\r\nq解析:本題考查的是鏈表這一數(shù)據(jù)結(jié)構(gòu)對(duì)結(jié)構(gòu)體變量中的數(shù)據(jù)的引用。鏈表的特點(diǎn)是結(jié)構(gòu)體變量中有兩個(gè)域,一個(gè)是數(shù)據(jù),一個(gè)是指向該結(jié)構(gòu)體變量類型的指針,用以指明鏈表的下一個(gè)結(jié)點(diǎn)。
38.66解析:經(jīng)過分析將遞歸函數(shù)寫成其數(shù)學(xué)表達(dá)式如下:
f(&a,n)=a[0]+f(&a[1],n-1)n>1
f(&a,n)=a[0]n=1
本題中定義了一個(gè)長度為3的數(shù)組aa并初始化。接著調(diào)用遞歸函數(shù)f,由上面的數(shù)學(xué)表達(dá)式以計(jì)算其返回值s=1+2+3=6,所以空格處應(yīng)該填6。39.s=0\r\n!='\\n'\r\nch-'0's=0\r\n!='\\n'\r\nch-'0'解析:按照題目的要求,s用于保存累加結(jié)果;while語句用于得到一個(gè)字符串,并以'\\n'結(jié)束;if語句用于判斷一個(gè)字符是否為數(shù)值型,如果是就將其累加至s中。
40.00解析:根據(jù)運(yùn)算符的運(yùn)算順序可知,該表達(dá)式最后運(yùn)算的是與(&&)運(yùn)算,而任何表達(dá)式與“0”進(jìn)行“與”運(yùn)算,結(jié)果都為0。
41.B
42.A
43.C解析:這是一個(gè)轉(zhuǎn)換程序:低字節(jié)相互轉(zhuǎn)換,高字節(jié)不變?!癮be”的ab和“123”的12相互轉(zhuǎn)化。
44.A解析:本題是一個(gè)陷阱,看似考查函數(shù)的傳址調(diào)用,其實(shí)考的是傳值調(diào)用。在C語言中,不管你給函數(shù)傳遞的參數(shù)是什么,指針也好數(shù)組名也罷,系統(tǒng)都是嚴(yán)格的將實(shí)參的值復(fù)制了一份作為函數(shù)的形參,即傳值調(diào)用。在函數(shù)中,對(duì)形參中的值怎么改變都不會(huì)影響到實(shí)參。那傳址調(diào)用又是怎么實(shí)現(xiàn)的呢?那是因?yàn)樵诤瘮?shù)中改變的不是形參指針變量中的值,而是形參指針變量所指內(nèi)存中的值。其實(shí)骨子里還是將實(shí)參指針的值復(fù)制?一份給形參指針變量,它們是兩個(gè)獨(dú)立的互不相干的變量,只不過指向的內(nèi)存地址值一模一樣罷了。本題的函數(shù)只是改變了形參指針變量p的值,這對(duì)程序沒有任何影響,主函數(shù)中p一開始就是指向b[0],最后輸出時(shí)還是b[0]的值'a'。所以應(yīng)該選擇A。
45.B解析:實(shí)參a按地址傳遞,b是全局變量,函數(shù)func中b=b+*a=2+2=4,故主函數(shù)中res=res+4=2+4=6。
46.D解析:break語句除了能用于switch語句外,還可以用于循環(huán)語句中,因此選項(xiàng)A不正確。在switch語句中,可以使用default來執(zhí)行所有case均失配時(shí)的分支,也可以不使用default,此時(shí)若所有case均失配則跳出switch,因此選項(xiàng)B不正確。在switch語句中,每個(gè)case的作用就是標(biāo)出一個(gè)執(zhí)行的起點(diǎn),當(dāng)符合某個(gè)case時(shí),程序就從該case所標(biāo)出的起點(diǎn)處開始執(zhí)行,若沒有break語句中斷執(zhí)行的話,程序會(huì)一直執(zhí)行到switch的最后一條語句,而不是碰到下一個(gè)case就跳出switch。雖然break與case的配對(duì)使用會(huì)讓所有case分支互不重疊條理明確,但不配對(duì)使用在C語言中也是允許的。因此選項(xiàng)C不正確,應(yīng)該選擇D。
47.A解析:本題考查函數(shù)的遞歸調(diào)用。
在函數(shù)遞歸調(diào)用時(shí),fun(7):a=7-fun(5)→fun(5):a=5-fun(3)→fun3:a=3-fun(1)→fun(1):a=3,反推回去fun(3):a=3-3=0→fun(5):a=5-0=5→fun(7):a=7-5=2,最后的計(jì)算結(jié)果為2。
48.C解析:線性結(jié)構(gòu),是指數(shù)據(jù)元素只有一個(gè)直接前件元素和直接后件元素。線性表是線性結(jié)構(gòu)。棧和隊(duì)列是指對(duì)插入和刪除操作有特殊要求的線性表,樹是非線性結(jié)構(gòu)。
49.C解析:第1次循環(huán)執(zhí)行情況如下:
i=1,x=1,判斷i<=36為真執(zhí)行循環(huán)體。
x=1,判斷x>=20為假。
判斷x%5==1為真,執(zhí)行x+=5;x值為6,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5:。
執(zhí)行i++,i=2。
第2次循環(huán)執(zhí)行情況如下:
i=2,判斷i<=36為真執(zhí)行循環(huán)體。
x=6,判斷x>=20為假。
判斷x%5==1為真,執(zhí)行x+=5:x值為11,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5;。
執(zhí)行i++,i=3。
第3次循環(huán)執(zhí)行情況如下:
i=3,判斷i<=36為真執(zhí)行循環(huán)體。
x=11,判斷x>=20為假。
判斷x%5==1為真,執(zhí)行x+=5;x值為16,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5:。
執(zhí)行i++,i=4。
第4次循環(huán)執(zhí)行情況如下:
i=4,判斷i<=36為真執(zhí)行循環(huán)體。
x=16,判斷x>=20為假。
判斷x%5==l為真,執(zhí)行x+=5;x值為21,執(zhí)行continue;跳過本次循環(huán)余下的語句,即不執(zhí)行X-=5;。
執(zhí)行i++,i=5。
第5次循環(huán)執(zhí)行情況如下:
i=5,判斷i<=36為真執(zhí)行循環(huán)體。
x=21,判斷x>=20為真。
執(zhí)行break;,跳出循環(huán)體,即結(jié)束循環(huán)。最后i=5,選項(xiàng)C正確。
50.B解析:選項(xiàng)A中的main()后面不能直接用分號(hào)。選項(xiàng)C中的注釋符使用不正確,編譯器會(huì)把從第一個(gè)“/*到第一個(gè)*/”之間的當(dāng)作注釋,最后一個(gè)“*/”會(huì)被作為程序代碼去編譯。選項(xiàng)D中的include前要加上#表示是預(yù)定義語句。
51.A解析:根據(jù)共用體的定義可知:共用體a的成員i和成員ch[2]共用同一段內(nèi)存空間,所以,當(dāng)程序給a.ch[0]和a.ch[1]賦值后,實(shí)際上,共用體成員i的值就確定為13了,所以打印輸出的結(jié)果應(yīng)當(dāng)為13。
52.BB.【解析】棧是一種特殊的線性表,其插入和刪除運(yùn)算都只在線性表的一端進(jìn)行,而另一端是封閉的。進(jìn)行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元索是最后被插入的元素,也是最后被刪除的元素。棧是按先進(jìn)后出的原則組織數(shù)據(jù)的。
【知識(shí)拓展】“?!钡男问饺缡謽尩膹椣?,最后壓入的子彈總是最先被彈出,而最先壓人的子彈最后才被彈出,也就是“先進(jìn)后出”。
53.D解析:執(zhí)行prty(&a);將變量a的地址傳遞給形參。x是指針型變量,值為變量a的地址,*x就是取存儲(chǔ)單元的值即25,輸出*x加1后的值26。
54.B
55.D解析:因?yàn)槎鏄溆凶?、右子樹之分,所以?個(gè)結(jié)點(diǎn)的二叉樹具有5種不同的形態(tài)。
56.B解析:定義一個(gè)結(jié)構(gòu)體類型的變量,可采用三種方法:
①先定義結(jié)構(gòu)體類型,再定義變量名。
②在定義類型的同時(shí)定義變量。
③直接定義結(jié)構(gòu)體類型變量,即不出現(xiàn)結(jié)構(gòu)體名。
選項(xiàng)B)符合第三種定義方法。
57.C學(xué)號(hào)是學(xué)生表S的主鍵,課號(hào)是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個(gè)表能夠直接聯(lián)系且能唯一定義的學(xué)號(hào)和課號(hào),所以選擇C項(xiàng)。
58.C解析:這是一道考查fread函數(shù)的題。buf是一個(gè)指針,fread是讀入數(shù)據(jù)的存放地址;fwrite是輸出數(shù)據(jù)的地址(以上指的是起始地址)。
59.B解析:本題考查通過scanf函數(shù)輸入數(shù)據(jù)時(shí)的格式控制問題。變量j的格式控制為“%2d”,即只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入都會(huì)被保存到變量y中,因?yàn)閥為浮點(diǎn)型數(shù)據(jù),所以輸出結(jié)果為選項(xiàng)B)。
60.A解析:本題考查malloc函數(shù)和calloc函數(shù)的應(yīng)用。C語言中庫函數(shù)malloc和calloc的功能都是向系統(tǒng)申請(qǐng)分配內(nèi)存空間。其中函數(shù)malloc的調(diào)用為:malloc(size),其中size是一個(gè)無符號(hào)整數(shù),表示向系統(tǒng)申請(qǐng)多大的存儲(chǔ)空間;calloc(n,size)表示向系統(tǒng)申請(qǐng)n個(gè)大小為size的存儲(chǔ)空間。新標(biāo)準(zhǔn)C提供的malloc和calloc函數(shù)的類型規(guī)定為void*類型,使用時(shí)根據(jù)需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。選項(xiàng)B、C、D都能滿足p指向兩個(gè)連續(xù)的整型存儲(chǔ)單元的要求,其中(int*)表示強(qiáng)制類型轉(zhuǎn)換。
61.C
62.A選項(xiàng)B)、D)中if語句后都是一條復(fù)合語句,選項(xiàng)c)中if語句后都是一條語句。選項(xiàng)A)之后有3條語句,所以答案選擇A)。
63.C題目中需要求出程序的輸出值i,j,其中i的值由sizeof決定,j的值由strlen函數(shù)決定。
sizeof是C語言的一種運(yùn)算符,以字節(jié)的形式給出操作數(shù)的存儲(chǔ)空間的大小。sizeof的操作對(duì)象可以是具體的數(shù)據(jù)類型,也可以是變量。題目中的操作數(shù)為數(shù)組名,利用sizeof可計(jì)算出數(shù)組所占用內(nèi)存的字節(jié)數(shù),題目中數(shù)組類型為char,大小為7,故該數(shù)組占用的內(nèi)存數(shù)為7。
strlen函數(shù)則是計(jì)算一段字符串的長度,可以從整個(gè)字符串的頭部開始計(jì)算,也可以從字符串的中間開始計(jì)算,當(dāng)碰到第一個(gè)字符串結(jié)束符“\\0”,則停止計(jì)算,返回當(dāng)前的計(jì)算值。題目中在前兩個(gè)字符之后就出現(xiàn)了結(jié)束符“\\0”,故strlen函數(shù)的值為2。
64.A根據(jù)題意可知,小寫字母比與之對(duì)應(yīng)的大寫字母的ASCⅡ碼大32。A選項(xiàng)中字符A加上c表示的大寫字符再對(duì)字母個(gè)數(shù)26取余,本身這個(gè)表達(dá)式?jīng)]有任何含義,所以選擇A選項(xiàng)。
65.BA選項(xiàng)去掉大括號(hào)就正確了;c選項(xiàng)和D選項(xiàng)應(yīng)在定義時(shí)賦初值。因此B選項(xiàng)正確。
66.B本題考查do-while語句和if…else語句。do-while語句的功能是先執(zhí)行循環(huán)體再判斷條件,所以先判斷if語句的條件,y=-4,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=3,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=2,滿足while循環(huán)條件,繼續(xù)循環(huán)。第三次循環(huán):先判斷if語句的條件,y=2,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x=1,滿足while循環(huán)條件,繼續(xù)循環(huán)。第四次循環(huán):先判斷if語句的條件,y=-1,!y為邏輯0,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 培訓(xùn)基地實(shí)訓(xùn)合作協(xié)議
- 乒乓球館裝修工程管理費(fèi)
- 飼料運(yùn)輸安全責(zé)任書
- 零售業(yè)態(tài)會(huì)員管理與營銷實(shí)踐作業(yè)指導(dǎo)書
- 綠色環(huán)保技術(shù)應(yīng)用方案
- 汽車制造工藝指南
- 業(yè)務(wù)開展進(jìn)展報(bào)告表
- 美術(shù)培訓(xùn)中心裝修延期協(xié)議
- 消防安全專項(xiàng)檢查方案
- 生態(tài)農(nóng)業(yè)種植項(xiàng)目
- pp纖維濾布生產(chǎn)工藝
- 《小升初家長會(huì)》課件
- 制藥無菌灌裝操作規(guī)程
- (完整版)年產(chǎn)30萬噸甲醇工藝設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 農(nóng)田春耕安全生產(chǎn)培訓(xùn)
- 2023工程量增加補(bǔ)充協(xié)議正規(guī)版
- DN1000供水管搶修施工方案
- A4紙筆記本橫格線條打印模板
- 【大班戶外體育游戲活動(dòng)的問題及對(duì)策研究S幼兒園為例7000字(論文)】
- 工程安全生產(chǎn)竣工評(píng)定表
- Vue.js前端開發(fā)實(shí)戰(zhàn)(第2版)全套完整教學(xué)課件
評(píng)論
0/150
提交評(píng)論