版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022年河北省石家莊市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.若有以下定義和語句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);則輸出結果()
A.2,MB.3,EC.2,ED.輸出項與對應的格式控制不一致,輸出結果不確定
2.執(zhí)行下列程序后,輸出的結果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/S(k+m):printf("%d",a);}A.1B.4C.9D.0
3.閱讀以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("請輸人2個數:");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}該程序在編譯時產生錯誤,其出錯原因是()。A.定義語句出錯,case是關鍵字,不能用做用戶自定義標識符
B.定義語句出錯,printF不能用做用戶自定義標識符
C.定義語句無錯,scanf不能作為輸入函數使用
D.定義語句無錯,printf不能輸出case的值
4.以下敘述中錯誤的是()。
A.在同一源文件中,函數名必須唯一
B.凡是帶有返回值的庫函數,都不能通過加分號而作為獨立的語句出現(xiàn)
C.不同函數中的形式參數可以同名
D.返回基本數據類型的庫函數的調用,均可以出現(xiàn)在賦值號右邊的表達式中
5.標準庫函數fgets(s,n,file)的功能是()。
A.從文件file中讀取長度為n的字符串存入字符數組s中
B.從文件file中讀取長度不超過n-1個字符的字符串放到字符數組s中
C.從文件file中讀取n個字符串存入字符數組s中
D.從文件file中讀取長度為n-1個字符的字符串存入字符數組s中
6.設有二維數組A7×8,每個數據元素占8個字節(jié)存儲單元,順序存放,A第一個元素A0,0的存儲地址為1000,按行優(yōu)先存放時,元素A3,4的地址為()。
A.1224B.1208C.1200D.1216
7.已知函數test定義為()。A.執(zhí)行函數test后,函數沒有返回值
B.執(zhí)行函數test后,函數不再返回
C.執(zhí)行函數test后,函數返回任意類型值
D.以上三個答案都是錯誤的
8.設x為int型變量,則執(zhí)行以下語句后,x的值為()。x=10;x=x-=x-x;
A.10B.20C.40D.30
9.高度為h的滿二叉樹的結點數是________個。
A.log2h+1B.2h+1C.2h-1D.2h-1
10.以下選項中,當x為大于l的奇數時,值為0的表達式是
A.x%2==1B.x/2C.x%2!=0D.x%2==0
11.以下程序的輸出結果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}
A.abe+ABC=DEFdef
B.abc+abe=defdef
C.abcaABCDEFdef
D.abcabcdefdef
12.在單鏈表中,增加頭結點的目的是()。
A.方便運算的實現(xiàn)B.使單鏈表至少有一個結點C.標識表結點中首結點的位置D.說明單鏈表是線性的鏈式存儲實現(xiàn)
13.程序流程圖中有箭頭的線段表示的是()。
A.圖元關系B.數據流C.控制流D.調用關系
14.以下敘述中錯誤的是()。
A.在一個函數內的復合語句中定義的變量在本函數范圍內有效
B.在一個函數內定義的變量只在本函數范圍內有效
C.在不同的函數中可以定義相同名字的變量
D.函數的形參是局部變量
15.
16.fseek函數的正確調用形式是()。
A.fseek(文件指針,起始點,位移量)
B.fseek(文件指針,位移量,起始點)
C.fseek(位移量,起始點,文件指針)
D.fseek(起始點,位移量,文件指針)
17.將兩個字符串連接起來組成一個字符串時,選用()函數。A.strlen()B.strcpy()C.strcat()D.strcmp()
18.下述關于數據庫系統(tǒng)的敘述中,正確的是()。
A.數據庫系統(tǒng)減少了數據冗余
B.數據庫系統(tǒng)避免了一切冗余
C.數據庫系統(tǒng)中數據的一致性是指數據類型一致
D.數據庫系統(tǒng)比文件系統(tǒng)能管理更多的數據
19.廣義表((a))的表尾是()。
A.aB.(a)C.((a))D.()
20.計算機算法指的是()。
A.計算方法B.排序方法C.解決問題的有限運算序列D.調度方法
二、2.填空題(20題)21.實體之間的聯(lián)系可以歸結為一對一的聯(lián)系,一對多的聯(lián)系與多對多的聯(lián)系。如果一個學校有許多學生,而一個學生只屬于一個學校,則實體集學校與實體集學生之間的聯(lián)系屬于【】的聯(lián)系。
22.以下程序可把輸入的十進制數以十六進制數的形式輸出,請?zhí)羁铡?/p>
#inelude<stdio.h>
main()
{eharb[17]={"0123456789ABCDEF"};
intc[64],d,i=0,base=16;
longn;
printf("Enteranumber:\n");
seanf("%ld",&n);
do{c[i]=【】;i++;n=n/base;}
while(n!=0);
printf("Transmitenewbase:\n");
for(--i;i>=0;--i)
{d=c[i];printf("%c",b【】);}
printf("\n");
}
23.按照邏輯結構分類,結構可以分為線性結構和非線性結構,棧屬于______。
24.請在以下程序第一行的下劃線處填寫適當內容,使程序能正常運行。
#include<stdio.h>
【】(double,double);
main()
{doublex,y;
scanf("%If%If",&x,&y);
printf("%If\n",max(x,y));
}
doublemax(doublea,doubleb)
{return(a>b?a:b);}
25.診斷和改正程序中錯誤的工作通常稱為【】。
26.下列程序的輸出結果是【】。
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d%d\n",c,d);
}
27.用樹型結構表示實體類型及實體間聯(lián)系的數據模型稱為【】。
28.若a=10,b=20,則表達式!(a<b)的值是【】。
29.若從鍵盤輸入58,則以下程序輸出的結果是【】。
main()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);}
30.以下程序的輸出結果是()。#include<stdio.h>main(){inti=10,j=0;do{j=j+i;i--;}while(i>5);printf("%d\n",j);}
31.E-mail地址由用戶名和域名兩部分組成,這兩部分的分隔符為【】。
32.函數fun的功能是:根據以下公式求p的值,結果由函數值返回。m與n為兩個正數,且要求m>n。
例如:m=12,n=8時,運行結果應該是495.000000。請在題目的空白處填寫適當的程序語句,將該程序補充完整。
#include<stdio.h>
floatfun(intm,intn)
{inti;
doublep=1.0;
for(i=1;i<=m;i++)【】;
for(i=1;i<=n;i++)【】;
for(i=1;i<=m-n;i++)p=p/i;
returnp;
}
main()
{printf("p=%f\n",fun(12,8));
}
33.以下程序運行后的輸出結果是【】。
intf(inta[],intn)
{
if(n>=1)
returnf(a,n-1)+a[n-1];
else
return0;
}
main()
{
intaa[5]={1,2,3,4,5},s;
s=f(aa,5);
printf("%d\n",s);
}
34.以下sstrcpy()函數實現(xiàn)字符串復制,即將t所指字符串復制到s所指向內存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>
voidsstrcpy(char*s,char*t)
{while(*s++=______);}
main()
{charstr1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
35.下面程序的功能是將一個字符串str的內容顛倒過來,請?zhí)羁铡?/p>
#include<string.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.以下程序運行后的輸出結果是______。
main()
{
inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d%d%d\n",a,b,C);
}
37.數據結構包括數據的邏輯結構、數據的【】以及列數據的操作運算。
38.需求分析的最終結果是產生【】。
39.下面函數要求計算兩個整數x,y之和,并通過形參返回該值,請?zhí)羁铡?/p>
add(intx,inty,【】z)
{【】=x+y;}
40.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)
while(s[i])(d[j]=【】;j++;}
d[j]=0;
三、1.選擇題(20題)41.有以下程序:#include<stdio.h>stxucttt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的運行結果是()。
A.20,30,B.30,17C.15,30,D.20,15,
42.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數為()。
A.log2nB.n/2C.nD.n+1
43.下列不屬于軟件工程的3個要素的是______。
A.工具B.過程C.方法D.環(huán)境
44.沒有如下定義:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正確的賦值語句是
A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;
45.設有以下程序:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0\},*p;p=&a[0];下面其值為6的表達式為______。
A.p++->nB.p->n++C.(*p).n++D.++p->n
46.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",D);}程序運行后的輸出結果是
A.2B.3C.43D.44
47.以下if語句書寫正確的是()
A.if(x=0;)printf("%f",x);elseprintf("%f",-x);
B.if(x>0){x=x+1;printf("%f",x);}elseprintf("%f",-x);
C.if(x>0);{x=x+1;printf("%f",x);}elseprintf("%f",-x);
D.if(x>0){x=x+1;printf("%f",x)}elseprintf("%f",-x);
48.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的輸出是______。
A.100B.160C.120D.64
49.設變量a、b、c、d和y都己正確定義并賦值。若有下列if語句
if(a<b)
if(c==d)y=0;
elsey=1;
該語句所表示的含義是()。
A.
B.
C.
D.
50.已有定義:Mtx=3,y=4,z=5;,則表達式!(x/y)+z-1&&y+z/2的值是()。
A.6B.OC.2D.1
51.某二叉樹中有n個度為2的結點,則該二叉樹中的葉子結點數為()
A.n+1B.n-1C.2nD.n/2
52.軟件設計中,有利于提高模塊獨立性的一個準則是______。A.低內聚低耦合B.低內聚高耦合C.高內聚低耦合D.高內聚高耦合
53.有以下程序#include<stdio.h>#include<string.h>voidfun(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i];s[j];s[j]=t;}}main(){char*ss[]={"bcc
A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc
54.有以下程序:#include<stdio.h>#include<string.h>voidf(char*s,char*t){chark;k=*s;*s=*t;*t=k;s++;t--;if(*s)f(s,t);}main(){charstr[10]:"abedefg",*p;p=str+strlen(str)/2+1;f(p,p-2);printf("%s\n",str);程序運行后的輸出結果是()。
A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg
55.若有定義int*p[3];,則以下敘述中正確的是______。
A.定義了一個基類型為int的指針變量p,該變量有三個指針
B.定義了一個指針數組p,該數組含有三個元素,每個元素都是基類型為int的指針
C.定義了一個名為*p的整型數組,該數組含有三個int類型元素
D.定義了一個可指向二維數組的指針變量p,所指一維數組應具有三個int類型元素
56.下面程序段中,輸出*的個數是char*s="\ta\018bc";for(;*s!='\0';s++)printf("*");
A.9B.5C.6D.7
57.fgets(str,n,fp)函數從文件中讀入一個字符串,以下錯誤的敘述是()。
A.字符串讀入后會自動加入'\0'
B.fp是指向該文件的文件型指針
C.fgets函數將從文件中最多讀入n個字符
D.fgets函數將從文件中最多讀入n-1個字符
58.以下函數值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
59.有以下程序:#includo<stdio.h>main(){inty=10;while(y--)printf("y=%d\n",y);}程序執(zhí)行后的輸出結果是()。
A.y=0B.y=-1C.y=1D.while構成無限循環(huán)
60.閱讀以下函數:fun(char*s1,char*s2){inti=0;while(s1[i]==s2[i]&&s2[i]!='\0')i++;return(s1[i]=='\0'&&s2[i]=='\0');}此函數的功能是()。
A.將s2所指字符串賦給s1
B.比較s1和s2所指字符串的大小,若s1比s2的大,函數值為1,否則函數值為0
C.比較s1和s2所指字符串是否相等,若相等,函數值為1,否則函數值為0
D.比較s1和s2所指字符串的長度,若s1比s2的長,函數值為1,否則函數值為0
四、選擇題(20題)61.有以下程序:
程序運行后的輸出結果是()。
A.7B.10C.8D.9
62.
63.
64.有三個關系R、S和T如下:
則由關系R和S得到關系T的操作是()。
A.自然連接B.交C.除D.并
65.
66.若有如下定義,則__________是對數組元素的正確的引用。.
inta[10],*p;p=a;
A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p
67.有以下程序:
程序運行后的輸出結果是()。A.235B.0235C.02356D.2356
68.設有數組定義:chararray[]="China";則數組array所占的空間為()。
A.4個字節(jié)
B.5個字節(jié)
C.6個字節(jié)
D.7個字節(jié)
A.EFGHIJABCD
B.bcdefghij
C.abdefCghij
D.不確定的值
69.
70.(40)將E-R圖轉換到關系模式時,實體與聯(lián)系都可以表示成()
A.屬性
B.關系
C.鍵
D.域
71.執(zhí)行語句“for(i=1;i++<;4;);”后,變量i的值是()。
A.3B.4C.5D.不定
72.
73.下列敘述中不正確的是()。
A.在C語言中調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B.在C的函數中,最好使用全局變量
C.外部變量可以在函數之間傳遞數據
D.自動變量實質上是一個函數內部的局部變量
74.若有定義語句:doublex,y,*px,+py;,執(zhí)行Tpx=&x;py=&y之后,正確的輸入語句是()。
75.下列函數的功能是
set(s,t)
{char*s,*t;
while((*s)&&(*t)&&(*t++==*s++));
return(*s-*t);
}A.A.求字符串的長度
B.比較兩字符串的大小
C.將字符串s復制到字符串t中
D.將字符串s連接到字符串t后
76.有以下程序函數fun只對下標為偶數的元素進行操作.:
程序運行后的輸出結果是()。A.A.7,2,5,4,3,6,1,
B.1,6,3,4,5,2,7,
C.7,6,5,4,3,2,1,
D.1,7,3,5,6,2,1,
77.設有定義語句
則以下敘述正確的是().
A.f是指向函數的指針變量,該函數具有_個int類型的形參
B.f是基類型為int的指針變量
C.f是指向int類型一維數組的指針變量
D.f是函數名,該函數的返回值是基類型為int類型的地址
78.軟件生命周期是指()。A.軟件產品從提出、實現(xiàn)、使用維護到停止使用退役的過程
B.軟件從需求分析、設計、實現(xiàn)到測試完成的過程
C.軟件的開發(fā)過程
D.軟件的運行維護過程
79.
80.以下不正確的定義語句是
A.inty[5.3]={0,1,3,5,7,9};B.doublex[5]={2.0,4.0,6.0,8.0,10.0};
C.charc1[]={’1’,’2’,’3’,’4’,’5’};D.charc2[]={’\x10’,’\xa’,’\x8’};
五、程序改錯題(1題)81.下列給定程序中,函數ptoc的功能是:利用插入排序法對字符串中的字符按從小到大的順序進行排序。插入法的基本方法是:先對字符串中的頭兩個元素進行排序,然后把第3個字符插入前兩個字符中,插入后前3個字符依然有序;再把第4個字符插入前三個字符中,待排序的字符串已
在主函數中賦予。
請修改程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<strin9.h>
#include<stdi0.h>
#defineM80
voidproc(char*arr)
{inti,j,n;charch;
n=strlen(arr):
for(i=1;i<n;i++)
//****found****
{c=arr[i];
j=i-1;
while((j>=o)&&(ch<arr[j]))
{
arr[j+1]=arr[j];
j--;
}
arr[j+1]=ch;
}
}
voidmain
{
chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";
printf("Theoriginalstring:%s\n",a);
proc(a);
printf("Thestringaftersortin9:
%s\n\n",a);
}
六、程序設計題(1題)82.某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數中給出,請編寫函數,其功能是:求出該學生的平均分,并放入記錄的ave成員中。
例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875。
注意:部分源程序給出如下。
請勿改動main函數和其他函數中的任何內容,僅在函數fun部位中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN8
typedefstruct
{
charnum[10];
doubles[N];
doubleave;
}STREC;
voldfun(STREC*a)
{
}
voidmain
STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};
inti;
fun(&s);
printf("The%ssstudentdata:\n",s.num);
for(i=0;i<N;i++)
printf("%4.1fkn",s.s[i]);
printf("\nknave=%7.3fkn",s.aVe);
printf("\n");
}
參考答案
1.B
2.D本題主要考查帶參數的宏定義,過程如下:由于定義為define(x)x*x沒有括號優(yōu)先級,所以:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。
3.A本題中定義了整形變量case,但case是關鍵字,關鍵字不能用做標識符。單精度printF不是關鍵字,因為標識符區(qū)分大小寫。所以A不正確。
4.B在同一源文件中,函數名必須唯一,選項A正確。函數的調用有兩種形式:①出現(xiàn)在表達式中,可以出現(xiàn)在賦值號右邊的表達式中;②作為獨立的語句完成某種操作。因此選項B錯誤,選項D正確。不同函數中的形參可以同名,它們的作用域都限制在各自的函數體內,選項C正確。故本題答案為B選項。
5.B解析:字符串輸入函數fgets()的調用形式為:fgets(s,n,fp)。fgets函數參數說明:“s”可以是一個字符數組名,也可以是指向字符串的指針;“n”為要讀取的最多的字符個數;“fp”是指向該文件的文件型指針。fgets函數的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串放到字符數組s中;讀入字符串后會自動在字符串末尾加入“'\\0'”結束符,表示字符串結束。
6.A
7.A
8.A執(zhí)行x=x-=x-x語句可寫成x=x-(x-x),可看出結果為10,故八選項正確。
9.C
10.D解析:因為x的值為大于1的奇數,所以x除以2的余數等于1,因此,選項A)、C)中表達式的結果為真,不為0;對于選項B)來說,x除以2的商不會等于0;選項D)中表達式的結果為假,即等于0。
11.B解析:字符數組元素作函數參數是單向的值傳遞。函數cchar的功能是將大寫字母轉換為小寫字母。主函數中while循環(huán)語句的條件是判斷指針p當前指向的字符是否為空,若不為空,則調用函數cchar,即主函數中通過循環(huán)語句將字符串'ABC+abc=defDEF'中的大寫字母全部轉換為小寫字母,因此printf的輸出結果為選項B。
12.A根據單位鏈表(包含頭結點)的結構,只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結點的目的是為了便于運算的實現(xiàn)。
13.C解析:程序流程圖是軟件過程設計中常用的圖形描述工具之一。構成程序流程圖的最基本符號有:→或↓,表示控制流;□表示加工步驟;
表示邏輯條件。
14.A在一個函數內的復合語句中定義的變量在本復合語句塊范圍內有效,選項A錯誤,其他選項正確。本題答案為A選項。
15.B
16.B解析:本題考查函數fseek的用法。fseek函數的調用形式為:
fseek(文件指針,位移量,起始點)
“起始點”用0,1或2代替,0代表“文件開始”,1為“當前位置”,2為“文件末尾”。
“位移量”指以“起始點”為基點,向前移動的字節(jié)數。ANSIC和大多數C版本要求位移量是long型數據,這樣當文件長度大于64k時不致出現(xiàn)問題。ANSIC標準規(guī)定在數字末尾加一個字母L表示long型。
17.C將兩個字符串連接起來組成一個字符串,選用strcat函數來連接。
18.A解析:數據庫是一個通用化的、綜合性的數據集合,它可以為各種用戶所共享,具有最小的冗余度和較高的數據與程序的獨立性,而且能并發(fā)地為多個應用服務,同時具有安全性和完整性。即數據庫系統(tǒng)減少了數據冗余,但不能避免一切冗余。所以選項A正確,選項B錯誤。在數據庫管理階段中,數據是結構化的,面向系統(tǒng),數據冗余度小,從而節(jié)省了數據的存儲空間,也減少了對數據的存取時間,提高了訪問效率,避免了數據的不一致性。數據的不一致性,是指對數據的存取方式,選項C錯誤。數據庫系統(tǒng)比文件系統(tǒng)能管理更多的數據,并非是數據庫系統(tǒng)的特點,選項D錯誤。本題正確答案是A。
19.D
20.C
21.一對多一對多解析:實體之間的聯(lián)系可以歸結為一對一、一對多與多對多。如果一個學校有許多學生,而一個教師只歸屬于一個學生,則實體集學校與實體集學生之間的聯(lián)系屬于一對多的聯(lián)系。
22.n%base[d]n%base[d]解析:程序中的字符數組b存儲了十六進制16個數字的字符,整型數組c用于存儲轉換的十六進制數的各位數值。將整數n轉換成它的各位十六進制數值,需采用除以16取余的方法,即求n除以16的余,得到它的十六進制的末位數,接著將n除以16,在n不等于0的情況下循環(huán),順序求出n的十六進制的倒數第一、第二、第三位數等。程序中變量base已預置16,所以在第一處填n%base。當n的十六進制數的倒數第一、第二、第三位等依次存放于數組c中后,就從最高位至最低位,參照數組c[i]的內容d(以其內容為下標),取十六進制數字符表中的字符b[d)輸出,所以在第二處填[d]。
23.線性結構線性結構解析:數據的邏輯結構是指數據元素之間的邏輯關系,分為線性結構和非線性結構。常見的線性結構有線性表、棧和隊列等,常見的非線性結構有樹、二叉樹等。
24.doublemax或externdoublemaxdoublemax或externdoublemax解析:main函數中調用了一個max函數,而max函數是在調用之后定義的,所以要求填空的內容應該是對函數進行聲明的語句。由max函數的定義可知此函數是double型的,因此空格處應該填doublemax或externdoublemax。
25.程序調試程序調試解析:程序調試的任務是診斷和改正程序中的錯誤。程序調試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調試主要在開發(fā)階段。
26.5656解析:本題中a,b,c,d足實參,x,y,cp,dp是形參。C語言規(guī)定,實參變量對形參變量的數據傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內存中,實參單元與形參單元是不同的單元。在調用函數時,給形參分配存儲單元,并將實參對應的值傳遞給形參,調用結束后,形參單元被釋放,實參單元仍保留并維持原值。因此,程序的輸出結果是56。
27.層次模型用樹型結構表示實體類型及實體間聯(lián)系的數據模型稱為層次模型,用有向圖結構表示實體類型及實體間聯(lián)系的數據模型稱為網狀模型,用二維表格結構表示實體及其聯(lián)系的數據模型稱為關系模型。
28.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應當為false,即為0。
29.585858585858解析:本題考查對if語句的掌握,當輸入58以后,程序中的3個if語句都成立,所以分別輸出58。
30.4040解析:分析程序,初始時i=10,j=0,這時do循環(huán)中的“i=j+i”
31.@
32.p=p*ip=p/ip=p*ip=p/i解析:本題中,欲求p的值,需要先求m!,n!,(m-n)!,可分別用循環(huán)語句實現(xiàn)。
33.1515解析:在函數f()中只有一條if語句,如果n不小于1,則返回f(a,n-1)+a[n-1];否則返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)返回f(aa,3)+aa[3],……直到f(aa,0)返回0。故f(aa,5)實際返回值是0+aa[1]+aa[2]+aa[3]+aa[4]+aa[5],所以本題最終輸出15。
34.*t++或*(t++)*t++或*(t++)解析:主函數中定義了兩個字符型數組st1l和str2,并且給str2賦初值“abcdefgh”,接著調用函數sstrcpy(str1,str2),將字符串str2的值賦給str1.在函數sstrcpy(*s,*t)中,用了一個while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后指針s和指針t都下移到下一個元素。所以空格處應該填*t++或*(t++)。
35.k-1k,-1解析:顛倒一個字符串中的字符,就是首尾對應的元素兩兩交換。簡單地可用兩個游標變量i和j,i是前端元素的下標,j是后端元素的下標,交換以這兩個變量值為下標的元素str[i]和str[j]。開始時,i的值為0,j的值為字符串末元素的下標(字符串長度減1)。每次交換后,i增1,j減1。繼續(xù)交換的條件是str[i]位于str[j]的前面,即i<j。字符串末元素的下標是它的長度減1,所以在第二個空框處應填入-1。程序為了交換str[i]和str[j],使用了變量k,該變量應在程序的變量定義部分中一起定義,所以在第一個空框處應填入k。
36.252137252137解析:本題中先定義了整型變量a、b和c,然后分別給賦值a為25,b為八進制的025,c為十六進制0x25。然后調用pruntf()函數將a、b和c分別用十進制輸出,且中間用空格隔開,八進制025轉換為十進制的值為21,十六進制的0x25轉換為十進制的值為37,故最后的輸出結果為252137。
37.存儲結構存儲結構解析:數據結構包括3個方面,即數據的邏輯結構、數據的存儲結構及對數據的操作運算。
38.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。
39.int**zint*\r\n*z解析:函數希望通過形參z帶回結果,形參z必須是指針類型的。由于返回整型結果,所以第一處填int*;函數返回前必須先把結果通過形參z間接引用傳回,第二處應填*z。
40.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數組s從頭到尾依次遍歷其所有元素.本題應使用i的自增后置來實現(xiàn)。
41.D解析:題目中定義了一個全局結構體數組a,結構體中包含兩個成員;一個int型變量x和一個自身類型指針y。所以,結構體數組a的初始化列表中每兩個初始化一個結構體元素。主函數通過一個for循環(huán),連續(xù)調用了兩次輸出函數printf(),每次輸出p所指元素的x成員值。p初始化時指向數組a的首地址,即a[0]的位置,所以第1次輸出的值為20。然后又將a[0]的成員y的值賦給p,y在初始化時是a+1,所以p在第2次輸出時指向的元素是a[1],故第2次輸出的值為15。所以本題最終輸出結果是“20,15,”,應該選擇D。
42.C本題考查的是順序查找。在進行順序查找過程中,如果線性表中的第一個元素就是被查找元素,則只需做一次比較就查找成功,查找效率最高;但如果被查找的元素是線性表中的最后一個元素,或者被查找的元素根本就不在線性表中,則為了查找這個元素需要與線性表中所有的元素進行比較,這是順序查找的最壞情況。所以對長度為n的線性表進行順序查找,在最壞情況下需要比較n次。故本題答案為C。
43.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發(fā)、管理和文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制和管理。
44.C解析:data是一結構體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應該是:p=&data.a。選項A,將a的地址直接賦給了p,而忽略了a為結構體內部的一個成員,而不是一單獨的變量,故選項A不正確;選項B在p=data.a表達式中右邊為一個結構體變量的成員不是地址,而左邊為一指針應該將一地址賦給它,改選項B不正確:選項D表達式*p=data.a是將結構體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項D不正確;4個選項中只有C正確。
45.D解析:p指向數組的第1個元素,由于運算符->優(yōu)先級高于運算符++,可知選項A應先取p->n的值5,再使p++指向下一個元素;選項B,先取p->n的值5作為表達式的值,再使p->n的值加1;選項C與選項B等價:選項D,先使p->n的值增1(即值為6),再以此值作為表達式的值,本題應選擇選項D。
46.A解析:本題考核的知識點是if-else語句的程序分析。我們首先看程序中if-else的匹配,由于C語言中規(guī)定else總是與最近的if搭配,因此程序中else與第二個訂搭配,即該if-else語句為第一個if語句的執(zhí)行部分,接著判斷第一個if后面括號里的表達式的值“a>b”為假('3>4'為假),因此不執(zhí)行后面if-else語句,程序將執(zhí)行下面的輸出語句輸出d,而d一直未被改變故為原來的值2,所以,4個選項中選項A符合題意。
47.B
48.D解析:<<是C語言中規(guī)定的左移運算符,例如,a=a<<2,這個語句即是將a的二進制數左移兩位,左移一位相當于該數乘于2,左移兩位相當于該數乘以2的2次方。所以,x<<1=32*2=64。
49.C解析:語句if(c==D)y=0;elsey=1;是if(a<B)語句的一個子句。所以整個C語句表達式的意思是:在、a<b的情況下,如果c=d則y=0,否則y==1。所以,選項C)為正確答案。
50.D解析:本題中,&&左邊的表達式!(x+y)為!(3+7),結果為假,即為0。再加上2,然后減一,相當于0+5-1=4。左邊等于4,&&右邊的表達式y(tǒng)+z/2相當于4+5/2為6,所以整個表達式相當于4&&6為真,即為1,所以選項D正確。
51.A解析:本題考查數據結構中二叉樹的性質。二叉樹滿足如下一條性質,即:對任意一棵二叉樹,若終端結點(即葉子結點)數為n0,而其度數為2的結點數為n2,則n0=n2+1。根據這條性質可知,若二叉樹中有n個度為2的結點,則該二叉樹中的葉子結點數為n+1。因此,本題的正確答案是選項A。
52.C耦合是對一個軟件結構內不同模塊之間互連程度的度量,耦合度越高,則模塊的獨立性越差。內聚反映一個模塊內各個元素彼此結合的緊密程度。高內聚是指一個軟件模塊是由相關性很強的代碼組成,只負責一項任務,也就是常說的單一責任原則。低耦合是指不同軟件模塊之間通過穩(wěn)定的接口交互,而不需要關心模塊內部的實現(xiàn)。
53.A解析:函數fun(char*s[],intn)的功能是對字符串數組的元素按照字符串的長度從小到大排序。在主函數中執(zhí)行fun(ss,5)語句后,*ss[]={'xy','bcc','bbcc','aabcc','aaaacc'},ss[0],ss[4]的輸出結果為xy,aaaacc。
54.B解析:本程序的作用是將字符串str倒序。語句p=str+strlen(str)/2+1;將指針變量p指向字符\'e\'所在的存儲單元,P-2指向字符,\'c\'所在的存儲單元,在函數f中將這兩個存儲單元的內容交換,然后將f函數中指向字符\'e\'的指針變量s加1,指向字符\'c\'的指針變量t減1,繼續(xù)將s和t指向的存儲單元的內容進行交換,直到s指向的存儲單元的內容為空為止。所以本題程序輸出的結果是字符串'abcdefe”的倒序形式'gfedcba'。
55.B解析:由于運算符[]優(yōu)先級比*高,int*p[3];相當于int*(p[3]);,表示數組p的三個元素都是指針變量,且每個元素都是基類型為int的指針。
56.C解析:本題中,格式符。表示的是八進制無符號形式輸出整型數(不帶前導0),字符常量在內存中占一個字節(jié),存放的是ACSII碼代碼值。C語言規(guī)定,所有字符常量都作為整型量來處理,在計算機內部,其對應的整數值就是ACSII字符集中該字符的序號,即&*s中有幾個字符就輸出幾個*。
57.C解析:字符串輸入函數fgets()的調用形式為:fgets(s,n,fp)。s可以是一個字符數組名,或是指向字符串的指針;n為要讀取的最多的字符個數:fp是指向該文件的文件型指針。字符串輸入函數的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串存放到字符數組s中。
58.A解析:函數定義時如果數據類型默認,則默認為int。函數中如果有“retum(表達式):”語句,表達式的類型可能與函數的類型不一致,但它并不能改變函數的類型,實際情況是把表達式轉換為函數值的類型作為返回值,因此本題的函數值類型是int。
59.B解析:程序首先判斷y值是否非0,顯然y=10滿足條件,y自減1,再次執(zhí)行while語句,判斷y為9的值是否滿足條件,滿足條件,y自減1,……,直到y(tǒng)為0,條件不成立,結束循環(huán),y自減1后變?yōu)?1,所以輸出結果為y=-1。
60.C解析:在函數fun()中有兩個字符型指針變量s1和s2,在函數中程序執(zhí)行while循環(huán),該循環(huán)退出條件有兩個:一個是s1[i]!=s2[i](兩個字符串不相等):第二個是s1[i]和s2[i]相等均為“\\0”(兩個字符串相等)。循環(huán)退出后,執(zhí)行return語句,即兩個字符串相等則返回1,不相等則返回0。所以,C選項為所選。
61.D調用f(a,b)函數返回3,調用f(a,c)函數返回6,所以外層調用f(f(a,b),f(a,c));即調用f(3,6)函數返回9。
62.D
63.B
64.C
65.A
66.D
67.B本題考查分支語句用法。因為變量的初始值分別為k=5、n=0,所以程序第1次進入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進行第2次循環(huán),執(zhí)行case4:這個分支,結果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進行第3次循環(huán),執(zhí)行case3:這個分支,結果是n=3、k=2,打印出3;這時n=3、k=2,break跳出,程序然后進行第4次循環(huán),執(zhí)行case2:case4:這個分支,結果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結束。
68.C
69.D
70.B
71.Cfor循環(huán)結束時,i++的值應為4,i自加后此時應為5,故選擇C選項。
72.C
73.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內存單元,而是在程序運行中,當局部變量所在的函數被調用時,編譯系統(tǒng)根據需要要臨時分配內存,調用結束空間釋放;全局變量一經定義,編譯系統(tǒng)為其分配固定的內存單元,在程序運行的自始至終都占用固定的單元。在考慮內存不定的情況下,最好使用全局變量。
74.A因為x,y都是double型數據,所以輸入時的格式字符應為%If,所以B)與c)錯誤。D)選項中“scanf(”%If%IP’’x,y);”應為“scanf(”%If%lf'’,&x,&y);”。故本題答案為A)。
75.B在本題中,從題目給出的四個選項我們就可以知道,程序是對兩個字符串進行操作。下面將具體分析程序。
程序首先定義兩個字符型的指針變量s和t,從后面的程序中不難看出這兩個指針變量應該用來對兩個字符串進行操作處理。用循環(huán)來對字符串進行處理時,循環(huán)繼續(xù)的條件是指針變量s和指針變量t所指向的結果值不為0,且兩結果值相等。很顯然,指針變量s和指針變量t所指向的結果值不為0,說明兩字符串沒有結束,只有結束時才為0,而結果值相等說明兩字符相等,如果不等,循環(huán)則結束,此時程序將要求返回不等元素之間的差值,從差值的正負關系我們可以判斷出哪個元素更大。綜上所述,程序段的作用是用來比較兩字符串的大小。因此,本題正確的答案選B。
76.A由函數fun(int*a,intn)中語句if(a[j]>a[k])k=j;可知當前k是記錄數組中較大數據值所在位置的下標變量,所以該函數的作用是對數組a中的下標為偶數位置的數據進行從大到小的排序,即對a[0],a[2],a[4],a[6]中的數據1,3,5,7進行從大到小的排序,其他位置的數據不變,所以答案為A)。
77.A
78.A通常,將軟件產品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產品從考慮其概念開始,到該軟件產品不能使用為止的整個時期都屬于軟件生命周期。
79.B
80.A在一維數組中要注意的是,下標表達式中常量表達式的值必須大于等于零,并且小于自身元素的個數,即數組長度,選項A的下標不是整數,所以錯誤。
81.\n\t錯誤:c=arr[i];
\n正確:ch=arr[i];
\n【解析】由函數定義可知,函故proc只定義了變量ch,沒有定義變量C。因此,“c=arr[i]:”應改為“ch=arr[i];”。\n
82.voidfun(STREC*a)
\n{
\ninti;
\na->ave=0.0;
\nfor(i=0;i<N;i++)
\na->ave=a->ave+a->s[i];
\n/*求各門課程成績的總和*/
\na->ave=a->ave/N;/*求平均分*/
\n}
\n【解析】本題考查的是指向結構體類型的指針變量做參數和結構體類型成員的運算。fun函數中求出平均成績,要帶回主函數則必須定義一個指針類型的形參STREC*a,同時引用成員使用指向運算符,a->ave和a->s[i]。
\n2022年河北省石家莊市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.若有以下定義和語句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);則輸出結果()
A.2,MB.3,EC.2,ED.輸出項與對應的格式控制不一致,輸出結果不確定
2.執(zhí)行下列程序后,輸出的結果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/S(k+m):printf("%d",a);}A.1B.4C.9D.0
3.閱讀以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("請輸人2個數:");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}該程序在編譯時產生錯誤,其出錯原因是()。A.定義語句出錯,case是關鍵字,不能用做用戶自定義標識符
B.定義語句出錯,printF不能用做用戶自定義標識符
C.定義語句無錯,scanf不能作為輸入函數使用
D.定義語句無錯,printf不能輸出case的值
4.以下敘述中錯誤的是()。
A.在同一源文件中,函數名必須唯一
B.凡是帶有返回值的庫函數,都不能通過加分號而作為獨立的語句出現(xiàn)
C.不同函數中的形式參數可以同名
D.返回基本數據類型的庫函數的調用,均可以出現(xiàn)在賦值號右邊的表達式中
5.標準庫函數fgets(s,n,file)的功能是()。
A.從文件file中讀取長度為n的字符串存入字符數組s中
B.從文件file中讀取長度不超過n-1個字符的字符串放到字符數組s中
C.從文件file中讀取n個字符串存入字符數組s中
D.從文件file中讀取長度為n-1個字符的字符串存入字符數組s中
6.設有二維數組A7×8,每個數據元素占8個字節(jié)存儲單元,順序存放,A第一個元素A0,0的存儲地址為1000,按行優(yōu)先存放時,元素A3,4的地址為()。
A.1224B.1208C.1200D.1216
7.已知函數test定義為()。A.執(zhí)行函數test后,函數沒有返回值
B.執(zhí)行函數test后,函數不再返回
C.執(zhí)行函數test后,函數返回任意類型值
D.以上三個答案都是錯誤的
8.設x為int型變量,則執(zhí)行以下語句后,x的值為()。x=10;x=x-=x-x;
A.10B.20C.40D.30
9.高度為h的滿二叉樹的結點數是________個。
A.log2h+1B.2h+1C.2h-1D.2h-1
10.以下選項中,當x為大于l的奇數時,值為0的表達式是
A.x%2==1B.x/2C.x%2!=0D.x%2==0
11.以下程序的輸出結果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}
A.abe+ABC=DEFdef
B.abc+abe=defdef
C.abcaABCDEFdef
D.abcabcdefdef
12.在單鏈表中,增加頭結點的目的是()。
A.方便運算的實現(xiàn)B.使單鏈表至少有一個結點C.標識表結點中首結點的位置D.說明單鏈表是線性的鏈式存儲實現(xiàn)
13.程序流程圖中有箭頭的線段表示的是()。
A.圖元關系B.數據流C.控制流D.調用關系
14.以下敘述中錯誤的是()。
A.在一個函數內的復合語句中定義的變量在本函數范圍內有效
B.在一個函數內定義的變量只在本函數范圍內有效
C.在不同的函數中可以定義相同名字的變量
D.函數的形參是局部變量
15.
16.fseek函數的正確調用形式是()。
A.fseek(文件指針,起始點,位移量)
B.fseek(文件指針,位移量,起始點)
C.fseek(位移量,起始點,文件指針)
D.fseek(起始點,位移量,文件指針)
17.將兩個字符串連接起來組成一個字符串時,選用()函數。A.strlen()B.strcpy()C.strcat()D.strcmp()
18.下述關于數據庫系統(tǒng)的敘述中,正確的是()。
A.數據庫系統(tǒng)減少了數據冗余
B.數據庫系統(tǒng)避免了一切冗余
C.數據庫系統(tǒng)中數據的一致性是指數據類型一致
D.數據庫系統(tǒng)比文件系統(tǒng)能管理更多的數據
19.廣義表((a))的表尾是()。
A.aB.(a)C.((a))D.()
20.計算機算法指的是()。
A.計算方法B.排序方法C.解決問題的有限運算序列D.調度方法
二、2.填空題(20題)21.實體之間的聯(lián)系可以歸結為一對一的聯(lián)系,一對多的聯(lián)系與多對多的聯(lián)系。如果一個學校有許多學生,而一個學生只屬于一個學校,則實體集學校與實體集學生之間的聯(lián)系屬于【】的聯(lián)系。
22.以下程序可把輸入的十進制數以十六進制數的形式輸出,請?zhí)羁铡?/p>
#inelude<stdio.h>
main()
{eharb[17]={"0123456789ABCDEF"};
intc[64],d,i=0,base=16;
longn;
printf("Enteranumber:\n");
seanf("%ld",&n);
do{c[i]=【】;i++;n=n/base;}
while(n!=0);
printf("Transmitenewbase:\n");
for(--i;i>=0;--i)
{d=c[i];printf("%c",b【】);}
printf("\n");
}
23.按照邏輯結構分類,結構可以分為線性結構和非線性結構,棧屬于______。
24.請在以下程序第一行的下劃線處填寫適當內容,使程序能正常運行。
#include<stdio.h>
【】(double,double);
main()
{doublex,y;
scanf("%If%If",&x,&y);
printf("%If\n",max(x,y));
}
doublemax(doublea,doubleb)
{return(a>b?a:b);}
25.診斷和改正程序中錯誤的工作通常稱為【】。
26.下列程序的輸出結果是【】。
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d%d\n",c,d);
}
27.用樹型結構表示實體類型及實體間聯(lián)系的數據模型稱為【】。
28.若a=10,b=20,則表達式!(a<b)的值是【】。
29.若從鍵盤輸入58,則以下程序輸出的結果是【】。
main()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);}
30.以下程序的輸出結果是()。#include<stdio.h>main(){inti=10,j=0;do{j=j+i;i--;}while(i>5);printf("%d\n",j);}
31.E-mail地址由用戶名和域名兩部分組成,這兩部分的分隔符為【】。
32.函數fun的功能是:根據以下公式求p的值,結果由函數值返回。m與n為兩個正數,且要求m>n。
例如:m=12,n=8時,運行結果應該是495.000000。請在題目的空白處填寫適當的程序語句,將該程序補充完整。
#include<stdio.h>
floatfun(intm,intn)
{inti;
doublep=1.0;
for(i=1;i<=m;i++)【】;
for(i=1;i<=n;i++)【】;
for(i=1;i<=m-n;i++)p=p/i;
returnp;
}
main()
{printf("p=%f\n",fun(12,8));
}
33.以下程序運行后的輸出結果是【】。
intf(inta[],intn)
{
if(n>=1)
returnf(a,n-1)+a[n-1];
else
return0;
}
main()
{
intaa[5]={1,2,3,4,5},s;
s=f(aa,5);
printf("%d\n",s);
}
34.以下sstrcpy()函數實現(xiàn)字符串復制,即將t所指字符串復制到s所指向內存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>
voidsstrcpy(char*s,char*t)
{while(*s++=______);}
main()
{charstr1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
35.下面程序的功能是將一個字符串str的內容顛倒過來,請?zhí)羁铡?/p>
#include<string.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.以下程序運行后的輸出結果是______。
main()
{
inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d%d%d\n",a,b,C);
}
37.數據結構包括數據的邏輯結構、數據的【】以及列數據的操作運算。
38.需求分析的最終結果是產生【】。
39.下面函數要求計算兩個整數x,y之和,并通過形參返回該值,請?zhí)羁铡?/p>
add(intx,inty,【】z)
{【】=x+y;}
40.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)
while(s[i])(d[j]=【】;j++;}
d[j]=0;
三、1.選擇題(20題)41.有以下程序:#include<stdio.h>stxucttt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的運行結果是()。
A.20,30,B.30,17C.15,30,D.20,15,
42.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數為()。
A.log2nB.n/2C.nD.n+1
43.下列不屬于軟件工程的3個要素的是______。
A.工具B.過程C.方法D.環(huán)境
44.沒有如下定義:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正確的賦值語句是
A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;
45.設有以下程序:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0\},*p;p=&a[0];下面其值為6的表達式為______。
A.p++->nB.p->n++C.(*p).n++D.++p->n
46.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",D);}程序運行后的輸出結果是
A.2B.3C.43D.44
47.以下if語句書寫正確的是()
A.if(x=0;)printf("%f",x);elseprintf("%f",-x);
B.if(x>0){x=x+1;printf("%f",x);}elseprintf("%f",-x);
C.if(x>0);{x=x+1;printf("%f",x);}elseprintf("%f",-x);
D.if(x>0){x=x+1;printf("%f",x)}elseprintf("%f",-x);
48.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的輸出是______。
A.100B.160C.120D.64
49.設變量a、b、c、d和y都己正確定義并賦值。若有下列if語句
if(a<b)
if(c==d)y=0;
elsey=1;
該語句所表示的含義是()。
A.
B.
C.
D.
50.已有定義:Mtx=3,y=4,z=5;,則表達式!(x/y)+z-1&&y+z/2的值是()。
A.6B.OC.2D.1
51.某二叉樹中有n個度為2的結點,則該二叉樹中的葉子結點數為()
A.n+1B.n-1C.2nD.n/2
52.軟件設計中,有利于提高模塊獨立性的一個準則是______。A.低內聚低耦合B.低內聚高耦合C.高內聚低耦合D.高內聚高耦合
53.有以下程序#include<stdio.h>#include<string.h>voidfun(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i];s[j];s[j]=t;}}main(){char*ss[]={"bcc
A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc
54.有以下程序:#include<stdio.h>#include<string.h>voidf(char*s,char*t){chark;k=*s;*s=*t;*t=k;s++;t--;if(*s)f(s,t);}main(){charstr[10]:"abedefg",*p;p=str+strlen(str)/2+1;f(p,p-2);printf("%s\n",str);程序運行后的輸出結果是()。
A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg
55.若有定義int*p[3];,則以下敘述中正確的是______。
A.定義了一個基類型為int的指針變量p,該變量有三個指針
B.定義了一個指針數組p,該數組含有三個元素,每個元素都是基類型為int的指針
C.定義了一個名為*p的整型數組,該數組含有三個int類型元素
D.定義了一個可指向二維數組的指針變量p,所指一維數組應具有三個int類型元素
56.下面程序段中,輸出*的個數是char*s="\ta\018bc";for(;*s!='\0';s++)printf("*");
A.9B.5C.6D.7
57.fgets(str,n,fp)函數從文件中讀入一個字符串,以下錯誤的敘述是()。
A.字符串讀入后會自動加入'\0'
B.fp是指向該文件的文件型指針
C.fgets函數將從文件中最多讀入n個字符
D.fgets函數將從文件中最多讀入n-1個字符
58.以下函數值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
59.有以下程序:#includo<stdio.h>main(){inty=10;while(y--)printf("y=%d\n",y);}程序執(zhí)行后的輸出結果是()。
A.y=0B.y=-1C.y=1D.while構成無限循環(huán)
60.閱讀以下函數:fun(char*s1,char*s2){inti=0;while(s1[i]==s2[i]&&s2[i]!='\0')i++;return(s1[i]=='\0'&&s2[i]=='\0');}此函數的功能是()。
A.將s2所指字符串賦給s1
B.比較s1和s2所指字符串的大小,若s1比s2的大,函數值為1,否則函數值為0
C.比較s1和s2所指字符串是否相等,若相等,函數值為1,否則函數值為0
D.比較s1和s2所指字符串的長度,若s1比s2的長,函數值為1,否則函數值為0
四、選擇題(20題)61.有以下程序:
程序運行后的輸出結果是()。
A.7B.10C.8D.9
62.
63.
64.有三個關系R、S和T如下:
則由關系R和S得到關系T的操作是()。
A.自然連接B.交C.除D.并
65.
66.若有如下定義,則__________是對數組元素的正確的引用。.
inta[10],*p;p=a;
A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p
67.有以下程序:
程序運行后的輸出結果是()。A.235B.0235C.02356D.2356
68.設有數組定義:chararray[]="China";則數組array所占的空間為()。
A.4個字節(jié)
B.5個字節(jié)
C.6個字節(jié)
D.7個字節(jié)
A.EFGHIJABCD
B.bcdefghij
C.abdefCghij
D.不確定的值
69.
70.(40)將E-R圖轉換到關系模式時,實體與聯(lián)系都可以表示成()
A.屬性
B.關系
C.鍵
D.域
71.執(zhí)行語句“for(i=1;i++<;4;);”后,變量i的值是()。
A.3B.4C.5D.不定
72.
7
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報參考:教育公平與合作學習研究
- 二零二五年度鐵路旅客運輸合同修訂版2篇
- 2025版圖書電子文檔txt下載代理授權合同3篇
- 二零二五年高校創(chuàng)新創(chuàng)業(yè)基地入駐服務合同3篇
- 2025年度個人小產權房屋買賣合同范本與稅務籌劃要點4篇
- 二零二五年度4S店汽車銷售區(qū)域代理合同范本3篇
- 二零二五版智慧交通管理系統(tǒng)建設與運營協(xié)議3篇
- 二零二五年度馬鈴薯深加工廢棄物資源化利用合同4篇
- 二零二五年度創(chuàng)新型企業(yè)房屋租賃合同書
- 2025年度平房出租與城市可持續(xù)發(fā)展合作協(xié)議4篇
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學年部編版七年級歷史下冊
- 2025-2030年中國糖醇市場運行狀況及投資前景趨勢分析報告
- 冬日暖陽健康守護
- 水處理藥劑采購項目技術方案(技術方案)
- 2024級高一上期期中測試數學試題含答案
- 盾構標準化施工手冊
- 山東省2024-2025學年高三上學期新高考聯(lián)合質量測評10月聯(lián)考英語試題
- 不間斷電源UPS知識培訓
- 三年級除法豎式300道題及答案
- 人教版八級物理下冊知識點結
- 2024年江蘇省徐州市中考一模數學試題(含答案)
評論
0/150
提交評論