




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2021-2022年河北省保定市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列程序段的時間復雜度為()。A.O(3n)B.O(n)C.O(n2)D.O(log3n)
2.以下敘述正確的是()。
A.“charc1,*c2,*c3[10];”是合法的變量定義語句
B.數組說明符的方括號中不能使用表達式
C.數組元素下標可以是非整數
D.若有定義“chararray[4];”,則語句“printf(“%c”,array[“3”]);”是合法的
3.若有說明:inta[][3]={0,0};則不正確的敘述是()。
A.數組a的每個元素的初值都是0
B.數組a的第一維大小為1
C.數組a的行數為1
D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
4.設有一組關鍵字序列{5,8,14,20,31,55,78,81,93,97,111},使用二分(折半)法查找關鍵字93最少需要進行多少次比較()A.2B.3C.4D.5
5.表達式:(int)((double)9/2)-(9)%2.的值是A.0B.3C.4D.5
6.下列關于線性鏈表的敘述中,正確的是()A.各數據結點的存儲空間可以不連續,但它們的存儲順序與邏輯順序必須一致
B.各數據結點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續
C.進行出入與刪除時,不需要移動表中的元素
D.以上三種說法都不催
7.廣義表((a))的表尾是()。
A.aB.(a)C.((a))D.()
8.以下關于C語言的敘述中正確的是()。
A.C語言中的注釋不可以夾在變量名或關鍵字的中間
B.C語言中的變量可以在使用之前的任何位置進行定義
C.在C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致
D.C語言的數值常量中夾帶空格不影響常量值的正確表示
9.數據結構中,與所使用的計算機無關的是數據的()結構。
A.存儲B.物理C.邏輯D.物理和存儲
10.下述函數功能是______。intfun(char*x){char*y=x;while(*y++);returny-x-1;}
A.求字符串的長度B.求字符串存放的位置C.比較兩個字符串的大小D.將字符串x連接到字符串y后面
11.如下函數調用語句func(rec1,rec2+rec3,rec4,rec5);該函數調用語句中,含的實參個數是().
A.3B.4C.5D.有語法錯誤
12.
13.有以下程序:#include<stdio.h>#include<math.h>main(){ints;floatn,t,pai;t=1,pai=0,n=1.0,s=1;while(fabs(t)>1.0e-6){pai+=t;n+=2;s=-s;t=s/n;}printf(“total=%f\n”,pai);}程序運行所計算的是()。
A.1-1/2!+1/3!-1/5!+1/7!-…
B.1+1/3+1/5+1/7+1/9-…
C.1+1/2+1/3+1/4+1/5-…
D.1-1/3+1/5-1/7+1/9-…
14.
15.有以下程序#include<stdio.h>intfun(intx;inty){if(x=y)reurn(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結果是______。A.3B.6C.8D.12
16.有以下程序:#include<stdio.h>main(){chars[]=“abcde”;s+=2;printf(“%d\n”,s[0]);}程序的運行結果是()。
A.輸出字符c的ASCII值B.程序出錯C.輸出字符cD.輸出字符a的ASCII值
17.在一個無向圖中,所有頂點的度數之和等于所有邊數的()倍。
A.1/2B.1C.2D.4
18.有以下程序段當執行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。
A.566.0B.55566.0C.7777.0D.566777.0
19.判斷char型變量c1是否為小寫字母的正確表達式為()。
A.'a'<=c1<='z'
B.(c1>=A)‖(c1<=z)
C.('a'=>c1‖('z'<=c1)
D.(c1>='a')&&(c1<='z')
20.插入和刪除只能在一端進行線性表,稱為()。
A.隊列B.循環隊列C.棧D.循環棧
二、2.填空題(20題)21.表達式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的值是______。
22.在算法正確的前提下,評價一個算法的兩個標準是空間復雜度和()。
23.已有定義:charc=′′;inta=1,b;(此處c的初值為空格字符),執行b=!c&&a;后b的值為【】。
24.執行以下程序后,輸出‘#’號的個數是【】。
#include<atdio.h>
main()
{inti,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
25.一棵二叉樹第六層(根結點為第一層)的結點數最多為______個。
26.按照邏輯結構分類,數據結構可分為線性結構和非線性結構,二叉樹屬于______。
27.關系數據庫管理系統能實現的專門關系運算包括選擇、連接和【】。
28.下面程序的功能是:計算1~10之間的奇數之和與偶數之和,請填空。
#include<stdio.h>
main()
{inta,b,c,i;
a=c=0;
for(i=0;i<=10;i+=2)
{a+=i;
【】;
c+=b;}
printf("偶數之和=%d\n",a);
printf("奇數之和=%d\n",c-11);}
29.當循環隊列非空且隊尾指針等于隊頭指針時,說明循環隊列已滿,不能進行入隊運算。這種情況稱為【】。
30.算法復雜度主要包括時間復雜度和【】復雜度。
31.以下程序的輸出結果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
32.【】(黑箱或白箱)測試方法完全不考慮程序的內部結構和內部特征。
33.在面向對象方法學中,直接反映了用戶對目標系統的要求的模型是【】。
34.下面程序的功能是根據公式e=1+1/1!+1/2!+1/3!+1/4!+...計算e的近似值,精度要求為10-5。請填空。
main()
{intn;
doublee=1.0,t=1.0;
for(n=1;【】n++);
{【】e+=t;}
printf("%f\n",e);}
35.以下程序的運行結果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
case3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
36.下面的程序是將從終端讀入的20個字符放入字符數組中,然后利用指針變量輸出上述字符串,請填空。
#include<stdio.h>
main()
{inti;
chars[21],*p;
for(i=0;i<20;i++)
s[i]=getehar();
s[i]=【】;
p=【】;
while(*p)putchar(【】);
}
37.數據管理技術的發展過程經過人工管理、文件系統和數據庫系統三個階段,其中數據獨立性最高的階段是【】。
38.語句:x++;++x;x=1+x;執行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。
39.在計算機軟件系統的體系結構中,數據庫管理系統位于用戶和【】之間。
40.函數delete(s,i,n)的作用是從字符串s中刪除從第i個字符開始的n個字符,請填空。
voiddelete(chars[],inti,intn)
{intj,k,length=0;
whiles(length])
【】;
-i;
j=i;
}
if(【】)
{k=i+n;
if(i+n<=length)
while(k<length)
s[j++]=s[k++];
s[j]='\0';
}
三、1.選擇題(20題)41.以下關鍵字序列用快速排序法進行排序,速度最慢的是______。
A.{23,27,7,19,11,25,32}
B.{23,11,19,32,27,35,7}
C.{7,11,19,23,25,27,32}
D.{27,25,32,19,23,7,11}
42.請讀程序片段:charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));上面程序片段的輸出結果
A.68B.0C.字符'D'的地址D.不確定的值
43.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+=f(i);printf("%d\n",j);}程序運行后的輸出結果是
A.4B.3C.2D.1
44.下面程序的運行結果是
#include<stdio.h>
voiddelch(char*s)
{inti,j;
char*a;
a=s;
for(i=0,j=0;a[i]!=′\n′;i++)
if(a[i]>=′0′&&a[i]<=′9′)
{s[j]=a[i];j++;}
s[j]=′\0′;}
main()
{char*item="a34bc";
delch(item);
printf("\n%s",item);}
A.abcB.34C.a34D.a34bc
45.設變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:□代表空格字符)
A.10□X□20□Y<回車>
B.10□X20□Y<回車>
C.10□X<回車>20□Y<回車>
D.10X<回車>20Y<回車>
46.有以下程序
main()
{intk=5,n=0;
do
{switch(k)
{case1:case3:n+=1;k--;break;
default:n=0;k--;
case2:case4:n+=2;k--;break;
}
printf("%d",n);
}while(k>0&&n<5);
}
程序運行后的輸出結果是
A.235B.0235C.02356D.2356
47.有以下程序:main(){intx=0,y=0,i;for(i=1;++i){if(i%2==0){x++;continue;}if(i%5==0){y++;break;}}printf("%d,%d",x,y);}程序的輸出結果是()。
A.2,1B.2,2C.2,5D.5,2
48.設a、b和c都是int型變量,且a=3、b=4、c=5,則下面的表達式中,值為0的表達式是______。
A.'a'&&'b'
B.a<=b
C.a||+c&&b-c
D.!((a<b)&&!c||1)
49.若有說明:long*p,a;,則不能通過scanf語句正確給輸入項讀入數據的程序段是()
A.*p=&a;scanf("%1d",p);
B.p=(long*)malloc(8);scanf("%1d",p);
C.scanf("%1d",p=&a);
D.scanf("%1d",&a);
50.已知inta=2,b=3;則執行表達式a=a<b后,變量a的值為()。
A.0B.1C.2D.3
51.若有以下定義和語句:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;則值為3的表達式是______。
A.p+=2,*(p++)B.P+=2,*++pC.P+=3,*p++D.P+=2,++*p
52.若w、x、y、z、m均為int型變量,則執行下列的語句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;
A.2B.3C.5D.4
53.數據存儲和數據流都是______,僅僅是所處的狀態不同。
A.分析結果B.事件C.動作D.數據
54.已知字母a的ASCII碼為十進制數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
55.下列能正確進行字符串賦值的是()。
A.chars[5]={"ABCDE"};
B.chars[5]={'A','B','C','D','E'};
C.char*s;s="ABCDE";
D.char*s;printf("%s",s);
56.下列敘述中正確的是______。
A.數據庫是一個獨立的系統,不需要操作系統的支持
B.數據庫設計是指設計數據庫管理系統
C.數據庫技術的根本目標是要解決數據共享的問題
D.數據庫系統中,數據的物理結構必須與邏輯結構一致
57.不能與do…while(exp)語句中的(exp)等價的表達式是()。
A.(!exp==0)B.(exp>0‖exp<0)C.(exp==0)D.(exp!=0)
58.下列敘述中,不屬于測試的特征的是
A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經濟性
59.以下程序的輸出結果是intf(){staticinti=0;ints=1;s+=i;i++;retumS;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);}
A.20B.24C.25D.15
60.設有定義:intk=1,m=2;noatf=7;則下列選項中錯誤的表達式是()。
A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m
四、選擇題(20題)61.
62.
63.在下述程序中,判斷條件“i>j”共執行的次數是
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf("%d",s);
break;
}s+=i;
}
}
A.4B.7
C.5D.6
64.結構化程序設計的3種結構是()。
A.順序結構、選擇結構、轉移結構
B.分支結構、等價結構、循環結構
C.多分支結構、賦值結構、等價結構
D.順序結構、選擇結構、循環結構
65.下列敘述中正確的是()。A.循環隊列有隊頭和隊尾兩個指針,因此,循環隊列是非線性結構
B.在循環隊列中,只需要隊頭指針就能反映隊列中元素的動態變化情況
C.在循環隊列中,只需要隊尾指針就能反映隊列中元素的動態變化情況
D.循環隊列中元素的個數是由隊頭指針和隊尾指針共同決定
66.設有定義:
則a和b的值分別是()。
A.87和6.0B.876和543.0C.87和543.0D.76和543.0
67.以下選項中正確的定義語句是()。
68.面向對象的設計方法與傳統的面向過程的方法有本質不同,它的基本原理是()。
A.模擬現實世界中不同事物之間的聯系
B.強調模擬現實世界中的算法而不強調概念
C.使用現實世界的概念抽象地思考問題從而自然地解決問題
D.不強調模擬現實世界中的算法而強調概念
69.以下程序的輸出結果是()。
A.20B.24C.25D.15
70.設有定義:charp[]={1,2,3),*q=p;,以下不能計算出一個char型數據所占字節數的表達式是()。
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
71.
72.有以下程序:
程序執行后的輸出結果是()。
A.y=OS)y=一1B.0C.y=1D.while構成無限循環
73.
74.有以下程序
main()
{inti=10,j=1;
printf("%d,%d\n",i--,++j);
}
執行后的輸出結果是
A.9,2B.10,2
C.9,1D.10,1
75.程序中若有如下說明和定義語句
charfun(char*);
main()
{
char*s="one",a[5]={0},(*f1)()=fun,ch;
……
}
以下選項中對函數fun的正確調用語句是
A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);
76.
77.以下敘述中正確的是()。
A)C程序中的#include和#define行均是C語句,只是語法不同
B)除賦值運算符外,逗號運算符的優先級最低
C)C程序中,j++;是賦值語句
D)C程序中,+、-、*、/、%號是算數運算符,可用于整型和實型數的運算
78.有以下程序:
程序運行后的輸出結果是()。
A.0B.1C.4D.8
79.若二維數組a有m列,則在a[i][j]前的元素個數為()。
A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1
80.
五、程序改錯題(1題)81.下列給定程序中,proc()函數的功能是:根據形參n。計算下列公式的值:t=1-1/2+1/3-1/4+…+(-1)(n+1)/n例如,若輸入6,則應輸出0.616667。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.編寫函數fun,其功能是:實現兩個字符串的連接(不要使用庫函數strcat),即把p2所指的字符串連接到
pl所指的字符串的后面。
例如,分別輸入下面兩個字符串:
程序輸出:
注意:部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
參考答案
1.D
2.AC語言規定定義數組時,數組的長度必須是整型常量,數組說明符的方括號中表達式只要是常量即合法,因此選項B錯誤。C語言規定,數組元素下標必須是非負整數,因此選項C錯誤。選項D中,“chararray[4]”數組的長度為4,“army[“3”]”中“3”是常量字符串,與C語言規定數組的下標必須是非負整數不符。故本題答案為A選項。
3.D解析:本題考查給二維數組元素賦值。給二維數組元素賦值時應注意下列兩點:①在對二維數組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。②二維數組第一維的大小由下列規則確定;當初值的個數能被第二維的常量表達式的值除盡時,所得商數就是第一維的大小;當初值的個數不能被第二維的常量表達式的值除盡時,第一維的大小等于所得商數加1。
4.A
5.B\n本題考查了強制類型轉換。9/2為double型,所以結果為4.5,又強制轉換為整型,所以結果為4。9%2為取余運算,結果為1。最終結果4-1=3。
\n
6.C
試題2分析
結點的存儲順序和邏輯順序不一定一致,存儲空間也不一定連續。插入和刪除元素的時候,不需要移動表中的元素。
試題2答案
C
7.D
8.B解析:C語言中注釋可以放在任何位置,選項A錯誤;C語言中的變量只要在使用之前定義即可,位置可以是使用前的任何位置,故選項B正確;C語言中兩側數據類型可以不一致,系統可進行強制類型轉換,選項C錯誤;C語言數值常量中不允許存在空格,選項D錯誤。
9.C解析:數據結構是指數據以及他們之間的相互聯系。其中數據的邏輯結構是指數據元素之間的邏輯關系,它與所使用的計算機無關:數據的物理結構,又稱存儲結構,是指數據結構在計算機中的表示,它包括數據元素的表示和元素的表示,其中數據元素之間的關系在計算機中有順序存儲結構和鏈式存儲結構兩種。因此C是正確答案。
10.A解析:在函數體內定義一字符型指針并指向形參,然后遍歷其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的長度。
11.B
12.D
13.Dmain函數首先定義整型變量S,初值為1;定義float類型的n、t、Pai,其中n初值為1.0,t初值為1,pai初值為0。while循環判斷t的絕對值(fabs為求float類型值的絕對值的函數)是否大于1.0×10-6,若t的絕對值大于1.0×10-6,那么,執行語句“pai+=t;n+=2;s=-s;t=s/n;”,所以每輪循環pai累加“s/n”(其中s是上一輪s的相反數,n是上一輪n累加2的值)。第1輪循環時,pai被賦值為1,s是正數,所以最終pai的計算結果是:1-1/3+1/5-1/7+1/9-…。故本題答案為D選項。
14.C
15.B解析:在主函數中,第—次調用fun函數,將變量b,c的值傳給形參x,y,在fun()函數中執行if語句,判斷b和c的值是否相等,由于在主函數中賦初值b=5,c=6,所以判斷條件不滿足,執行else語句,返回表達式(x+y)/2的值,即:(5+6)/2,因為參數的類型都為int型,所以結果也為整型:5,第二次調用時8和5也不相等,所以返回值為6,因此,選項B是正確的。
16.B在C語言中,數組名類似于一個指向數組首地址的指針常量,一旦定義就不能修改其內容。所以本題中的“s+=2;”語句讓數組名S的內容加2是錯誤的,編譯無法通過。故本題答案為B選項。
17.C
18.A本題考查的是格式輸)ki$i數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變量之中,其中的格式命令可以說明最大域寬。在百分號(%)與格式碼之間的整數用于限制從對應域讀入的最大字符數。因此j的值為55,y的值為566.0,字符數組nanle的值為7777123。故本題答案為A)。
19.D解析:C語言規定,字符常量在程序中要用單引號括起來。判斷c1是否為小寫字母的充要條件c1>='a'和c1<='z',用邏輯與(&&)來表示。A選項的這種形式在C語言中沒有,所以選項D)正確.
20.C
21.0。0。解析:表達式中將實型常量2.5和算術表達式1.25*(3.7+2.3)的值強制轉換為整型后參與運算。
22.時間復雜度時間復雜度解析:在算法正確的前提下,評價一個算法的兩個標準是空間復雜度和時間復雜度。算法的時間復雜度,是指執行算法所需要的計算工作量。算法的空間復雜度是指執行這個算法所需要的內存空間。
23.11解析:字符空格的ASCII碼不為0,所以本題中表達式\ue008!c\ue009的值為0,b=0&&1的結果顯然為0。
24.66解析:本題中,i,j分別為外循環和內循環的循環控制變量,外層循環共執行了4次。當i=1時,由于內層循環判斷條件(2<=1)為假不執行內層循環。當i=2時,執行內層循環,輸出一個#;當i=3時,內層循環循環兩次,輸出兩個#;當i=4時,內層循環循環三次,輸出三個#;當i=5時,循環判斷條件不成立,退出外層循環。所以一共輸出6個#。
25.3232解析:二叉樹的一個性質是,在二叉樹的第k層上,最多有2k-1(k≥1)個結點。由此,26-1=32.所以答案為32。
26.非線性結構非線性結構解析:對于一個非空的數據結構,如果同時滿足下列兩個條件,即1)有且只有一個根結點;2)每一個結點最多有一個前件,也最多有一個后件;即為線性結構,而二叉樹的結點可能存在兩個后件,所以是非線性結構。
27.投影專門關系運算包括對單個關系進行垂直分解(投影操作)或水平分解(選擇操作)和對多個關系的結合(連接操作)等。
28.b=i+1b=i+1解析:本題考查了for循環語句的執行過程。i+=2是修正表達式,執行一次循環體后i的值就增加2,i的初始值為0,每次加2之后和累加至a,所以a的值就是1~10之間的偶數之后;b的值是1~11之間的奇數和,但在輸出b值時c去掉多加的11,即為1~10之間的奇數之和。
29.上溢上溢解析:入隊運算是指在循環隊列的隊尾加入一個新元素。這個運算有兩個基本操作:首先將隊尾指針進一(即rear=rear+1),并當rear=m+1時置rear=1;然后將新元素插入隊尾指針指向的位置。當循環隊列非空(s=1)時且隊尾指針等于隊頭指針時,說明循環隊列已滿,不能進行入隊運算,這種情況稱為“上溢”。
30.空間空間解析:程序在計算機上運行時所耗費的時間由程序運行時所需輸入的數據總量、對源程序進行編譯所需時間、計算機執行每條指令所需時間、程序中的指令重復執行的次數等決定。習慣上常常把語句重復執行的次數作為算法運行時間的相對量度,稱作算法的時間復雜度。算法在運行過程中需輔助存儲空間的大小稱為算法的空間復雜度。
31.852852解析:循環前,變量y的值為9,其中的循環語句在y大于0情況下循環,每次循環后y的值減1。循環體是當y能被3整除時輸出表達式--y,輸出的是減1后的y值。這樣,第一次循環因y為9,能被3整除,輸出8,y也變成8。又經兩次循環,y的值變為6,又讓y減1變成5,并輸出5;又經兩次循環,y的值變成3,讓y減1變成2,輸出2;再經兩次循環后,y的值變成0,結束循環。所以程序輸出852。
32.黑箱黑箱解析:本題考查了軟件測試中的黑箱測試。黑箱測試是根據程序規格說明所規定的功能來設計測試用例,它不考慮程序的內部結構和處理過程。常用的黑箱測試技術分為等價類劃分、邊界分析、錯誤猜測以及因果圖等。
33.功能模型功能模型
34.t>=le-5;t=t/n;
35.a=2b=1a=2,b=1解析:本題考查了switch結構的內容。C語言中,程序執行完一個case標號的內容后,如果沒有break語句,控制結構會轉移到下一個case繼續執行,因為case常量表達式只是起語句標號作用,并不是在該處進行條件判斷。本題程序在執行完內部switch結構后,繼續執行了外部switch結構的case2:分支,最后a和b的值分別為2和1。
36.\0s*p++\\0\r\ns\r\n*p++解析:本題先通過for循環從鍵盤讀入20個字符,然后賦值'\\0'作為字符串結束標志,再使指針p指向字符串的首地址,最后通過while循環對字符串進行掃描并輸出。
37.數據庫系統階段數據庫系統階段解析:在數據管理技術的發展過程中,經歷了人工管理階段、文件系統階段和數據庫系統階段,其中數據獨立性最高的階段是數據庫系統階段。
38.x+=1x+=1解析:本題考查“++”,“--”運算符。“++”、“--”只能作用于變量,不能用于表達式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。
39.操作系統或OS操作系統或OS解析:數據庫管理系統是數據庫的機構,它是一種系統軟件,負責數據庫中的數據組織、數據操縱、數據維護、控制及保護和數據服務。位于用戶和操作系統之間。
40.length++i<lengthlength++\r\ni<length解析:第—個循環極有可能是計算串的長度,在i<=length時字符才被刪除,被刪除的是從第i個到笫i+n或最后—個間的所有字符。刪除前,應判斷i<=length。由于已經進行了-i運算,故實際應填入i<length。
41.C
42.B
43.B解析:主函數中for循環執行兩次,i=1和i=2。調用函數f(1),返回值為1,j=1;調用函數f(2),計算表達式f(n-1)+1的值時遞歸調用f(1),返回值為2,j=3。所以B為所選。
44.B解析:考查用指針引用字符串元素的方法。指針a通過數組元素下標來從頭逐個地引用字符串item中的字符,判斷不是0~9之間的數字時,就去掉這個字符,所以程序結束后,字符串item中就只剩下和兩個字符了。
45.D解析:本題中,scanf函數的格式控制沒有空格,所以,對于選項A)、B)、C),輸入的第一個空格會作為字符賦值給變量c1,而不會被解釋成分隔符。
46.A解析:因為變量的初始值分別為“k=5,n=0”,所以程序第一次進入循環時,執行default語句,這時k=4,執行'case4:”這個分支,結果是“n=2,k=3”,打印出2;然后程序進行第二次循環,這時“n=2,k=3”,執行'case3:”這個分支,結果是“n=3,k=2”,打印出3;程序進行第三次循環,這時“n=3,k=2”,執行“case2:case4:”這兩個分支,結果是“n=5,k=1”,打印出5,這時因為n=5不滿足n<5的循環條件,因此退出循環,程序運行結束,故輸出結果為235。
47.A解析:本題考查了continue和break語句用在循環語句中的作用。break語句的作用是結束本層循環,而continue語句的作用是結束本次循環直接進入到下次循環。
48.D解析:選項A:'a'&&'b'是字符a與b的相與,不為0:選項B:a<=b,由題中變量賦值可知,結果為1。選項C:a||+c&&b-c,結果為1;選項D:!((a<B)&&!c||1),運算結果為0。
49.A
50.B解析:先計算關系表達式a<b=2<3為真(表達式為真時,如果變量為int型變量則真用1表示,假用0表示),即a=1。
51.A解析:引用一個數組元素,可以用:(1)下標法,如a[i]形式;(2)指針法,如*(a+i)或*(p+i)。數組的下標從0開始,值為3的數組元素是a[2]。B、C的內容為a[3],D將a[2]前自加,結果為4。
52.A解析:條件表達式“a?b:c”的含義是:當a為真時,其值等于表達式b的值;當a為假時,其值等于表達式c的值。
表達式運算過程:第1個表達式:w=2<x=3為真,所以返回w的值,即m=w=2;第2個表達式:m=2<z=5為真,所以返回m的值,即m=2;第3個表達式:w=2<y=4為真,所以返回m的值,即m=2。
53.D解析:數據流圖有4種成分:源點或終點、處理、數據存儲和哦數據流。數據存儲是處于靜止狀態的數據,數據流是處于運動中的數據。
54.D解析:C語言規定,所有字符常量都可以化為整型常量來處理,因而字符常量也可以參與算術運算。注:字符常量參與算術運算時,其實是使用其對應的ASCII碼值進行計算。本題中,'a'對應的ASCII碼值是97。題中雖然沒有給'6'和'0'的ASCII碼值,但應該知道'6'-'0'是將字符'6'轉換成整數6的表達式,所以c1='a'+'6'-'0'=103,c2='a'+'3'-'0'=100,按照字符型輸出分別是g和d。
55.C解析:字符串存儲要有結束符“\\0”且要占用一個空間,選項A)、B的空間不夠:printf用來輸出字符,不能輸入字符串.
56.C解析:數據庫不是一個獨立的系統,它需要操作系統的支持,選項A錯誤;設計數據庫的目的是設計出滿足實際應用需求的實際關系模型,選項B錯誤;數據庫技術的主要目的是有效地管理和存取大量的數據資源,包括:提高數據的共享性,使多個用戶能夠同時訪問數據庫中的數據;減小數據的冗余,以提高數據的一致性和完整性;提供數據與應用程序的獨立性,從而減少應用程序的開發和維護代價,選項C正確。數據庫系統中,數據的物理結構和邏輯結構可以相互獨立,選項D錯誤。
57.C解析:本題考查.do…while循環。在do…while循環中,當表達式的值為非零(真)時,執行循環,不能與其等價的是為零的表達式,即(exp==0)。
58.C解析:軟件測試的目標是在精心控制的環境下執行程序,以發現程序中的錯誤,給出程序可靠性的鑒定。它有3個方面的重要特征,即測試的挑剔性、完全測試的不可能性及測試的經濟性。其中沒有測試的可靠性這一說法。注意:軟件測試與軟件調試的概念,以及相應的方法。
59.D解析:函數的靜態局部變量在編譯時就賦初值,即只賦初值一次,在程序運行時它已有初值,以后每次調用函數時不再重新賦值,而只是保留上次函數調用結束時的值。
60.C解析:在C語言中,求余運算符“%”兩邊的運算對象都應為整型數據,所以需要對變量f進行強制類型轉換,正確的寫法為k%(int)f。在C語言中,邏輯運算符與賦值運算符、算術運算符、關系運算符之間從高到低的運算優先次序是:!(邏輯“非”)、算術運算符、關系運算符、&&(邏輯“與”)、‖(邏輯“或”)、賦值運算符。根據運算符的優先級與結合性,對于選項A),先計算k>=k的值(為真,即1),再用1對k進行賦值。對于選取項B),先計算k什的值,再對其取負數。對于選項D),先計算k>=f的值(為假,即0),再用0與m進行比較,故最終結果為0。
61.C
62.Afun函數將字符串中的小寫字符轉換為大寫字母,所以答案選擇A)。
63.D本題主要要求我們求判斷條件“i>j”執行的次數。在本題的程序中,首先定義了四個整型變量,并分別賦初值,然后執行for循環結構,該循環結構中都是缺省語句,那么如果循環體中沒有break語句,程序將面臨死循環,從后面的程序中我們可以看出,程序中存在一條break語句。
第一次循環時,變量k的值為2,變量i的值被改變為2,而此時變量j的值為10,執行if(i>j)語句,結果為假,不執行break語句,然后改變變量s的值,一次循環結束。
通過對這次循環的分析,我們發現變量k的值一直沒被改變,而變量i值的改變與變量k有關,且每循環一次增加2,那么變量i的改變軌跡應該為0,2,4,6,8,10,12,當i等于12時,其值大于j,條件判斷語句結果為真,執行break語句,結束循環。從這里我們可以推斷出循環執行的次數為6,因此,判斷條件“i>j”執行的次數也為6次,本題的正確答案選D。
64.D結構化程序設計的基本要點:①采用自頂向下、逐步求精的程序設計方法;②任何程序都可由順序、選擇和循環3種基本控制結構構造。
65.D\r\n所謂循環隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環狀空間,供隊列循環使用。在循環隊列中,用隊尾指針rear指向隊列中的隊尾元素,用排頭指針front指向排頭元素的前一個位置,因此,從排頭指針front指向的后一個位置直到隊尾指針real指向的位置之間所有的元素均為隊列中的元素。求解隊列中元素個數的方法是:若front>rear,隊列中有n-front+rear個元素(其中n為循環隊列的容量);若front<rear,隊列中有real-front個元素;若front=rear,隊列中有n個或0個元素。循環隊列是線性結構。因此本題的正確答案是D。
66.A在格式字符前加入一個整數可以指定輸入數據所占的寬度,所以賦值時會將87賦給int型變量a,把6.0賦給im型float型變量b。
67.AB)選項,定義變量不能連等,C)選項b前沒有類型名,D)選項類型名與變量名之間不能有逗號,所以A)正確,其余錯誤。
68.C\n面向對象的設計方法的基本原理是:使用現實世界的概念抽象地思考問題從而自然地解決問題。它雖強調模擬現實世界中的概念而不強調算法,但是它鼓勵開發者在軟件開發的過程中從應用領域的概念角度去思考。
\n
69.D第一次循環結束:a=1,i=1;第二次循環結束:a=3,i=2;第三次循環結束:a=6,i=3;第四次循環結束:a=10,i=4;第五次循環結束:a=15,i=5;結束:a=15;
70.A選項A計算的是p口字符數組首地址所占的內存字節數。選項8、C和D都能計算出一個字符型數據所占的字節數。
71.A
72.B執行Y一一直到值為0,由于Y一一是先用再減,所以退出循環時,y的值為一1。
73.C
74.B本題主要考查自加和自減運算符。對變量a進行自減、自加的運算主要有如下四種。
++a:是對變量a進行自加運算,它是先加,再對加后的結果進行調用;
a++:也是對變量a進行自加運算,它是先調用變量a原來的值,然后對其進行自加;
--a:是對變量a進行自減運算,它是先減,然后對相減后的結果進行調用;
a--:也是對變量a進行自減運算,它是先調用變量a原來的值,然后對其進行自減。
在程序中,首先定義了兩個整型變量i和j,并分別賦初值為10和1,然后用輸出語句分別輸出這兩個變量自減與自加的結果。程序中調用的形式分別為i--和++j,前者為先調用再減,輸出的為10,而后者是先加再調用,輸出的為2。程序最后的輸出結果為10,2。因此,本題答案選B。
75.A解析:函數fun()的參數為指針類型,返回值為字符型,而選項B、C的參數不是指針類型,所以不正確,選項D中,*fl(s)表示返回值為指針的函數,所以也不正確。
76.D
77.C#define行為非C語句,所以沒有“;”號,%的運算對象只能為整型,逗號運算符的優先級最低。
78.Cm函數中的X為靜態局部變量,占用固定的內存單元,下一次調用時仍可保留上次調用時的值。也就是說,如果多次調用fun函數,x的定義只在第一次調用時有效,從第二次調用開始,x的定義相當于不存在,直接使用X的值。主函數中調用兩次fun函數t第一次調用:X=1,X=x}2=2,s=2;第二次調用:(直接用上次X的值)x=X·2=4,s=4。因此C選項正確。
79.B解析:二維數組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數組第一維的下標是i,說明它前面還有i行,有i*m個元素,數組第二維的下標是j,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。
80.C
81.(1)錯誤:intproc(intnJ
正確:doubleproc(intn)
(2)錯誤:for(i=1;i(n;i++)
正確:for(i=2;i<=n;i++)
【解析】由主函數中的函數調用以及函數proc()中返回值的類型,可知函數proc()的返回值類型為double型數據。因此,“intproc(intn)”應改為“doubleproc(intn)”。由題目中給出的表達式可知,循環的最大值應該取到n,因此,“for(i=l;i<n;i++)”應改為“for(i=2;i<=n;i++)”。
82.
【考點分析】
【解題思路】
本題用兩個循環完成操作,第1個循環的作用是求出第1個字符串的長度,即將i指到第1個字符串的末尾。第2個循環的作用是將第2個字符串的字符連到第1個字符串的末尾。
2021-2022年河北省保定市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列程序段的時間復雜度為()。A.O(3n)B.O(n)C.O(n2)D.O(log3n)
2.以下敘述正確的是()。
A.“charc1,*c2,*c3[10];”是合法的變量定義語句
B.數組說明符的方括號中不能使用表達式
C.數組元素下標可以是非整數
D.若有定義“chararray[4];”,則語句“printf(“%c”,array[“3”]);”是合法的
3.若有說明:inta[][3]={0,0};則不正確的敘述是()。
A.數組a的每個元素的初值都是0
B.數組a的第一維大小為1
C.數組a的行數為1
D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
4.設有一組關鍵字序列{5,8,14,20,31,55,78,81,93,97,111},使用二分(折半)法查找關鍵字93最少需要進行多少次比較()A.2B.3C.4D.5
5.表達式:(int)((double)9/2)-(9)%2.的值是A.0B.3C.4D.5
6.下列關于線性鏈表的敘述中,正確的是()A.各數據結點的存儲空間可以不連續,但它們的存儲順序與邏輯順序必須一致
B.各數據結點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續
C.進行出入與刪除時,不需要移動表中的元素
D.以上三種說法都不催
7.廣義表((a))的表尾是()。
A.aB.(a)C.((a))D.()
8.以下關于C語言的敘述中正確的是()。
A.C語言中的注釋不可以夾在變量名或關鍵字的中間
B.C語言中的變量可以在使用之前的任何位置進行定義
C.在C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致
D.C語言的數值常量中夾帶空格不影響常量值的正確表示
9.數據結構中,與所使用的計算機無關的是數據的()結構。
A.存儲B.物理C.邏輯D.物理和存儲
10.下述函數功能是______。intfun(char*x){char*y=x;while(*y++);returny-x-1;}
A.求字符串的長度B.求字符串存放的位置C.比較兩個字符串的大小D.將字符串x連接到字符串y后面
11.如下函數調用語句func(rec1,rec2+rec3,rec4,rec5);該函數調用語句中,含的實參個數是().
A.3B.4C.5D.有語法錯誤
12.
13.有以下程序:#include<stdio.h>#include<math.h>main(){ints;floatn,t,pai;t=1,pai=0,n=1.0,s=1;while(fabs(t)>1.0e-6){pai+=t;n+=2;s=-s;t=s/n;}printf(“total=%f\n”,pai);}程序運行所計算的是()。
A.1-1/2!+1/3!-1/5!+1/7!-…
B.1+1/3+1/5+1/7+1/9-…
C.1+1/2+1/3+1/4+1/5-…
D.1-1/3+1/5-1/7+1/9-…
14.
15.有以下程序#include<stdio.h>intfun(intx;inty){if(x=y)reurn(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結果是______。A.3B.6C.8D.12
16.有以下程序:#include<stdio.h>main(){chars[]=“abcde”;s+=2;printf(“%d\n”,s[0]);}程序的運行結果是()。
A.輸出字符c的ASCII值B.程序出錯C.輸出字符cD.輸出字符a的ASCII值
17.在一個無向圖中,所有頂點的度數之和等于所有邊數的()倍。
A.1/2B.1C.2D.4
18.有以下程序段當執行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。
A.566.0B.55566.0C.7777.0D.566777.0
19.判斷char型變量c1是否為小寫字母的正確表達式為()。
A.'a'<=c1<='z'
B.(c1>=A)‖(c1<=z)
C.('a'=>c1‖('z'<=c1)
D.(c1>='a')&&(c1<='z')
20.插入和刪除只能在一端進行線性表,稱為()。
A.隊列B.循環隊列C.棧D.循環棧
二、2.填空題(20題)21.表達式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的值是______。
22.在算法正確的前提下,評價一個算法的兩個標準是空間復雜度和()。
23.已有定義:charc=′′;inta=1,b;(此處c的初值為空格字符),執行b=!c&&a;后b的值為【】。
24.執行以下程序后,輸出‘#’號的個數是【】。
#include<atdio.h>
main()
{inti,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
25.一棵二叉樹第六層(根結點為第一層)的結點數最多為______個。
26.按照邏輯結構分類,數據結構可分為線性結構和非線性結構,二叉樹屬于______。
27.關系數據庫管理系統能實現的專門關系運算包括選擇、連接和【】。
28.下面程序的功能是:計算1~10之間的奇數之和與偶數之和,請填空。
#include<stdio.h>
main()
{inta,b,c,i;
a=c=0;
for(i=0;i<=10;i+=2)
{a+=i;
【】;
c+=b;}
printf("偶數之和=%d\n",a);
printf("奇數之和=%d\n",c-11);}
29.當循環隊列非空且隊尾指針等于隊頭指針時,說明循環隊列已滿,不能進行入隊運算。這種情況稱為【】。
30.算法復雜度主要包括時間復雜度和【】復雜度。
31.以下程序的輸出結果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
32.【】(黑箱或白箱)測試方法完全不考慮程序的內部結構和內部特征。
33.在面向對象方法學中,直接反映了用戶對目標系統的要求的模型是【】。
34.下面程序的功能是根據公式e=1+1/1!+1/2!+1/3!+1/4!+...計算e的近似值,精度要求為10-5。請填空。
main()
{intn;
doublee=1.0,t=1.0;
for(n=1;【】n++);
{【】e+=t;}
printf("%f\n",e);}
35.以下程序的運行結果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
case3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
36.下面的程序是將從終端讀入的20個字符放入字符數組中,然后利用指針變量輸出上述字符串,請填空。
#include<stdio.h>
main()
{inti;
chars[21],*p;
for(i=0;i<20;i++)
s[i]=getehar();
s[i]=【】;
p=【】;
while(*p)putchar(【】);
}
37.數據管理技術的發展過程經過人工管理、文件系統和數據庫系統三個階段,其中數據獨立性最高的階段是【】。
38.語句:x++;++x;x=1+x;執行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。
39.在計算機軟件系統的體系結構中,數據庫管理系統位于用戶和【】之間。
40.函數delete(s,i,n)的作用是從字符串s中刪除從第i個字符開始的n個字符,請填空。
voiddelete(chars[],inti,intn)
{intj,k,length=0;
whiles(length])
【】;
-i;
j=i;
}
if(【】)
{k=i+n;
if(i+n<=length)
while(k<length)
s[j++]=s[k++];
s[j]='\0';
}
三、1.選擇題(20題)41.以下關鍵字序列用快速排序法進行排序,速度最慢的是______。
A.{23,27,7,19,11,25,32}
B.{23,11,19,32,27,35,7}
C.{7,11,19,23,25,27,32}
D.{27,25,32,19,23,7,11}
42.請讀程序片段:charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));上面程序片段的輸出結果
A.68B.0C.字符'D'的地址D.不確定的值
43.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+=f(i);printf("%d\n",j);}程序運行后的輸出結果是
A.4B.3C.2D.1
44.下面程序的運行結果是
#include<stdio.h>
voiddelch(char*s)
{inti,j;
char*a;
a=s;
for(i=0,j=0;a[i]!=′\n′;i++)
if(a[i]>=′0′&&a[i]<=′9′)
{s[j]=a[i];j++;}
s[j]=′\0′;}
main()
{char*item="a34bc";
delch(item);
printf("\n%s",item);}
A.abcB.34C.a34D.a34bc
45.設變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:□代表空格字符)
A.10□X□20□Y<回車>
B.10□X20□Y<回車>
C.10□X<回車>20□Y<回車>
D.10X<回車>20Y<回車>
46.有以下程序
main()
{intk=5,n=0;
do
{switch(k)
{case1:case3:n+=1;k--;break;
default:n=0;k--;
case2:case4:n+=2;k--;break;
}
printf("%d",n);
}while(k>0&&n<5);
}
程序運行后的輸出結果是
A.235B.0235C.02356D.2356
47.有以下程序:main(){intx=0,y=0,i;for(i=1;++i){if(i%2==0){x++;continue;}if(i%5==0){y++;break;}}printf("%d,%d",x,y);}程序的輸出結果是()。
A.2,1B.2,2C.2,5D.5,2
48.設a、b和c都是int型變量,且a=3、b=4、c=5,則下面的表達式中,值為0的表達式是______。
A.'a'&&'b'
B.a<=b
C.a||+c&&b-c
D.!((a<b)&&!c||1)
49.若有說明:long*p,a;,則不能通過scanf語句正確給輸入項讀入數據的程序段是()
A.*p=&a;scanf("%1d",p);
B.p=(long*)malloc(8);scanf("%1d",p);
C.scanf("%1d",p=&a);
D.scanf("%1d",&a);
50.已知inta=2,b=3;則執行表達式a=a<b后,變量a的值為()。
A.0B.1C.2D.3
51.若有以下定義和語句:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;則值為3的表達式是______。
A.p+=2,*(p++)B.P+=2,*++pC.P+=3,*p++D.P+=2,++*p
52.若w、x、y、z、m均為int型變量,則執行下列的語句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;
A.2B.3C.5D.4
53.數據存儲和數據流都是______,僅僅是所處的狀態不同。
A.分析結果B.事件C.動作D.數據
54.已知字母a的ASCII碼為十進制數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
55.下列能正確進行字符串賦值的是()。
A.chars[5]={"ABCDE"};
B.chars[5]={'A','B','C','D','E'};
C.char*s;s="ABCDE";
D.char*s;printf("%s",s);
56.下列敘述中正確的是______。
A.數據庫是一個獨立的系統,不需要操作系統的支持
B.數據庫設計是指設計數據庫管理系統
C.數據庫技術的根本目標是要解決數據共享的問題
D.數據庫系統中,數據的物理結構必須與邏輯結構一致
57.不能與do…while(exp)語句中的(exp)等價的表達式是()。
A.(!exp==0)B.(exp>0‖exp<0)C.(exp==0)D.(exp!=0)
58.下列敘述中,不屬于測試的特征的是
A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經濟性
59.以下程序的輸出結果是intf(){staticinti=0;ints=1;s+=i;i++;retumS;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);}
A.20B.24C.25D.15
60.設有定義:intk=1,m=2;noatf=7;則下列選項中錯誤的表達式是()。
A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m
四、選擇題(20題)61.
62.
63.在下述程序中,判斷條件“i>j”共執行的次數是
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf("%d",s);
break;
}s+=i;
}
}
A.4B.7
C.5D.6
64.結構化程序設計的3種結構是()。
A.順序結構、選擇結構、轉移結構
B.分支結構、等價結構、循環結構
C.多分支結構、賦值結構、等價結構
D.順序結構、選擇結構、循環結構
65.下列敘述中正確的是()。A.循環隊列有隊頭和隊尾兩個指針,因此,循環隊列是非線性結構
B.在循環隊列中,只需要隊頭指針就能反映隊列中元素的動態變化情況
C.在循環隊列中,只需要隊尾指針就能反映隊列中元素的動態變化情況
D.循環隊列中元素的個數是由隊頭指針和隊尾指針共同決定
66.設有定義:
則a和b的值分別是()。
A.87和6.0B.876和543.0C.87和543.0D.76和543.0
67.以下選項中正確的定義語句是()。
68.面向對象的設計方法與傳統的面向過程的方法有本質不同,它的基本原理是()。
A.模擬現實世界中不同事物之間的聯系
B.強調模擬現實世界中的算法而不強調概念
C.使用現實世界的概念抽象地思考問題從而自然地解決問題
D.不強調模擬現實世界中的算法而強調概念
69.以下程序的輸出結果是()。
A.20B.24C.25D.15
70.設有定義:charp[]={1,2,3),*q=p;,以下不能計算出一個char型數據所占字節數的表達式是()。
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
71.
72.有以下程序:
程序執行后的輸出結果是()。
A.y=OS)y=一1B.0C.y=1D.while構成無限循環
73.
74.有以下程序
main()
{inti=10,j=1;
printf("%d,%d\n",i--,++j);
}
執行后的輸出結果是
A.9,2B.10,2
C.9,1D.10,1
75.程序中若有如下說明和定義語句
charfun(char*);
main()
{
char*s="one",a[5]={0},(*f1)()=fun,ch;
……
}
以下選項中對函數fun的正確調用語句是
A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);
76.
77.以下敘述中正確的是()。
A)C程序中的#include和#define行均是C語句,只是語法不同
B)除賦值運算符外,逗號運算符的優先級最低
C)C程序中,j++;是賦值語句
D)C程序中,+、-、*、/、%號是算數運算符,可用于整型和實型數的運算
78.有以下程序:
程序運行后的輸出結果是()。
A.0B.1C.4D.8
79.若二維數組a有m列,則在a[i][j]前的元素個數為()。
A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1
80.
五、程序改錯題(1題)81.下列給定程序中,proc()函數的功能是:根據形參n。計算下列公式的值:t=1-1/2+1/3-1/4+…+(-1)(n+1)/n例如,若輸入6,則應輸出0.616667。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:
六、程序設計題(1題)82.編寫函數fun,其功能是:實現兩個字符串的連接(不要使用庫函數strcat),即把p2所指的字符串連接到
pl所指的字符串的后面。
例如,分別輸入下面兩個字符串:
程序輸出:
注意:部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
參考答案
1.D
2.AC語言規定定義數組時,數組的長度必須是整型常量,數組說明符的方括號中表達式只要是常量即合法,因此選項B錯誤。C語言規定,數組元素下標必須是非負整數,因此選項C錯誤。選項D中,“chararray[4]”數組的長度為4,“army[“3”]”中“3”是常量字符串,與C語言規定數組的下標必須是非負整數不符。故本題答案為A選項。
3.D解析:本題考查給二維數組元素賦值。給二維數組元素賦值時應注意下列兩點:①在對二維數組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。②二維數組第一維的大小由下列規則確定;當初值的個數能被第二維的常量表達式的值除盡時,所得商數就是第一維的大小;當初值的個數不能被第二維的常量表達式的值除盡時,第一維的大小等于所得商數加1。
4.A
5.B\n本題考查了強制類型轉換。9/2為double型,所以結果為4.5,又強制轉換為整型,所以結果為4。9%2為取余運算,結果為1。最終結果4-1=3。
\n
6.C
試題2分析
結點的存儲順序和邏輯順序不一定一致,存儲空間也不一定連續。插入和刪除元素的時候,不需要移動表中的元素。
試題2答案
C
7.D
8.B解析:C語言中注釋可以放在任何位置,選項A錯誤;C語言中的變量只要在使用之前定義即可,位置可以是使用前的任何位置,故選項B正確;C語言中兩側數據類型可以不一致,系統可進行強制類型轉換,選項C錯誤;C語言數值常量中不允許存在空格,選項D錯誤。
9.C解析:數據結構是指數據以及他們之間的相互聯系。其中數據的邏輯結構是指數據元素之間的邏輯關系,它與所使用的計算機無關:數據的物理結構,又稱存儲結構,是指數據結構在計算機中的表示,它包括數據元素的表示和元素的表示,其中數據元素之間的關系在計算機中有順序存儲結構和鏈式存儲結構兩種。因此C是正確答案。
10.A解析:在函數體內定義一字符型指針并指向形參,然后遍歷其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的長度。
11.B
12.D
13.Dmain函數首先定義整型變量S,初值為1;定義float類型的n、t、Pai,其中n初值為1.0,t初值為1,pai初值為0。while循環判斷t的絕對值(fabs為求float類型值的絕對值的函數)是否大于1.0×10-6,若t的絕對值大于1.0×10-6,那么,執行語句“pai+=t;n+=2;s=-s;t=s/n;”,所以每輪循環pai累加“s/n”(其中s是上一輪s的相反數,n是上一輪n累加2的值)。第1輪循環時,pai被賦值為1,s是正數,所以最終pai的計算結果是:1-1/3+1/5-1/7+1/9-…。故本題答案為D選項。
14.C
15.B解析:在主函數中,第—次調用fun函數,將變量b,c的值傳給形參x,y,在fun()函數中執行if語句,判斷b和c的值是否相等,由于在主函數中賦初值b=5,c=6,所以判斷條件不滿足,執行else語句,返回表達式(x+y)/2的值,即:(5+6)/2,因為參數的類型都為int型,所以結果也為整型:5,第二次調用時8和5也不相等,所以返回值為6,因此,選項B是正確的。
16.B在C語言中,數組名類似于一個指向數組首地址的指針常量,一旦定義就不能修改其內容。所以本題中的“s+=2;”語句讓數組名S的內容加2是錯誤的,編譯無法通過。故本題答案為B選項。
17.C
18.A本題考查的是格式輸)ki$i數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變量之中,其中的格式命令可以說明最大域寬。在百分號(%)與格式碼之間的整數用于限制從對應域讀入的最大字符數。因此j的值為55,y的值為566.0,字符數組nanle的值為7777123。故本題答案為A)。
19.D解析:C語言規定,字符常量在程序中要用單引號括起來。判斷c1是否為小寫字母的充要條件c1>='a'和c1<='z',用邏輯與(&&)來表示。A選項的這種形式在C語言中沒有,所以選項D)正確.
20.C
21.0。0。解析:表達式中將實型常量2.5和算術表達式1.25*(3.7+2.3)的值強制轉換為整型后參與運算。
22.時間復雜度時間復雜度解析:在算法正確的前提下,評價一個算法的兩個標準是空間復雜度和時間復雜度。算法的時間復雜度,是指執行算法所需要的計算工作量。算法的空間復雜度是指執行這個算法所需要的內存空間。
23.11解析:字符空格的ASCII碼不為0,所以本題中表達式\ue008!c\ue009的值為0,b=0&&1的結果顯然為0。
24.66解析:本題中,i,j分別為外循環和內循環的循環控制變量,外層循環共執行了4次。當i=1時,由于內層循
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關于季節變遷的想象作文7篇
- 高效農業灌溉系統推廣協議
- 基礎教育融合發展的全球趨勢與挑戰
- 初中議論文:如何寫物7篇
- 財務會計成本控制主題測試
- 數字經濟與實體經濟融合對綠色經濟效率的影響
- 《數學競賽技巧輔導:數學競賽教學大綱》
- 憫農精神的傳承與現代意義教學教案
- 建筑垃圾減量化現狀及發展趨勢分析
- 農業廢棄物處理與環保責任契約
- 合同式婚姻協議書
- 門窗安裝人員合同協議
- 2025年湖北省新能源有限公司社會招聘24人筆試參考題庫附帶答案詳解
- 法律文化-形考作業3-國開(ZJ)-參考資料
- 1.6 人教統編版語文一年級下冊第六單元教材解讀課件
- 2025高中思想政治教師課標考試模擬試卷附參考答案(三套)
- 調查與研究能力試題及答案
- 兵團基礎知識試題及答案
- 非結核分枝桿菌肺病的影像學診斷
- 行業報告全球彩寶市場現狀及前景
- 2025租賃房屋合同范本下載
評論
0/150
提交評論