版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
2021年甘肅省嘉峪關市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.合法的數(shù)組定義是()
A.inta[]="string";
B.inta[5]={0,1,2,3,4,5};
C.chara="string";
D.chara={0,1,2,3,4,5};
2.若輸入“abcdef”、“abdef”,以下程序的輸出結果為()。#include<stdio.h>#lnclude<string.h>main(){intn;chars1[20],s2[20],p1,*p2;scanf("%s",s1);scanf("%s",s2);P1=s1;p2=s2;n=strcmp(p1,p2);printf("%d\n",n);}
A.-1B.0C.abcdefD.abdef
3.下面程序的輸出結果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}
A.121,0,4B.2,2,2C.0,2,4D.0,2,2
4.
5.一個隊列的入隊序列是a,b,c,d,則出隊序列是()。
A.a,b,c,dB.a,c,b,dC.d,c,b,aD.a,c,b,d
6.以下關于注釋的敘述中錯誤的是()。
A.注釋的邊界符號“/”和“*”之間不允許加入空格
B.C語言允許注釋出現(xiàn)在程序中任意合適的地方
C.注釋的內(nèi)容僅用于閱讀,對程序的運行不起作用
D.注釋的邊界符號“/*”和“*/”必須成對出現(xiàn)且可以嵌套
7.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序執(zhí)行后的輸出結果是()。A.35B.37C.39D.3975
8.C語言可執(zhí)行程序的開始執(zhí)行點是()。
A.包含文件中的第一個函數(shù)B.程序中第一個函數(shù)C.程序中的main()函數(shù)D.程序中第一條語句
9.已知字母a的ASCII碼為十進制數(shù)97,下面程序的輸出結果是()。#include<stdio.h>main(){charc1,c2;c1='a'+'6'-'0';c2='a'+'3'-'0';printf("%c,%c\n",c1,c2);}
A.輸出無定值B.d,eC.e,fD.g,d
10.下列敘述中正確的是()。
A.數(shù)據(jù)的邏輯結構與存儲結構必定是一一對應的
B.由于計算機存儲空間是向量式的存儲結構,因此,數(shù)據(jù)的存儲結構一定是線性結構
C.程序設計語言中的數(shù)組一般是順序存儲結構,因此,利用數(shù)組只能處理線性結構
D.以上三種說法都不對
11.針對二分查找算法,假設一個有序數(shù)組有136個元素,那么要查找到第10個元素,需要比較的元素為()
A.68,34,17,9,13,11,10
B.68,34,17,8,12,10
C.69,35,18,10
D.68,34,18,9,13,11,10
12.若以“a+”方式打開一個已存在的文件,則下列敘述正確的是()。
A.文件打開時,原有文件內(nèi)容不被刪除,位置指針移到文件末尾,可以進行添加或讀操作
B.文件打開時,原有文件內(nèi)容不被刪除,只能進行讀操作
C.文件打開時,原有文件內(nèi)容被刪除,只能進行寫操作
D.以上三種說法都不正確
13.
14.有以下程序:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下選項中表達式值為11的是()。
A.++p->xB.pt->xC.*pt->yD.(pt++)->x
15.表達式“a+=a-=a=9”的值是()。
A.18B.-9C.0D.9
16.有以下程序:#include<stdio.h>main(){chars[]=“012xy\08s34f4w2”;inti,n=0;for(i=0;s[i]|=0;i++) if(s[i]>=‘0’&&s[i]<=“9”)n++;printf(“%d\n”,n);}程序運行后的輸出結果是()。
A.7B.0C.3D.8
17.若有以下定義,則對a數(shù)組元素地址的正確引用是()。
inta[5],*p=a;A.A.p5B.*a1C.&a1D.&a[0]
18.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序運行后的輸出結果是()。A.b,bB.b,cC.a,bD.a,c
19.下列字符數(shù)組初始化語句中,不正確的是()。
A.charc[]=goodmorning;
B.charc[20]="goodmorning";
C.charc[]={a,b,c,d);
D.charc[]={"ffgoodmorning"};
20.可以判斷一個有向圖中是否含有回路的方法為()。
A.廣度優(yōu)先遍歷B.深度優(yōu)先遍歷C.拓撲排序D.求最短路徑
二、2.填空題(20題)21.設有下列程序:
#include<stdio.h>
#include<string.h>
main()
{inti;
chars[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>,則程序的輸出結果是______。
22.已知字符'A'的ASCII碼為65,以下程序運行后的輸出結果是【】。
#include<stdio.h>
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,b);
}
23.在E-R圖中,矩形表示【】。
24.函數(shù)sstrcmp的功能是對兩個字符串進行比較。當s所指字符串和t所指字符串相等時,返回值為0;當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp)。請?zhí)羁铡?/p>
#include<stdio.h>
intsstrcmp(char*s,char*t)
{while(*s&&*t&&*s==【】)
{s++;t++;}
return【】;
}
25.源程序文檔化要求程序應加注釋。注釋一般分為序言性注釋和【】注釋。
26.軟件定義時期主要包括______和需求分析兩個階段。
27.以下程序的運行結果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
28.以下程序的輸出結果是【】。
#defineMAX(x,y)(x)>(y)?(x)L:(y)
main()
{inta=5,b=2,C=3,d=3,t;
t=MAX(a+b,c+D)*10;
printf("%d\n",t);
}
29.下列程序的輸出結果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)<x)?*(ptr+y):x;
printf("%d\n",z);
}
30.設有以下定義和語句,則*(*(P+2)+1)的值為【】。
int[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
31.若x和a均是int型變量,則計算完x=(a=4,6*2)后的x值為______。
32.數(shù)據(jù)庫系統(tǒng)的三級模式分別為______模式、內(nèi)部級模式與外部級模式。
33.在一棵二叉樹上第6層的結點個數(shù)最多是______個。
34.下列函數(shù)從字符數(shù)組s[]中刪除和c一樣的字符,請在下面橫線處填空。voiddelete(s,C)chars[],c;{inti,j;for(i=j=0;();i++)if(s[i]!='c')s[j++]=s[i];s[j]="\0";}
35.請在以下程序第一行的下劃線處填寫適當內(nèi)容,使程序能正確運行。
______(double,double);
main()
{doublex,y;
scanf("%lf%lf",&x.&y);
printf("%lf\n…,max(x,y));
}
doublemax(doublea,doubleB)
{return(a>b?a=B);}
36.下列程序的輸出結果是______。
#defineP(A)printf("%d,",(int)(A))
#definePRINT(A)P(A);printf("theend")
main()
{inti,a=0;
for(i=1;i<5.i++)
PRINT(a+i);
printf("\n");
}
37.以下程序的輸出結果是【】。
main()
{chars[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);}
38.數(shù)據(jù)流的類型有______和事務型。
39.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)
while(s[i]){d[j]=【】;j++;}
d[j]=0;
40.有以下程序:
#include<string.h>
structSTU
{charname[10];
intnum;};
voidf(char*name,intnum)
{structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};
num=s[0].num;
strcpy(name,s[0].name);
}
main()
{structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;
p=&s[1];f(p->name,p->num);
printf("%s%d\n",p->name,p->num);
}
程序運行后的輸出結果是【】。
三、1.選擇題(20題)41.在C語言中,如果下面的變量都是血類型,則輸出的結果是______。sum=pad=5;pAd=sum++,pad++,++pAd;printf("%d\n",pad);
A.7B.6C.5D.4
42.設fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為______。A.EOFB.非0值C.0D.NULL
43.fwrite函數(shù)的一般調(diào)用形式是
A.fwrite(buffer,count,size,fp);
B.fwrite(fP,size,count,buffer);
C.fwrite(fp,count,size,buffer);
D.fwrite(buffer,size,count,fp);
44.已知字母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)
45.以下不正確的定義語句是
A.doublex[5]={2.0,4.0,6.0,8.0,10.0};
B.inty[5]={0,1,3,5,7,9};
C.charc1[]={'1','2','3','4','5'};
D.charc2[]={'\x10','\xa','\x8'};
46.下列程序的功能:給r輸入數(shù)據(jù)后計算半徑為r的圓面積s。程序在編譯時出錯。
main()
/*Beginning*/
{intr;floats;
scanf("%d",£r);
star*r*r;
printf("s=%f\n",s);
}
出錯的原因是()。
A.注釋語句書寫位置錯誤
B.存放圓半徑的變量r不應定義為整型
C.輸出語句中格式描述符非法
D.計算圓面積的賦值語句使用非法變量
47.有定義語句:"inta=1,b=2,c=3,x;",則以下選項中各程序段執(zhí)行后,x的值不為3
A.if(c<a)x=1;elseif(b<a)x=2:elsex=3;
B.if(a<3)x=3:elseif(a<2)x=2;elsex=1;
C.if(a<3)x=3;if(a<2)x=2;if(a<l)x=1;
D.if(a<b)x=b;if(b<c)x=cif(c<a)x=a;
48.下面程序的文件名為t.exe,在DOS下輸入的命令行參數(shù)為:ttomeetme<回車>
則程序輸出的結果是
#include"stdio.h"
main(argc,argv)
intargc;char*argv[];
{inti;
printf("%d\n",argc);}
A.3B.4C.2D.以上答案都不正確
49.下列不屬于軟件工程三要素的是
A.工具B.過程C.方法D.環(huán)境
50.視圖設計一般有3種設計次序,下列不屬于視圖設計的是______。
A.自頂向下B.由外向內(nèi)C.由內(nèi)向外D.自底向上
51.下列關于隊列的敘述中正確的是______。A.在隊列中只能插入數(shù)據(jù)B.在隊列中只能刪除數(shù)據(jù)C.隊列是先進先出的線性表D.隊列是先進后出的線性表
52.有下列程序:
main()
{intt,a=1,b=5,C=-2;
while(a>b>C)
{t=a;a=b;b=t;c++;}
printf("%d,%d,%d",a,b,C);
}
程序的輸出結果是()。
A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2
53.有以下程序:main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若運行時從鍵盤上輸入:6,5,65,66<回車>,則輸出結果是______。
A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6
54.設變量a、b、c、d和y都已正確定義并賦值。若有以下if語句
if(a<b)
if(c==d)y=0;
elsey=1;
該語句所表示的含義是
A.0a<b且c=dy={1a>=b
B.0a<b且c=dy={1a>=b且c≠d
C.0a<b且c=dy={1a<b且c≠d
D.0a<b且c=dy={1c≠d
55.若已定義x和y為double類型,則表達式:x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.5
56.
有以下程序:
main
{intx=102,y=012;
printf("%2d,%2d\n",x,y);
}
執(zhí)行后輸出結果是()。
A.10,01B.02,12C.102,10D.02,10
57.要正確定義并初始化一個數(shù)組a,它含有5個元素,則正確的語句是______。
A.inta[5]=(0,0,0,0,0);
B.inta[5]={};
C.inta[]={0,0,0,0,0};
D.inta[]={5*0};
58.下列關于標識符的說法中錯誤的是
A.合法的標識符是由字母、數(shù)字和下劃線組成
B.C語言的標識符中,大寫字母和小寫字母被認為是兩個不同的字符
C.C語言的標識符可以分為三類,即關鍵字、預定義標識符和用戶標識符
D.用戶標識符與關鍵字不同時,程序在執(zhí)行時將給出出錯信息
59.以下程序的輸出結果是()。#include<stdio.h>main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i<4;i+=2)printf("%d",p[i]);}
A.52B.51C.53D.97
60.若有說明語句:doubleop,a;,則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是()。
A.*p=&a;scanf("%1f",p);
B.*p=&a;scanf("%f",p);
C.p=&a;scanf("%1f",*p);
D.p=&a;scanf("%1f",p);
四、選擇題(20題)61.
62.
63.在C語言中,合法的長整型常數(shù)是()。
A.0.123456B.4962717C.9LD.5.321e2
64.下列敘述中正確的是()。
A.順序存儲結構只針對線性結構,鏈式存儲結構只針對非線性結構
B.線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的
C.線性表的鏈式存儲結構所需要的存儲空間一般要多于順序存儲結構
D.順序存儲結構能存儲有序表,鏈式存儲結構不能存儲有序表
65.
66.在一個C語言源程序文件中所定義的全局變量,其作用域為()。
A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍
67.
68.設有定義:
69.一個棧的初始狀態(tài)為空?,F(xiàn)將元素l、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,惻元素出棧的順序是()。A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.5432lEDCBA
70.程序流程圖(PFD.中的菱形代表的是()。
A.數(shù)據(jù)流B.控制流C.加工步驟D.邏輯條件
71.有以下程序
#include<stdio.h>
#include<stdlib.h>
intfun(intt)
{int*p;
p=(int*)malloc(sizeof(int));
*p=t;return*p;
}
main()
{inta;
a=fun(8);
printf("%d\n",a+fun(10));
}
程序的運行結果是
A.0B.10
C.18D.出錯
72.
73.
有以下結構說明和變量定義,指針p、q、r分別指向鏈表中的3個連續(xù)結點。
structnode
{intdata;structnode*next;)*p,*q,*r;
現(xiàn)要將q所指結點從鏈表中刪除,同時要保持鏈表的連續(xù),以下不能按要求完成操作的語句是()。
A.p->next=q->next;
B.P-next=P->next->next;
C.p->next=r;
D.p=q->next;
74.下列程序執(zhí)行后的輸出結果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}
A.5B.6C.7D.8
75.有以下程序程序執(zhí)行后的輸出結果是()。
A.abe,a23B.abe,123C.123,abeD.321,cba
76.下列敘述中正確的是()。A.線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的
B.線性表的鏈式存儲結構所需要的存儲空間一般要多于順序存儲結構
C.線性表的鏈式存儲結構所需要的存儲空間一般要少于順序存儲結構
D.線性表的鏈式存儲結構與順序存儲結構在存儲空間的需求上沒有可比性
77.
78.在C語言中,運算對象必須是整型數(shù)的運算符是()。
A.%B.\C.%和\D.**
79.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序運行后的輸出結果是______。
A.12353514B.12353513C.12343514D.12343513
80.有以下程序:
程序運行后的輸出結果是()。
A.2B.0C.元素ch[5]的地址D.字符y的地址
五、程序改錯題(1題)81.在主函數(shù)中從鍵盤輸入若干個數(shù)放人數(shù)組中,用0結束輸入并放在最后一個元素中。下列給定程序中,函數(shù)proc()的功能是計算數(shù)組元素中值為負數(shù)的平均值(不包括0)。例如,數(shù)組中元素的值為78、-65、-15、35、-45、0,則程序的運行結果為-41.666667。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)其功能是移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標為0~p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。例如,一維數(shù)組中的原始內(nèi)容為1、2、3、4、5、6、7、8、9、10;P的值為3。移動后,一維數(shù)組中的內(nèi)容應為5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){ inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; inti,p,n=15; printf(“Theoriginaldata:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\nEnterp:”); scanf(“%d”,&p); fun(a,p,n); printf(“\nThedataaftermoving:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\n”);}
參考答案
1.D
2.A
3.B解析:sizeof函數(shù)是取變量所占的存儲空間的字節(jié)數(shù),標識a代表常量121;constb=12;,其中數(shù)據(jù)類型可以缺省,默認為整型;enumc{a1,a2};定義了—個枚舉類型enumc,a1,a2為枚舉元素,在C編譯時,對枚舉元素按常量處理,它們的值按定義順序依次為0,1。因此它們的字節(jié)數(shù)均為2,2,2。
4.A
5.A
6.D在編寫程序時可以在程序中加入注釋。在添加注釋時,注釋內(nèi)容必須放在符號“/*”和“*/”之間,“/*”和“*/”必須成對出現(xiàn),“/*”與“*/”之間不可以有空格,選項A正確;注釋可以用英文,可以用中文,可以出現(xiàn)在程序中任意合適的地方,選項B正確;注釋部分只適用于閱讀,對程序的運行不起作用,選項C正確;使用“/*”和“*/”的注釋之間不可再嵌套“/*”和“*/”,選項D錯誤。故本題答案為D選項。
7.D執(zhí)行第一次for循環(huán)時,用表達式p[i][J]!=\o來判斷字符串數(shù)組指針P是否到達字符串的結尾,如果沒有到達,繼續(xù)執(zhí)行while中的語句。if語句表示(p[i][j]-\o)除2的余數(shù)不為0時,即字符串所有奇數(shù),執(zhí)行后面的語句。所以退出第1次for的循環(huán)體時,輸出為397,執(zhí)行第2次循環(huán)體。對字符串“2584”進行處理,輸出結果為5,因而最后輸出結果為3975。
8.C解析:每個C程序有且只有一個主函數(shù)main(),且程序必須從main函數(shù)開始執(zhí)行,并在main()函數(shù)中結束。
9.D解析:C語言規(guī)定,所有字符常量都可以化為整型常量來處理,因而字符常量也可以參與算術運算。注:字符常量參與算術運算時,其實是使用其對應的ASCII碼值進行計算。本題中,'a'對應的ASCII碼值是97。題中雖然沒有給'6'和'0'的ASCII碼值,但應該知道'6'-'0'是將字符'6'轉換成整數(shù)6的表達式,所以c1='a'+'6'-'0'=103,c2='a'+'3'-'0'=100,按照字符型輸出分別是g和d。
10.D解析:一般來說,一種數(shù)據(jù)的邏輯結構根據(jù)需要可以表示成多種存儲結構,因此,數(shù)據(jù)的邏輯結構與存儲結構不一定是一一對應的。選項A中的說法是錯誤的。雖然計算機的存儲空間是向量式的存儲結構,但由于一種數(shù)據(jù)的邏輯結構根據(jù)需要可以表示成多種存儲結構,例如,線性鏈表是線性表的鏈式存儲結構。一般來說,性表的鏈式存儲結構中,各數(shù)據(jù)結點的存儲序號是不連續(xù)的,并且各結點在存儲空間中的位置關系與邏輯關系也不一致。性鏈表中,各數(shù)據(jù)元素之間的前后件關系是由各結點的指針域來指示的。因此,數(shù)據(jù)的存儲結構不一定是線性結構。選項B中的說法也是錯誤的。雖然程序設計語言中的數(shù)組一般是順序存儲結構,但是,利用數(shù)組也能處理非線性結構。例如,滿二叉樹與完全二叉樹是非線性結構,但對于滿二叉樹與完全二叉樹來說,根據(jù)完全二叉樹的性質6,可以按層序進行順序存儲,即利用程序設計語言中的數(shù)組來存儲,這樣,不僅節(jié)省了存儲空間,又能方便地確定每一個結點的父結點與左右子結點的位置。對于一般的二叉樹來說,也可以將二叉樹中每一個結點的左指針、右指針以及數(shù)據(jù)域分別用三個數(shù)組中的對應元素來存儲,即實際上也是利用了程序設計語言中的數(shù)組來處理二叉樹這樣的非線性結構。選項C中的說法也是錯誤的。綜上所述,選項A、B與C中的說法都是錯誤的。
11.B
12.A解析:本題考查文件使用方式標識符,以“a+”方式打開一個已存在的文件,則表示保留文件中原有的數(shù)據(jù),文件的位置指針在文件末尾,此時,可以進行追加或讀操作。
13.C
14.A題目中定義了一個結構體數(shù)組c并初始化,指針pt指向c的第1個元素。則“++pt->x”為11,“pt->x”為10,“*pt->y”為1,“(pt++)->x”為20。故本題答案為A選項。
15.C首先計算表達式“a=9”;再計算表達式“a-=9”;即“a=a-9”,結果為0;最后計算表達式“a+=0”,即“a=a+0”,所以最終結果為0。故本題答案為C選項。
16.C根據(jù)題意,要求統(tǒng)計字符數(shù)組s中阿拉伯數(shù)字的個數(shù)?!癱hars[]=“012xy\\08s34f4w2”;”,其元素是字符型。字符‘0的ASCII值是48,字符‘\\0’的ASCII值是0,因此可以計算出‘\\0’之前阿拉伯數(shù)字的個數(shù),由字符數(shù)組s可知,有3個阿拉伯數(shù)字。故本題答案為C選項。
17.D本題考查如何引用數(shù)組元素的地址。選項A)中,p5引用的是af51的地址,而數(shù)組a只有5個元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯誤;選項B)中,*a1指的是將數(shù)組a的第一個元素加1;選項C)中,這種引用方式錯誤;選項D)中,&a[0]引用的是數(shù)組的首地址。
18.A++a與a++的區(qū)別是前者先自加再運算,后者是先運算后自加。
19.A本題考查兩個概念:①用單引號括起來的一個字符常量只能存放一個字符;②℃語言中沒有字符串變量,只能用字符數(shù)組來存儲字符串。
20.C
21.QTHRGQTHRG解析:strcmp(t,s)函數(shù)用來比較t和s所指字符串的大小,若t>s,則函數(shù)值大于0;若t=s,則函數(shù)值等于0:若t<s,則函數(shù)值小于0。strcpy(t,s)函數(shù)的功能是把字符數(shù)組s所指字符串的內(nèi)容復制到字符數(shù)組t所指的存儲空間中。本題中,t[10]='CDEF'。第一次循環(huán),s[10]='BADEF',if語句的控制條件strcmp(t,s)<0不成立,接著執(zhí)行第二次循環(huán).s='QTHRG',if語句的控制條件strcmp(t,s)<0成立,執(zhí)行下列的語句,將字符數(shù)組s所指字符串的內(nèi)容復制到字符數(shù)組t所指的存儲空間中,然后輸出字符數(shù)組t。
22.67G67G解析:由于\'5\'-\'3\'=2,所以a=\'A\'+\'5\'-\'3\'=\'C\',按'%d'格式輸出\'C\'的ASCII碼為67;同理,\'6\'-\'2\'=4,b=a+\'6\'-\'2\'=\'C\'+4=\'G\',按'%c'格式輸出為\'G\'。
23.實體實體解析:E-R模型中,有3個基本的抽象概念:實體、聯(lián)系和屬性。在E-R圖中,用矩形框表示實體,菱形框表示聯(lián)系,橢圓形框表示屬性。
24.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:函數(shù)sstrcmp()有兩個字符型指針變量,用來指向兩個字符串。比較兩個字符串的大小方法是:從第一個字符開始依次向后比較,若對應的字符相等則接著比較下一個字符,一直到兩個字符串中對應字符不等,或者有一個為\\0,此時字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為\\0,且*s和*t相同,第一處應填“*t”或其他等價形式。根據(jù)題意可知第二處應填*s-*t或其等價形式。
25.功能性功能性
26.可行性研究可行性研究解析:軟件生命周期一般包括可行性研究與需求分析、設計、實現(xiàn)、測試、交付使用及維護等,還可以將軟件生命周期分為三個階段:①軟件定義階段:可行性研究和需求分析;②軟件開發(fā)階段:設計、實現(xiàn)和測試;③軟件運行維護階段:交付使用和維護。
27.12300123001,2,3,0,0,1,2,3,0,0,解析:本題考查文件讀寫函數(shù)fread和fwrite的用法。fwrite函數(shù)將數(shù)組a的前5個元素輸出到文件fp中兩次,共10個字節(jié),再調(diào)用fread函數(shù)從文件fp中讀取這10個字節(jié)的數(shù)據(jù)到數(shù)組a中,此時數(shù)組a的內(nèi)容就變?yōu)閧1,2,3,0,0,1,2,3,0,0},最后的輸出結果為'1,2,3,0,0,1,2,3,0,0,'。
28.77解析:在C語言中,宏定義是直接替換的,所以在對表達式MAX(a+b,c+d)*10進行替換后,表達式變?yōu)?a+b)>(c+d)?(a+b):(c+d)*10。
在這個條件表達式中,(a+b)>(c+d)為真,所以用(a+b)的值為整個表達式的值(否則用(c+d)*10的值作為整個表達式的值),而(a+b)的值為7。所以整個表達式的值為7。
29.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關系表達式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=2,所以z=2;當y-1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=4,所以z=4;當y=2時,*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=6,所以z=6;循環(huán)結束。因此輸出z的結果為6。
30.6060解析:本題定義了一個3行2列的二維數(shù)組a,并定義了一個指向兩個元素的一維數(shù)組指針p,讓p指向二維數(shù)組a的首行。*(*(p+2)+1)是引用a[2][1],其值是60。
31.1212解析:x=(表達式1,表達式2,…)的形式,結果為最后一個表達式的值:x=(a=4,6*2)=2*6=12。
32.概念(或概念級)概念(或概念級)
33.3232解析:根據(jù)二叉樹的性質,在二叉樹的第K層上,最多有2k-1個結點。所以,第6層的結點數(shù)最多為32。
34.s[i]!='\0's[i]!='\\0'解析:本題是要刪除字符數(shù)組中和c一樣的字符,for循環(huán)實現(xiàn)的功能是逐個讀出字符數(shù)組s中的元素,并和字符c做比較,直到遇到字符串結束標志'\\0',結束循環(huán),所以橫線上應該填s[i]!='\\0'。
35.doublemax或externdoublemaxdoublemax或externdoublemax解析:函數(shù)聲明是對所用到的函數(shù)的特征進行必要的聲明,編譯系統(tǒng)以函數(shù)聲明中給出的信息為依據(jù),對調(diào)用表達式進行檢測,以保證調(diào)用表達式與函數(shù)之間的參數(shù)正確傳遞.函數(shù)聲明的一般格式為:類型標識符函數(shù)名(類型標識符形參,…);這些信息就是函數(shù)定義中的第一行的內(nèi)容。本題中main()函數(shù)需要調(diào)用max()函數(shù),在main()之前就需要聲明函數(shù)max(),并且可以用extern說明符使變量的作用域擴充到需要用到它的函數(shù),所以,填寫doublemax(或externdoublemax)。
36.1234theend1,2,3,4,theend解析:本題考查帶參數(shù)的宏的定義。第1次循環(huán),i=1時,調(diào)用PRINT(1),P(1)輸出1;第2次循環(huán),i=2時,調(diào)用PRINT(2),P(2)輸出2:第3次循環(huán),i=3時,調(diào)用PRINT(3),P(3)輸出3:第4次循環(huán),i=4時,調(diào)用PRINT(4),P(4)輸出4,theend。
37.BCDCDDBCD\r\nCD\r\nD解析:本題考查指向字符串的指針的運算方法。指針變量p首先指向字符串中的第一個字符A,執(zhí)行p=s+1后,p指向字符串中的第二個字符B,然后輸出值“BCD”并換行,依次執(zhí)行循環(huán)語句。
38.變換型變換型
39.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其所有元素。本題應使用i的自增后置來實現(xiàn)。
40.SunDan20042SunDan20042解析:f函數(shù)中形參1用的是顯式傳地址的方式,因此p->name的值發(fā)生改變,而形參2用的傳值的方式,在調(diào)用時不改變實參的值,因此p->num的值不發(fā)生變化。
41.C
42.B(27)B)解析:函數(shù)feof的功能是:測試fp所指的文件的位置是否已達到文件尾,如果達到文件尾,則函數(shù)返回非0值,否則返回0,表示文件尚未結束。
43.D解析:fwrite的形式是fwrite(buffer,size,count,fp),buffer表示準備輸出的數(shù)據(jù)塊的起始地址,size表示每個數(shù)據(jù)塊的字節(jié)數(shù),count用來指定每寫一次或輸出的數(shù)據(jù)塊,fp為文件指針。
44.B解析:C語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在“A”和“Z”之間就可以了,選項A和C符合要求。函數(shù)isalpha用來確定一個字符是否為字母,大寫字母的ASCII碼值的范圍為65-90,所以如果一個字母的ASCII碼小于91,那么就能確定它是大寫字母。
45.B解析:在一維數(shù)組中要注意的是作為下標表達式的常量表達式的值必須是大于等于0,選項B)中定義有5個元素,但賦值時有6個元素,所以是錯誤的。
46.D解析:在C語言程序中,可以用一個符號名宋代表一個常量,稱為符號常量。這個符號名必須在程序中進行特別的“指定”,并符合標識符的命令規(guī)則。在本題中圓周率冗是一個符號常量,但在程序中并沒有指定其值,所以編譯器找不到其值就會報錯。所以選項D)正確。
47.C解析:本題考核的知識點是if-else語句的程序分析。
選項A首先判斷if語句條件中表達式的值“3<1”為假,然后執(zhí)行最近的else后面的語句,該else后面又為if-else語句,在這個if-else語句中首先判斷該if語句條件中表達式的值“2<1”為假,程序執(zhí)行其最近的else后面的語句,將3賦值給x。
選項B中首先判斷if語句條件中表達式的值“1<3”為真,然后執(zhí)行最近的else后面的語句“x=3”,后面的else不再執(zhí)行,最后x的值為3。
選項C中,首先選執(zhí)行第一條if,由于“1<3”為真,執(zhí)行此if后面的語句“x=3”,接著執(zhí)行第二條if語句,由于“1<2”為真,執(zhí)行此if后面的語句“x=2”,接著執(zhí)行第三條語句,由于“1<1”為假,后面的語句不執(zhí)行,所以最后的x值為2不為3。
選項D中,首先選執(zhí)行第一條if語句,由于“a<b”為真,執(zhí)行此if后面的語句“x=b”;接著執(zhí)行第二條if語句,由于“b<c”,為真,執(zhí)行此if后面的語句“x=c”,接著執(zhí)行第三條if語句,由于“c<a”為假,后面的語句不執(zhí)行,所以最后的x值為c即為3.所以,4個選項中選項c符合題意。
48.B解析:argc中存入的是命令行中字符串的個數(shù)。argv是一個指向字符型的指針數(shù)組的指針。
49.D解析:軟件工程三要素是方法、工具和過程。
50.B解析:視圖設汁一般有3種設計次序,它們分別是自頂向下、自底向上和由內(nèi)
向外,它們又為視圖設計提供了具體的操作方法,設計者可根據(jù)實際情況靈活掌握,可以
單獨使用也可混合使用。
注意:數(shù)據(jù)庫概念設計的過程:首先選擇局部應用,再進行局部視圖設計,最后
對局部視圖進行集成得到概念模式。
51.C隊列是指允許在一端進行插入、而在另一端進行刪除的線性表,選項A和選項B錯誤。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。在隊列中,最先插入的元素將最先能夠被刪除,反之,最后插入的元素將最后才能被刪除。所以,隊列又稱為“先進先出”或“后進后出”的線性表,它體現(xiàn)了“先來先服務”的原則,選項C正確,選項D錯誤。
52.A解析:本題考查while循環(huán)。先判斷while循環(huán)的控制表達式是否成立,發(fā)現(xiàn)a>b>c不成立,所以不執(zhí)行循環(huán)。直接輸出a、b、c的值。
53.A解析:char型數(shù)據(jù)類型以%d的形式輸入時,輸入的是ASCII值。65是字符A的ASCII碼值,66是字符B的ASCII值。
54.C解析:考查if語句的使用。整個語句都是以a<b為假設的,在a<b的情況下,如果c=d,則y=0;否則y=1。所以答案為選項C)。
55.C解析:這是一個逗號表達式,它的值應為表達式y(tǒng)=x+3/2的值,而前一個表達式已給x賦值1,在沒有進行類型轉換的情況下,3/2的值為1,所以x+3/2的值應為2.0。
56.C解析:本題中,“printf('%2d,%2d\\n',x,y)”表示以逗號隔開輸出兩個十進制整數(shù),每個整數(shù)域寬是2。而在C語言中規(guī)定:當域寬小于實際寬度時域寬不起作用,按實際寬度輸出,因此最后的輸出值為102和10(y的初值012表示八進制整數(shù)12,等于十進制的10)。所以,4個選項中選項C符合題意。
57.C解析:A項是錯誤的,賦值時用的是花括號而不是圓括號。B項錯在不能初始化時在花括號內(nèi)為空。D項錯在不可以用表達式對數(shù)組一一賦值。C項雖然沒有直接定義數(shù)組的大小,但是初始化時只賦了5個元素的值,系統(tǒng)會自動定義數(shù)組的大小為5,這種形式是正確的。
58.D解析:用戶標識符與關鍵字相同時,程序在編譯過程中將給出出錯信息。注意:選項D)應該改為用戶標識符與關鍵字相同,程序在編譯時將給出出錯信息。注意:合法的標識符第一個字符必須為字母或下劃線。
59.C解析:本題的考查點是通過指針引用數(shù)組元素。i=0時,輸出P[0],也就是x[1][1],輸出5;i=2時,輸出p[2],即P[2+0],也就是x[2][0],輸出3。
60.D解析:double*p,a;語句表示定義了一個指向雙精度型的指針變量p和雙精度型變量a,而語句p=&a表示將變量a的地址賦給指針變量p;scanf('%1f',p)表示用鍵盤輸入的數(shù)賦給指針變量p所指向的地址單元中。scanf()函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%if(或%le)。否則,數(shù)據(jù)不能正確輸入。所以選項D)為正確答案。
61.A
62.D
63.C選項A)和D)是實型而非整型。
64.C\n線性表的順序存儲結構是把線性表中相鄰的元素存放在相鄰的內(nèi)存單元中,而鏈式存儲結構是用一組任意存儲單元來存放表中的數(shù)據(jù)元素,為了表示出每個元素與其直接后繼元素之間的關系,除了存儲元素本身的信息外,還需存儲一個指示其直接后繼的存儲位置信息。故線性表的鏈式存儲結構所需的存儲空間一般要多于順序存儲結構。
\n
65.D
66.D
\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結束止。當全局變量定義在后,引用它的函數(shù)在前時,應該在引用它的函數(shù)中用extern對此全局變量進行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。
\n
67.B
68.A選項中可以在聲明變量的同時為data2賦值,但是“data2=(2,6);”應寫作
“d2={2,61;’',因此選擇A)。
69.B棧按后進先出的原則組織數(shù)據(jù),因此入棧最晚的最先出棧,因此本題答案為B)。
70.D程序流程圖是軟件設計過程中常用的圖形描述工具之一。構成程序流程圖的最基本符號有:“→”或“↓”表示控制流,“口”表示加工步驟,“
”表示邏輯條件。
71.C本題考查函數(shù)的調(diào)用。題目給出的程序可以分為兩個部分,一個是函數(shù)fun,另一個是主函數(shù)main。fun函數(shù)的功能是輸入一個整型變量t,設置一個指向該整型變量的指針p,并將該指針所指向的值返回給main函數(shù)。main函數(shù)中兩次調(diào)用了fun函數(shù),第一次變量t的值為8,第二次變量t的值為10,第一次返回值8,使得a=8,第二次返回值10,使得a+fun(10)=18。
72.B
73.D
\n本題考查鏈表結點的刪除,q一>next中存放的是r所指結點的首地址,將r所指結點的首地址存于p--next中,則實現(xiàn)刪除q所指點的功能,并保持鏈表連續(xù),P所指點與r所指結點相連。
\n
74.D解析:本題中的宏調(diào)用MA(1+a+b)展開后的結果是1+a+b*(1+a+b-1)=1+1+2*(1+1+2-1)=2+2*3=8。所以輸出的結果是8,選項D正確。
75.A字符串是一個特殊的數(shù)組,按照數(shù)組的規(guī)則,sl應該指向的是數(shù)組的首地址,即“abc”的第一個字符的地址,s2指向的是“123”的第一個字符的地址。調(diào)用swap函數(shù)之后交換的是兩個字符串的第一個字符a和’l。的內(nèi)容,因此打印輸出為A)。
76.B線性鏈式存儲結構中每個結點都由數(shù)據(jù)域與指針域兩部分組成,增加了存儲空間,所以一般要多于順序存儲結構。
77.A
78.A解析:在C語言中,“%”運算符兩側的運算數(shù)必須是整型。
79.A解析:自增運算符“++”,放在變量之前表示在使用變量之前,先使變量的值加1;放在變量之后表示在使用變量之后,再使變量的值加1。第一條輸出語句,先輸出m=12,m再自加1,變成13,n先自加1再輸出,輸出n=35;第二條輸出語句,先輸出n=35,n再自加1,變成36,m先自加1再輸出,輸出m=14。
80.A語句pc=eh;使得指針變量指向字符數(shù)組ch的首地址,即指向字符‘u’,則pc+5指向的是字符向后移動5位,指向字符‘z’。所以輸出的$pc+5的值即為‘Z’。因此A選項正確。
81.82.voidfun(int*w,intp,intn){ intX,j,ch; for(x=0;x<=p;x++) { ch=w[0]; for(j=1;j /*通過for循環(huán)語句,將p+1~n-1(含n-1)之間的數(shù)組元素依次向前移動p+1個存儲單元*/ { w[j-1]=w[j]; } w[n-1]=ch; /*將下標為0~p的數(shù)組元素逐一賦給數(shù)組w[n-1]*/ }}本題要求把下標為0~p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。可以根據(jù)輸入的p值,通過for循環(huán)語句,將p+1~n-1(含n-1)之間的數(shù)組元素依次向前移動p+1個存儲單元,即w[j-1]=w[j];。同時將下標為0~p的數(shù)組元素逐一賦給數(shù)組w[n-1],也就是通過語句w[n-1]=ch;來實現(xiàn)此操作。2021年甘肅省嘉峪關市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.合法的數(shù)組定義是()
A.inta[]="string";
B.inta[5]={0,1,2,3,4,5};
C.chara="string";
D.chara={0,1,2,3,4,5};
2.若輸入“abcdef”、“abdef”,以下程序的輸出結果為()。#include<stdio.h>#lnclude<string.h>main(){intn;chars1[20],s2[20],p1,*p2;scanf("%s",s1);scanf("%s",s2);P1=s1;p2=s2;n=strcmp(p1,p2);printf("%d\n",n);}
A.-1B.0C.abcdefD.abdef
3.下面程序的輸出結果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}
A.121,0,4B.2,2,2C.0,2,4D.0,2,2
4.
5.一個隊列的入隊序列是a,b,c,d,則出隊序列是()。
A.a,b,c,dB.a,c,b,dC.d,c,b,aD.a,c,b,d
6.以下關于注釋的敘述中錯誤的是()。
A.注釋的邊界符號“/”和“*”之間不允許加入空格
B.C語言允許注釋出現(xiàn)在程序中任意合適的地方
C.注釋的內(nèi)容僅用于閱讀,對程序的運行不起作用
D.注釋的邊界符號“/*”和“*/”必須成對出現(xiàn)且可以嵌套
7.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序執(zhí)行后的輸出結果是()。A.35B.37C.39D.3975
8.C語言可執(zhí)行程序的開始執(zhí)行點是()。
A.包含文件中的第一個函數(shù)B.程序中第一個函數(shù)C.程序中的main()函數(shù)D.程序中第一條語句
9.已知字母a的ASCII碼為十進制數(shù)97,下面程序的輸出結果是()。#include<stdio.h>main(){charc1,c2;c1='a'+'6'-'0';c2='a'+'3'-'0';printf("%c,%c\n",c1,c2);}
A.輸出無定值B.d,eC.e,fD.g,d
10.下列敘述中正確的是()。
A.數(shù)據(jù)的邏輯結構與存儲結構必定是一一對應的
B.由于計算機存儲空間是向量式的存儲結構,因此,數(shù)據(jù)的存儲結構一定是線性結構
C.程序設計語言中的數(shù)組一般是順序存儲結構,因此,利用數(shù)組只能處理線性結構
D.以上三種說法都不對
11.針對二分查找算法,假設一個有序數(shù)組有136個元素,那么要查找到第10個元素,需要比較的元素為()
A.68,34,17,9,13,11,10
B.68,34,17,8,12,10
C.69,35,18,10
D.68,34,18,9,13,11,10
12.若以“a+”方式打開一個已存在的文件,則下列敘述正確的是()。
A.文件打開時,原有文件內(nèi)容不被刪除,位置指針移到文件末尾,可以進行添加或讀操作
B.文件打開時,原有文件內(nèi)容不被刪除,只能進行讀操作
C.文件打開時,原有文件內(nèi)容被刪除,只能進行寫操作
D.以上三種說法都不正確
13.
14.有以下程序:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下選項中表達式值為11的是()。
A.++p->xB.pt->xC.*pt->yD.(pt++)->x
15.表達式“a+=a-=a=9”的值是()。
A.18B.-9C.0D.9
16.有以下程序:#include<stdio.h>main(){chars[]=“012xy\08s34f4w2”;inti,n=0;for(i=0;s[i]|=0;i++) if(s[i]>=‘0’&&s[i]<=“9”)n++;printf(“%d\n”,n);}程序運行后的輸出結果是()。
A.7B.0C.3D.8
17.若有以下定義,則對a數(shù)組元素地址的正確引用是()。
inta[5],*p=a;A.A.p5B.*a1C.&a1D.&a[0]
18.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序運行后的輸出結果是()。A.b,bB.b,cC.a,bD.a,c
19.下列字符數(shù)組初始化語句中,不正確的是()。
A.charc[]=goodmorning;
B.charc[20]="goodmorning";
C.charc[]={a,b,c,d);
D.charc[]={"ffgoodmorning"};
20.可以判斷一個有向圖中是否含有回路的方法為()。
A.廣度優(yōu)先遍歷B.深度優(yōu)先遍歷C.拓撲排序D.求最短路徑
二、2.填空題(20題)21.設有下列程序:
#include<stdio.h>
#include<string.h>
main()
{inti;
chars[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>,則程序的輸出結果是______。
22.已知字符'A'的ASCII碼為65,以下程序運行后的輸出結果是【】。
#include<stdio.h>
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,b);
}
23.在E-R圖中,矩形表示【】。
24.函數(shù)sstrcmp的功能是對兩個字符串進行比較。當s所指字符串和t所指字符串相等時,返回值為0;當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp)。請?zhí)羁铡?/p>
#include<stdio.h>
intsstrcmp(char*s,char*t)
{while(*s&&*t&&*s==【】)
{s++;t++;}
return【】;
}
25.源程序文檔化要求程序應加注釋。注釋一般分為序言性注釋和【】注釋。
26.軟件定義時期主要包括______和需求分析兩個階段。
27.以下程序的運行結果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
28.以下程序的輸出結果是【】。
#defineMAX(x,y)(x)>(y)?(x)L:(y)
main()
{inta=5,b=2,C=3,d=3,t;
t=MAX(a+b,c+D)*10;
printf("%d\n",t);
}
29.下列程序的輸出結果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)<x)?*(ptr+y):x;
printf("%d\n",z);
}
30.設有以下定義和語句,則*(*(P+2)+1)的值為【】。
int[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
31.若x和a均是int型變量,則計算完x=(a=4,6*2)后的x值為______。
32.數(shù)據(jù)庫系統(tǒng)的三級模式分別為______模式、內(nèi)部級模式與外部級模式。
33.在一棵二叉樹上第6層的結點個數(shù)最多是______個。
34.下列函數(shù)從字符數(shù)組s[]中刪除和c一樣的字符,請在下面橫線處填空。voiddelete(s,C)chars[],c;{inti,j;for(i=j=0;();i++)if(s[i]!='c')s[j++]=s[i];s[j]="\0";}
35.請在以下程序第一行的下劃線處填寫適當內(nèi)容,使程序能正確運行。
______(double,double);
main()
{doublex,y;
scanf("%lf%lf",&x.&y);
printf("%lf\n…,max(x,y));
}
doublemax(doublea,doubleB)
{return(a>b?a=B);}
36.下列程序的輸出結果是______。
#defineP(A)printf("%d,",(int)(A))
#definePRINT(A)P(A);printf("theend")
main()
{inti,a=0;
for(i=1;i<5.i++)
PRINT(a+i);
printf("\n");
}
37.以下程序的輸出結果是【】。
main()
{chars[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);}
38.數(shù)據(jù)流的類型有______和事務型。
39.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)
while(s[i]){d[j]=【】;j++;}
d[j]=0;
40.有以下程序:
#include<string.h>
structSTU
{charname[10];
intnum;};
voidf(char*name,intnum)
{structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};
num=s[0].num;
strcpy(name,s[0].name);
}
main()
{structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;
p=&s[1];f(p->name,p->num);
printf("%s%d\n",p->name,p->num);
}
程序運行后的輸出結果是【】。
三、1.選擇題(20題)41.在C語言中,如果下面的變量都是血類型,則輸出的結果是______。sum=pad=5;pAd=sum++,pad++,++pAd;printf("%d\n",pad);
A.7B.6C.5D.4
42.設fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為______。A.EOFB.非0值C.0D.NULL
43.fwrite函數(shù)的一般調(diào)用形式是
A.fwrite(buffer,count,size,fp);
B.fwrite(fP,size,count,buffer);
C.fwrite(fp,count,size,buffer);
D.fwrite(buffer,size,count,fp);
44.已知字母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)
45.以下不正確的定義語句是
A.doublex[5]={2.0,4.0,6.0,8.0,10.0};
B.inty[5]={0,1,3,5,7,9};
C.charc1[]={'1','2','3','4','5'};
D.charc2[]={'\x10','\xa','\x8'};
46.下列程序的功能:給r輸入數(shù)據(jù)后計算半徑為r的圓面積s。程序在編譯時出錯。
main()
/*Beginning*/
{intr;floats;
scanf("%d",£r);
star*r*r;
printf("s=%f\n",s);
}
出錯的原因是()。
A.注釋語句書寫位置錯誤
B.存放圓半徑的變量r不應定義為整型
C.輸出語句中格式描述符非法
D.計算圓面積的賦值語句使用非法變量
47.有定義語句:"inta=1,b=2,c=3,x;",則以下選項中各程序段執(zhí)行后,x的值不為3
A.if(c<a)x=1;elseif(b<a)x=2:elsex=3;
B.if(a<3)x=3:elseif(a<2)x=2;elsex=1;
C.if(a<3)x=3;if(a<2)x=2;if(a<l)x=1;
D.if(a<b)x=b;if(b<c)x=cif(c<a)x=a;
48.下面程序的文件名為t.exe,在DOS下輸入的命令行參數(shù)為:ttomeetme<回車>
則程序輸出的結果是
#include"stdio.h"
main(argc,argv)
intargc;char*argv[];
{inti;
printf("%d\n",argc);}
A.3B.4C.2D.以上答案都不正確
49.下列不屬于軟件工程三要素的是
A.工具B.過程C.方法D.環(huán)境
50.視圖設計一般有3種設計次序,下列不屬于視圖設計的是______。
A.自頂向下B.由外向內(nèi)C.由內(nèi)向外D.自底向上
51.下列關于隊列的敘述中正確的是______。A.在隊列中只能插入數(shù)據(jù)B.在隊列中只能刪除數(shù)據(jù)C.隊列是先進先出的線性表D.隊列是先進后出的線性表
52.有下列程序:
main()
{intt,a=1,b=5,C=-2;
while(a>b>C)
{t=a;a=b;b=t;c++;}
printf("%d,%d,%d",a,b,C);
}
程序的輸出結果是()。
A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2
53.有以下程序:main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若運行時從鍵盤上輸入:6,5,65,66<回車>,則輸出結果是______。
A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6
54.設變量a、b、c、d和y都已正確定義并賦值。若有以下if語句
if(a<b)
if(c==d)y=0;
elsey=1;
該語句所表示的含義是
A.0a<b且c=dy={1a>=b
B.0a<b且c=dy={1a>=b且c≠d
C.0a<b且c=dy={1a<b且c≠d
D.0a<b且c=dy={1c≠d
55.若已定義x和y為double類型,則表達式:x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.5
56.
有以下程序:
main
{intx=102,y=012;
printf("%2d,%2d\n",x,y);
}
執(zhí)行后輸出結果是()。
A.10,01B.02,12C.102,10D.02,10
57.要正確定義并初始化一個數(shù)組a,它含有5個元素,則正確的語句是______。
A.inta[5]=(0,0,0,0,0);
B.inta[5]={};
C.inta[]={0,0,0,0,0};
D.inta[]={5*0};
58.下列關于標識符的說法中錯誤的是
A.合法的標識符是由字母、數(shù)字和下劃線組成
B.C語言的標識符中,大寫字母和小寫字母被認為是兩個不同的字符
C.C語言的標識符可以分為三類,即關鍵字、預定義標識符和用戶標識符
D.用戶標識符與關鍵字不同時,程序在執(zhí)行時將給出出錯信息
59.以下程序的輸出結果是()。#include<stdio.h>main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i<4;i+=2)printf("%d",p[i]);}
A.52B.51C.53D.97
60.若有說明語句:doubleop,a;,則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是()。
A.*p=&a;scanf("%1f",p);
B.*p=&a;scanf("%f",p);
C.p=&a;scanf("%1f",*p);
D.p=&a;scanf("%1f",p);
四、選擇題(20題)61.
62.
63.在C語言中,合法的長整型常數(shù)是()。
A.0.123456B.4962717C.9LD.5.321e2
64.下列敘述中正確的是()。
A.順序存儲結構只針對線性結構,鏈式存儲結構只針對非線性結構
B.線性表的鏈式存儲結構與順序存
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 棗陽運力課堂考試題目及答案
- 養(yǎng)老院老人康復理療服務質量管理制度
- 養(yǎng)老院老人健康監(jiān)測人員激勵制度
- 養(yǎng)老院環(huán)境衛(wèi)生制度
- 高一數(shù)學套卷題目及答案
- 辦公室員工健康與安全管理制度
- 邊防協(xié)管員培訓制度
- 試析民商事仲裁中的證據(jù)制度
- 行政單位廉潔自律制度
- 2025年新泰17年事業(yè)單位考試及答案
- 市政設施巡查及維護方案
- 大型活動安保工作預案模板
- 2025年文化遺產(chǎn)數(shù)字化保護與開發(fā):技術創(chuàng)新與經(jīng)濟效益研究報告
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責任公司社會成熟人才招聘備考題庫及答案詳解參考
- 南瑞9622型6kV變壓器差動保護原理及現(xiàn)場校驗實例培訓課件
- 統(tǒng)編版(2024)七年級上冊道德與法治期末復習必背知識點考點清單
- 山西焦煤考試題目及答案
- 2026年春節(jié)放假前員工安全培訓
- (2025版)成人肺功能檢查技術進展及臨床應用指南解讀課件
- 《春秋》講解課件
- 青少年抑郁障礙的護理與康復訓練
評論
0/150
提交評論