版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2022年山東省青島市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序:
程序運行后的輸出結(jié)果是().
A.1,3
B.2,3
C.1,4
D.1,2
2.對n個元素的有序表A[1..n]進行順序查找,其成功查找的平均查找長度(即在查找表中找到指定關(guān)鍵碼的元素時,所進行比較的表中元素個數(shù)的期望值)為()
A.nB.(n+1)/2C.log2nD.n^2
3.
4.
5.
6.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}
A.6,2B.6,4C.8,4D.8,6
7.數(shù)據(jù)流圖(DFD)的作用是()。
A.描述軟件系統(tǒng)的控制流B.支持軟件系統(tǒng)的功能建模C.支持軟件系統(tǒng)的面向?qū)ο蠓治鯠.描述軟件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)
8.對于C語言的函數(shù),下列敘述中正確的是()。
A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套
B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套
C.函數(shù)的定義和調(diào)用都不能嵌套
D.函數(shù)的定義和調(diào)用都可以嵌套
9.設(shè)intx=7,則~x的值是()。
A.-8B.7C.-1D.1
10.
11.將發(fā)送端數(shù)字脈沖信號轉(zhuǎn)換成模擬信號的過程稱為
A.鏈路傳輸B.調(diào)制C.解調(diào)D.數(shù)字信道傳輸
12.下面程序的輸出是()。A.17B.18C.23D.24
13.有以下程序:
程序的運行結(jié)果是()。
A.y=0B.y=1C.y=2D.y=3
14.有以下程序#include<stdio.h>voidfun(int*a,int*B){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*p,*q);}程序運行后的輸出結(jié)果是______。A.3,5,5,3B.3,5,3,5C.5,3,3,5D.5,3,5,3
15.甲乙兩個聰明人上街,撿到一張10塊錢的購物卡,兩人就想出一個辦法來分配這張卡。兩個分別將自己出的價格寫在紙上,然后看誰出的價高就給誰,并且那個出價高的人要把出的錢給對方?,F(xiàn)在甲有6塊錢,乙有8塊錢,甲乙雙方都知道對方當(dāng)前有多少錢并且都希望自己收益高于對方。問最后誰獲得的錢多()
A.甲多B.乙多C.一樣多D.有可能出現(xiàn)有人賠錢的情況
16.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序運行后的輸出結(jié)果是()。
A.10,One*Dream!
B.9,One*Dream!
C.9,One*World
D.10,One*World
17.若一棵二叉樹具有10個出度為2的結(jié)點,則在該二叉樹中,出度為0的結(jié)點個數(shù)是()
A.9B.11C.12D.不確定
18.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen(“d.dat”,“w+b”);for(i=0;i<6;i++)fwrite(&a[i],sizeof(int),1,fp);rewind(fp);fread(&a[3],sizeof(int),3,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,a[i]);}程序運行后的輸出結(jié)果是()。
A.4,5,6,4,5,6,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.1,2,3,1,2,3,
19.在學(xué)生管理的關(guān)系數(shù)據(jù)庫中,存取一個學(xué)生信息的數(shù)據(jù)單位是()。
A.文件B.數(shù)據(jù)庫C.字段D.記錄
20.若有以下定義:chara;intb;floatc;doubled;則表達(dá)式a*b+b-c值的類型為()。A.floatB.intC.charD.double
二、2.填空題(20題)21.定義inta=5,b;,則執(zhí)行表達(dá)式b=++a*--a之后,變量b的值為【】。
22.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且fun函數(shù)為void類型;請寫出fun函數(shù)的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}
23.下面程序的功能是從鍵盤輸入一行字符,統(tǒng)計有多少個單詞,單詞間用空格分隔。補充所缺語句。
#include<stdio.h>
main()
{charss[80],c1,c2='';
inti=0,num=0;
gets(s);
while(s[i]!='\0')
{c1=s[i];
if(i==0)c2='';
elsec2=s[i-1];
if(【】)num++;
i++;
}
printf("Thereare%dwords,\n",num);
}
24.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。
25.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。
26.以下sstrcpy()函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>
voidsstrcpy(char*s,char*t)
{while(*s++=______);}
main()
{charstr1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
27.下列程序段的輸出結(jié)果是【】。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",B);
}
28.當(dāng)循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進行人隊運算。這種情況稱為【】。
29.以下程序中,函數(shù)fun的功能是計算x2-2x+6,主函數(shù)中將調(diào)用fun函數(shù)計算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
請?zhí)羁铡?/p>
#include"math.h"
doublefun(doublex){return(x*x-2*x+6);}
main()
{doublex,y1,y2;
printf("Enterx:");scanf("%lf",&x);
y1=fun(【】);
y2=fun(【】);
printf("y1=%lf,y2=%lf\n",y1,y2);
}
30.使用結(jié)構(gòu)體處理數(shù)據(jù)的場合是【】。
31.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,當(dāng)s<t時返回負(fù)值。請?zhí)羁铡?/p>
my_cmp(char*s,char*t)
{while(*s==*t)
{if(*s=='\0')return0;
++s;++t;
}return【】;
}
32.下列程序段的輸出結(jié)果是______。
intn='c':
switch(n++)
{default:printf("error");break;
case'a':printf("good");break;
case'c':printf("moming");
case'd':printf("class");
}
33.若有如下程序:
sub(int*y)
{while(--(*y));
printf("%d",(*y)--);}
main()
{intx=10;
sub(&x);
}
則程序運行后的輸出結(jié)果是【】。
34.實體之間的聯(lián)系可以歸結(jié)為一對一的聯(lián)系,一對多的聯(lián)系與多對多的聯(lián)系。如果一個學(xué)校有許多教師,而一個教師只歸屬于一個學(xué)校,則實體集學(xué)校與實體集教師之間的聯(lián)系屬于【】的聯(lián)系。
35.以下程序的功能是調(diào)用函數(shù)fun計算:m=1-2+3-4+…+9-10,并輸出結(jié)果。請?zhí)羁铡?/p>
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
{m+=i*f;
f=【】;
}
returnm;
}
main()
{printf("m=%d\n",【】)};
36.若a的值為1,則表達(dá)式!a‖++a的值是______。
37.若要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
38.以下程序運行后的輸出結(jié)果是【】。
fun(inta)
{intb=0;staticintc=3;
b++;c++;
return(a+b+c);
}
main()
{inti,a=5;
for(i=0;i<3;i++)printf("%d%d",i,fun(a));
prind("\n");
}
39.以下程序調(diào)用函數(shù)swap將指針s和t所指單元(a和B)中的內(nèi)容交換,請?zhí)羁?。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;*tt=te;}
40.下列程序的輸出結(jié)果是______。
#defineLEN5
inta[LEN],k;
main()
{fun1();
fun2();
}
fun1()
{for(k=0;k<LEN;k++)
a[k]=k;
}
fun2()
{intk;
for(k=0;k<LEN;k++)
printf("%d",*(a+k));
}
三、1.選擇題(20題)41.有以下程序:
#include<stdlib.h>
structNODE{
intnum;
structNODE*next;
}
main()
{structNODE*p,*q,*r;
intsum=0;
p=(structNODE*)malloc(sizeof(structNODE));
q=(StructNODE*)malloc(sizeof(structNODE));
r=(StructNODE*)malloc(sizeof(structNODE));
p->num=1;q->num=2;r->num=3;
p->next=q;q->next=r;r->next=NULL;
sum+=q->next->num;sum+=p->num;
printf("%d\n",sum);
}
執(zhí)行后的輸出結(jié)果是()。
A.3B.4C.5D.6
42.若以“a+”方式打開一個已存在的文件,則下列敘述正確的是()。
A.文件打開時,原有文件內(nèi)容不被刪除,位置指針移到文件末尾,可以進行添加或讀操作
B.文件打開時,原有文件內(nèi)容不被刪除,只能進行讀操作
C.文件打開時,原有文件內(nèi)容被刪除,只能進行寫操作
D.以上三種說法都不正確
43.閱讀以下程序及對程序功能的描述,其中正確的描述是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf("Entertheinfilename:\n");scanf("%s",infile);printf("Entertheoutfilename:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("cannotopeninfile\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("cannotopenoutfile\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}
A.程序完成將磁盤文件的信息在屏幕上顯示的功能
B.程序完成將兩個磁盤文件合二為一的功能
C.程序完成將一個磁盤文件復(fù)制到另一個磁盤文件中
D.程序完成將兩個磁盤文件合并并在屏幕上輸出
44.下面關(guān)于完全二叉樹的敘述中,錯誤的是______。A.A.除了最后一層外,每一層上的結(jié)點數(shù)均達(dá)到最大值
B.可能缺少若干個左右葉子結(jié)點
C.完全二叉樹一般不是滿二叉樹
D.具有結(jié)點的完全二叉樹的深度為[log2n]+1
45.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){printf("%d\n",NULL);}
A.不確定的值(因變量無定義)B.0C.-1D.1
46.設(shè)x為int型變量,執(zhí)行以下語句,x=10;x+=x-=x-x;x的值為______。
A.10B.20C.30D.40
47.以下程序的輸出結(jié)果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20
48.以下程序輸出的結(jié)果是#include<stdio.h>main(){inti=010,j=10;printf("%d,%d\n",++i,j--);}
A.11,10B.9,10C.010,9D.10,9
49.當(dāng)執(zhí)行以下語句后,函數(shù)strlen(str)返回的值是()staticcharstr[10]={”Change"};
A.10B.7C.6D.11
50.變量a已被定義為整型,下列表達(dá)式有錯的是
A.a='A'+20B.a-='a'C.a=c+dD.a='c'+'d'
51.數(shù)據(jù)庫系統(tǒng)的核心是()A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.軟件工具D.數(shù)據(jù)庫
52.若變量已正確定義并賦值,以下符合C++語言語法的表達(dá)式是()。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
53.設(shè)有數(shù)組定義:chararray[]="China";則數(shù)組array所占的空間為()
A.4個字節(jié)B.5個字節(jié)C.6個字節(jié)D.7個字節(jié)
54.有以下函數(shù)定義:voidfun(intn,doublex){......}若以下選項中的變量都已正確定義并賦值,則對函數(shù)fun正確調(diào)用語句是______。
A.fun(inty,doublem);
B.k=fun(10,12.5);
C.fun(x,n);
D.voidfun(n,x);
55.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",strl);}程序運行后的輸出結(jié)果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
56.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致,
B.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題
C.數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫
D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持
57.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是#include"stdio.h"main(){charfun(char,int);chara='A';intb=13;a=fun(a,b);putchar(a);}charfun(chara,intb){chark;k=a+b;returnk;}
A.AB.MC.ND.L
58.算法的時間復(fù)雜度是指______。
A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數(shù)D.算法程序中的指令條數(shù)
59.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)
A.getc()B.gets()C.getehar()D.scanf()
60.有以下程序intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx){returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);pfintf(“%d\n”,i);}程序運行后的輸出結(jié)果是
A.-4B.1C.4D.8
四、選擇題(20題)61.
62.
63.以下敘述中正確的是()。
A.在C語言中,預(yù)處理命令行都以“#”開頭
B.預(yù)處理命令行必須位于c源程序的起始位置
C.#include<stdi0.h>必須放在C程序的開頭
D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能
64.設(shè)計軟件結(jié)構(gòu)是軟件生命周期的()。
A.軟件定義期B.軟件開發(fā)期C.軟件維護期D.以上3個都不是
65.
66.在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是()。
A.程序內(nèi)部邏輯B.程序外部功能C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖
67.下列字符串是標(biāo)識符的是()。
A.aaB.a-classC.intD.LINE1
68.
69.
70.
有以下程序:
#include<stdio.h>
main
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break:
else
i--;
}
i+=11:
a+=i:
}
printf("%d\n",a);
}
程序的輸出結(jié)果是()。
A.62B.63C.33D.32
71.有以下程序:
intfun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;
}
main
{printf("%d\n",fun(7));}
執(zhí)行后的結(jié)果是()。A.A.7B.3C.2D.0
72.
73.下列程序執(zhí)行后的輸出結(jié)果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}
A.5B.6C.7D.8
74.以下敘述中錯誤的是()。
A.c語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令
B.c程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件
C.用c語言編寫的程序稱為源程序,它以ASCIl代碼形式存放在一個文本文件中
D.c語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序
75.若有以下定義:floatx;inta,b,c=2;,則正確的switch語句是
76.下面程序段的運行結(jié)果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));
A.8B.12C.4D.7
77.算法分析的目的是()。
A.找出數(shù)據(jù)結(jié)構(gòu)的合理性B.找出算法中輸入和輸出之間的關(guān)系C.分析算法的易懂性和可靠性D.分析算法的效率以求改進
78.當(dāng)把以下四個表達(dá)式用做if語句的控制表達(dá)式時,有一個選項與其他三個選項含義不同,這個選項是()。
A.k%2B.k%2==1C.(K%2)!=0D.!k%2==1
79.
80.下面不屬于軟件設(shè)計原則的是()。
A.抽象B.模塊化C.自底向上D.信息隱蔽
五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc的功能是:判斷字符ch是,與str所指字符串中的某個字符相同;若相同,則什么也不做,若不同,則將其插在串的最后。請修改程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
//****found****
voidproc(charstr,charch)
{
while(*str&&*str!=ch)str++;
//****found****
if(*str==ch)
{str[0]=ch;
//****found****
str[1]=0:
}
}
voidmain
{
charstr[81],ch;
system("CLS");
printf("\nPleaseenterastring:");
gets(str);
printf("\nPleaseenterthecharacterto
search:");
ch=getchar;
proc(str,ch);
printf("\nTheresultis%s\n",str);
}
六、程序設(shè)計題(1題)82.編寫函數(shù)fun,其功能是:根據(jù)以下公式求π的值(要求精度0.0005,即某項小于0.0005時停止迭代)。
程序運行后,若輸入精度
0.0005,則程序應(yīng)輸出為3.14…
注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
參考答案
1.Af函數(shù)功能使第二個指針指向的元素增1,第一個指針指向的元素不變,所以答案選擇A)。
2.B
3.D
4.A
5.D
6.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨立;聯(lián)合所占用的內(nèi)存空間為最長的成員所占用的空間。
7.B數(shù)據(jù)流圖是系統(tǒng)邏輯模型的圖形表示,從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變化過程,它直接支持系統(tǒng)的功能建模。本題答案為B選項。
8.A
9.A本題主要考查按位求反運算和C語言正負(fù)數(shù)的表示,“O”代表正數(shù),“1”代表負(fù)數(shù);x=7的二進制為00111,第一個0代表正數(shù),~x為11000,第一個l代表負(fù)數(shù),值為8。
10.D
11.B
12.B
13.D在程序中指針變量P初始指向a[3],執(zhí)行P減1后,P指向a[2],語句y=*P的作用是把a[2]的值賦給變量y,所以輸出為y=3。
14.B解析:本題主要考查的是函數(shù)的實參和形參之間的傳遞關(guān)系,C語言中實參變量和形參變量之間的數(shù)據(jù)傳遞是單向的“值傳遞”方式。指針變量作函數(shù)參數(shù)也要遵循這一規(guī)則。調(diào)用函數(shù)不可能改變實參指針變量的值。所以x和y的地址并沒有改變,即p和q也沒有改變,因此,選項B是正確的。
15.C
16.A函數(shù)“strlen(char*s)”;計算字符串s的長度,不包括‘\\0’在內(nèi)。p指向數(shù)組的第2個元素,因此“Strien(P)=10”,并輸出“one*Dream!”。故本題答案為A選項。
17.B
18.D程序首先以讀和寫二進制文件的方式打開文件d.dat;然后通過for循環(huán),調(diào)用fwrite函數(shù)將數(shù)組a中的各個元素寫入d.dat中;接下來調(diào)用rewind函數(shù),將文件指針fp重定位到文件的開始位置;再調(diào)用fread函數(shù)將文件的前3個整數(shù)1,2,3讀入a[3]開始的位置,所以此時數(shù)組a中的元素值分別為:1,2,3,1,2,3。故本題答案為D選項。
19.D解析:在關(guān)系數(shù)據(jù)表中,行稱為元組,對應(yīng)存儲文件中的記錄,列稱為屬性,對應(yīng)存儲文件中的字段,所以本題答案為D。
20.D在表達(dá)式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉(zhuǎn)換,所以最后的結(jié)果一定是double型。
21.2525解析:#NAME?
22.
23.c1!==''&&c2==''
24.00解析:已知a=10,b=20,所以邏輯表達(dá)式a<b的值為true,即為1,在這個表達(dá)式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應(yīng)當(dāng)為false,即為0。
25.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個加工對應(yīng)一個處理模塊。
26.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組st1l和str2,并且給str2賦初值“abcdefgh”,接著調(diào)用函數(shù)sstrcpy(str1,str2),將字符串str2的值賦給str1.在函數(shù)sstrcpy(*s,*t)中,用了一個while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后指針s和指針t都下移到下一個元素。所以空格處應(yīng)該填*t++或*(t++)。
27.HelloHello解析:字符串中,數(shù)值0或符號'/0'表示字符串的結(jié)束。本題中,b[5]被賦了0值,表明字符串b的第六個字符就是結(jié)束標(biāo)志。因此,只輸出前五個字符,即Hello。
28.上溢上溢解析:入隊運算是指在循環(huán)隊列的隊尾加入一個新元素。這個運算有兩個基本操作:首先將隊尾指針進一(即rear=rear+1),并當(dāng)rear=m+1時,置rear=1;然后將新元素插入隊尾指針指向的位置。當(dāng)循環(huán)隊列非空(s=1)且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進行人隊運算,這種情況稱為“上溢”。
29.x+8sin(x)x+8,sin(x)解析:考查考生對函數(shù)調(diào)用相關(guān)知識的了解。用x+8代替函數(shù)fun(doublex)中形式參數(shù)x;用sin(x)代替函數(shù)fun(doublex)中形式參數(shù)x。
30.把不同類型的數(shù)據(jù)作為整體處理
31.*s-*t*s-*t解析:兩字符串大小比較必須從它們的首字符開始,在對應(yīng)字符相等情況下循環(huán),直至不相等結(jié)束。相等時,若字符串已到了字符串的結(jié)束標(biāo)記符,則兩字符串相同,函數(shù)返回0值;如還有后繼字符,則準(zhǔn)備比較下一對字符。對應(yīng)字符不相同,循環(huán)結(jié)束。循環(huán)結(jié)束時,就以兩個當(dāng)前字符的差返回。所以在空框處應(yīng)填入*s-*t,保證在e>t時返回正值,當(dāng)s<t時返回負(fù)值。
32.morningclassmorningclass解析:本題考查了兩個知識點:①“++、--”運算后綴形式是先使用變量原來的值,使用完后再使其增1或減1;②在switch語句中,當(dāng)n=\'c\'時,執(zhí)行“case\'c\':”,輸出morning;因為此句中沒有break語句,因此接著執(zhí)行'case\'d\':”,輸出class,最終輸出結(jié)果為morningclass。
33.00解析:while循環(huán)的條件為即當(dāng)*y非零時執(zhí)行循環(huán),-(*y)先對*y的值減1,再使用*y的值,不再執(zhí)行while循環(huán)時最后*y的值為0,輸出函數(shù)中的(*y)--,是先使用*y的值再對*y減1,就是先輸出0。
34.一對多一對多解析:實體之間的聯(lián)系可歸結(jié)為一對一、一對多與多對多的聯(lián)系。如一個學(xué)校有許多教師,一個教師只歸屬于一個學(xué)校,則實體集學(xué)校與實體集教師之間的聯(lián)系屬于一對多的聯(lián)系。
35.=-ffun(10)=-f\r\nfun(10)解析:本題要求調(diào)用fun()函數(shù)計算m的值,故在主函數(shù)中的空白處應(yīng)該填調(diào)用fun()函數(shù)的語句。fun()函數(shù)有一個形參n,為每次參加計算的值個數(shù),故在主函數(shù)中的空白處應(yīng)該填fun(10),在fun()函數(shù)中用到了一個for循環(huán),共循環(huán)n次,當(dāng)循環(huán)第i次的時候,m的值等于m=1-2+…+[(-1)的i-1次方]*i,所以在fun()函數(shù)的空白處應(yīng)該填使f改變符號的語句,故應(yīng)填-f或其他等價形式。
36.11解析:邏輯運算中,非1即0,非0即1,!a=0,++a為邏輯1,所以0和1相或結(jié)果為1。
37.(double*)(double*)解析:一般用malloc函數(shù)為變量分配存儲單元時,要在前面用強制類型轉(zhuǎn)換符說明該存儲單元中數(shù)據(jù)的類型。本題要為指向雙精度浮點型數(shù)據(jù)的指針變量p分配存儲單元,因此用(double*)說明。
38.1011121210111212解析:需要注意的是,函數(shù)fun()中的變量c為靜態(tài)局部變量,在靜態(tài)存儲區(qū)內(nèi)分配了存儲單元,在程序整個運行期間不會釋放,所以調(diào)用函數(shù)時,只賦初值一次,以后再調(diào)用函數(shù)時,c中的值為上次調(diào)用函數(shù)時的值。執(zhí)行for循環(huán),當(dāng)i=0時,fun(5)=5+1+4=10,此時c=4;當(dāng)i=1時,fun(5)=5+1+5=11,此時c=5;當(dāng)i=2時,fun(5)=5+1+6=12;此時c=6:當(dāng)i=3時,退出for循環(huán),并輸出回車換行符。
39.swap(st);swap(s,t);解析:本題要在主函數(shù)中調(diào)用swap函數(shù)交換a、b的值,實現(xiàn)數(shù)據(jù)交換需要進行地址傳遞,所以函數(shù)的形參都應(yīng)該是需要交換的數(shù)據(jù)的地址,程序中通過“s=&a;t=&b;”將指針變量s和t指向變量a、b的地址,因此,引用時直接引用指針變量s和t即可。
40.01234。01234。解析:函數(shù)fun1給數(shù)組a的每個元素賦值,fun2則輸出結(jié)果。
41.B解析:本題中定義了一個結(jié)點結(jié)構(gòu)stmctNODE,在主函數(shù)中定義了3個結(jié)點指針p、q和r,接著通過malloc函數(shù)分配了3個結(jié)點并讓p、q和r分別指向他們,再接著給p、q和r所指向的結(jié)點的num域賦值為1、2、3,然后讓結(jié)點p指向q,讓q指向r,r指向NULL。顯然q->next->num的值為指針r所指向結(jié)點的hum域的值為3,p->hum的值為指針p所指向結(jié)點的num域的值為1,故最后輸出s的值為3+1=4。所以,4個選項中選項B符合題意。
42.A解析:本題考查文件使用方式標(biāo)識符,以“a+”方式打開一個已存在的文件,則表示保留文件中原有的數(shù)據(jù),文件的位置指針在文件末尾,此時,可以進行追加或讀操作。
43.C解析:本題中,最主要的是掌握幾個有關(guān)文件的函數(shù)的應(yīng)用。
函數(shù)名:fopen功能:打開一個文件調(diào)用方式FILE*fp;fp=fopen(文件名,使用文件方式);
函數(shù)名:feof功能:檢查文件是否結(jié)束調(diào)用方式:feof(FILE*fp);
函數(shù)名:fputc功能:把一個字符寫到磁盤文件上去調(diào)用方式:fputc(ch,fp)(ch是要輸出的字符,fp是從指定的文件讀入一個字符,該文件必須是以讀或讀寫方式打開的調(diào)用方式:ch=fgetc(fp)(ch是字符變量,fp是文件指針變量);
函數(shù)名:fclose功能:關(guān)閉一個文件調(diào)用方式:fclose(文件指針)。
44.B解析:這里考察完全二叉樹與滿二叉樹的定義及二叉樹的性質(zhì)。滿二叉樹指除最后一層外每一層上所有結(jié)點都有兩個子結(jié)點的二叉樹。完全二叉樹指除最后一層外,每一層上的結(jié)點數(shù)均達(dá)到最大值,在最后一層上只缺少右邊的若干子結(jié)點(葉子結(jié)點)的二叉樹。因此選項A是正確的,而選項B是錯誤的。由定義可知,滿二叉樹肯定是完全二叉樹,而完全二叉樹一般不是滿二叉樹,因此選項C是正確的敘述。選項D即二叉樹性質(zhì)(5),也是正確的。
45.B解析:在C語言中NULL的ASCII碼值為0,而輸出函數(shù)要求以整形格式輸出,故最后的輸出數(shù)0。所以,選項B正確。
46.B解析:本題x=10,表達(dá)式“x+=x-=x-x;”的求解步驟如下:先進行x-=x-x的運算,相當(dāng)于)x=x-(x-x)=x=10;再進行x+=x的運算,即x=x+x=20。
47.B
48.B解析:本題考核的知識點是自增運算符和自減運算符的使用.程序中i的值用八進制表示(十進制為8),++i是在變量使用前自身先加1,而j--是在變量使用后自身減1。所以,4個選項中B符合題意。
49.C
50.C
51.B數(shù)據(jù)庫管理系統(tǒng)DBMS是數(shù)據(jù)庫系統(tǒng)的核心。DBMS是負(fù)責(zé)數(shù)據(jù)庫的建立、使用和維護的軟件。DBMS建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過DBMS。另外,DBMS還承擔(dān)著數(shù)據(jù)庫的安全保護工作,按照DBA所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。
52.B解析:a=b=c+2實際上相當(dāng)于a=(b=c+2),進而可分解為兩個表達(dá)式:b=c+2和a=b。注意:選項A)中包含一個不合法的運算符“:=”;選項C)應(yīng)改為(int)18.5%3;選項D)可理解為兩個表達(dá)式:a+7=c+b和a=a+7,其中第一個是錯的,因為C++語言規(guī)定賦值號的左邊只能是單個變量,不能是表達(dá)式或常量等。注意:C++語言賦值語句的運用,
53.C解析:在給數(shù)組賦值時,可以用一個字符串作為初值,這種方法直觀、方便,而且符合人們的習(xí)慣。數(shù)組array的長度不是5,而是6,這點必須要注意。因為字符串常量的最后由系統(tǒng)加上一個'\\0',因此,上面的初始化與下面的等價:
Chararray[]={'C','h','i','n','a','\\0'};
54.C解析:函數(shù)調(diào)用的一般形式為:函數(shù)名(實參表列);,實參與形參的個數(shù)應(yīng)相等,類型應(yīng)一致,在調(diào)用函數(shù)時,不要指定其返回類型,對于返回類型為void的函數(shù),不能作為賦值表達(dá)式的組成部分,所以選C。
55.B解析:在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲,它的存儲形式就與整數(shù)的存儲形式相類似。C語言使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。也可以對字符數(shù)據(jù)進行算術(shù)運算,此時相當(dāng)于對它們的ASCII碼進行算術(shù)運算,在本題中,s++相當(dāng)于s=s+1,即讓s指向數(shù)組中的下一個元素。
56.A解析:本題考查數(shù)據(jù)庫系統(tǒng)的基本概念和知識。數(shù)據(jù)的邏輯結(jié)構(gòu),是數(shù)據(jù)間關(guān)系的描述,它只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,而不管其在計算機中的存儲方式。數(shù)據(jù)的存儲結(jié)構(gòu),又叫物理結(jié)構(gòu),是邏輯結(jié)構(gòu)在計算機存儲器里的實現(xiàn)。這兩者之間沒有必然的聯(lián)系。因此,選項A的說法是錯誤的。
數(shù)據(jù)庫可以看成是長期存儲在計算機內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。因此,數(shù)據(jù)庫具有為各種用戶所共享的特點。不同的用戶可以使用同一個數(shù)據(jù)庫,可以取出它們所需要的子集,而且容許子集任意重疊。數(shù)據(jù)庫的根本目標(biāo)是要解決數(shù)據(jù)的共享問題。因此,選項B的說法是正確的。
數(shù)據(jù)庫設(shè)計是在數(shù)據(jù)庫管理系統(tǒng)的支持下,按照應(yīng)用的要求,設(shè)計一個結(jié)構(gòu)合理、使用方便、效率較高的數(shù)據(jù)庫及其應(yīng)用系統(tǒng)。數(shù)據(jù)庫設(shè)計包含兩方面的內(nèi)容:一是結(jié)構(gòu)設(shè)計,也就是設(shè)計數(shù)據(jù)庫框架或數(shù)據(jù)庫結(jié)構(gòu);二是行為設(shè)計,即設(shè)計基于數(shù)據(jù)庫的各類應(yīng)用程序、事務(wù)等。因此,選項C的說法是錯誤的。
數(shù)據(jù)庫系統(tǒng)除了數(shù)據(jù)庫管理軟件之外,還必須有其他相關(guān)軟件的支持。這些軟件包括操作系統(tǒng)、編譯系統(tǒng)、應(yīng)用軟件開發(fā)工具等。對于大型的多用戶數(shù)據(jù)庫系統(tǒng)和網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng),還需要多用戶系統(tǒng)軟件和網(wǎng)絡(luò)系統(tǒng)軟件的支持。因此,選項D的說法是正確的。因此,本題的正確答案是選項A。
57.C解析:函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實現(xiàn)的是在字符,A,的ASCII碼值上加上一個常數(shù),使之變成另一個ASCII碼值,從而輸出字符。
58.C解析:算法的時間復(fù)雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關(guān)。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據(jù)一個算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。所以,本題正確答案為C。
59.B解析:scanf()語句用“空格”區(qū)別不同的字符串;getc()與getchar()語句不能用于字符串的讀入。
60.C解析:函數(shù)f()有3個形式參數(shù)f1、f2和x,其中f1、f2是指向函數(shù)的指針變量。在main()函數(shù)中執(zhí)行了函數(shù)調(diào)用“f(fa,fb,2)”,從而使f()的形式參數(shù)f1指向了fa,形式參數(shù)f2指向了fb,把實參2傳給了形參變量x。函數(shù)f()中的return語句相當(dāng)于“fb(2)-fa(2)”(fb(2)的返回值為2*2*2=8,fa(2)返回值為2*2=4)即(8-4),值為4。函數(shù)f()執(zhí)行后把返回值4賦給了i,輸出i的值是4。
61.A
62.D
63.A預(yù)處理命令是以“#”號開頭的命令,它們不是C語言的可執(zhí)行命令,這些命令應(yīng)該在函數(shù)之外書寫,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、c錯誤。C語言的預(yù)處理能夠?qū)崿F(xiàn)宏定義和條件編譯等功能,所以D錯誤。
64.B本題是對軟件設(shè)計結(jié)構(gòu)的考查。設(shè)計軟件結(jié)構(gòu)是軟件概要設(shè)計階段進行的,而概要設(shè)計屬于軟件開發(fā)期。
65.B
66.B黑盒測試法指的是根據(jù)程序的外部功能,把程序本身看成一個黑盒子,設(shè)計測試用例來驗證程序外部功能的正確性。
67.A
\nC語言規(guī)定,標(biāo)識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。int就是表達(dá)整型變量類型的標(biāo)識符,它不能用做變量名和函數(shù)名。
\n
68.D
69.C
70.D
\n本題考查while循環(huán)。當(dāng)i<20時,進入while循環(huán)體,循環(huán)體內(nèi)的for循環(huán)實現(xiàn)的功能是i%10==0,也就是說當(dāng)i值為0或者l0的倍數(shù)的時候,跳出循環(huán),執(zhí)行i+=11;a+=i;,若i值不是10的倍數(shù),則一直執(zhí)行for循環(huán)i--。①當(dāng)i=0時,執(zhí)行i+=11;a+=i;,i=11,a=11;②判斷i=10時,跳出for循環(huán),執(zhí)行i+=11;a+=i;,i=21,a=32;③判斷i=21>20,不符合題意,結(jié)束循環(huán)。
\n
71.C調(diào)用函數(shù)fun(7)時,由于x的值為7,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(5);
調(diào)用函數(shù)fun(5)時,由于x的值為5,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(3);
調(diào)用函數(shù)fun(3)時,由于x的值為3,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(1);
調(diào)用函數(shù)fun(1)時,由于X的值為1,執(zhí)行語句“return(3);”,函數(shù)的返回值為3。
因此函數(shù)調(diào)用fun(7)等價于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函數(shù)fun(7)的返回值為2。答案為C。
72.D
73.D解析:本題中的宏調(diào)用MA(1+a+b)展開后的結(jié)果是1+a+b*(1+a+b-1)=1+1+2*(1+1+2-1)=2+2*3=8。所以輸出的結(jié)果是8,選項D正確。
74.Ac語言中的非執(zhí)行語句不會被編譯,不會生成二進制的機器指令,因此A)選項錯誤。由C語言構(gòu)成的指令序列稱為C源程序,c源程序經(jīng)過c語言編譯程序編譯之后生成一個后綴為obj的二進制文件(稱為目標(biāo)文件);最后要由“連接程序”把此.0bj文件與c語言提供的各種庫函數(shù)連接起來生成一個后綴為.exe的可執(zhí)行文件。根據(jù)上述分析可知,A)選項敘述錯誤。
75.C本題考查switch語句的使用。
switch語句是多分支選擇語句,有些教程上介紹說switch語句后面括弧里的表達(dá)式可以是任何類型,實際上,由于float型的數(shù)據(jù)在內(nèi)存中的存儲會有誤差,絕大多數(shù)編譯器是不允許switch語句后面是float型的數(shù)據(jù)的。case后是常量表達(dá)式,只能是一個整數(shù)或整型常量表達(dá)式,也可以是一個字符常量或枚舉型常量,但不能是實型數(shù)據(jù)。
A選項中的case后面用的是實型常量,case語句后面不能跟實型常量。
B選項switch語句后面的語句是int(x),該表達(dá)式格式錯誤,強制轉(zhuǎn)換為整型的語句應(yīng)該為(int)x。
C選項是正確的,switch后面的表達(dá)式和case后面的整型常量表達(dá)式都是規(guī)范的。
D選項的case語句后用到了變量,case后面是不允許用變量表達(dá)式的。
76.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個字符串,然后將指針變量p加3,即使其指向字符串的第四個元素。然后執(zhí)行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個十進制數(shù)的整型數(shù)值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數(shù)和strcpy函數(shù)的作用。
strcpy的調(diào)用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復(fù)制到目的地址中,這種復(fù)制將覆蓋原來的字符串。strcat函數(shù)的功能是將源地址的字符串復(fù)制到目的地址字符串的后面。
strlen的調(diào)用格式是:strlen(字符串地址),其功能是返回字符串中字符的個數(shù)。
那么程序中執(zhí)行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個數(shù)為4,那么執(zhí)行strlen后,程序最終輸出的結(jié)果是4。因此本題正確的答案是C。
77.D解析:算法分析是指對一個算法的運行時間和占用空間做定量的分析,一般計算出相應(yīng)的數(shù)量級,常用時間復(fù)雜度和空間復(fù)雜度表示。分析算法的目的就是要降低算法的時間復(fù)雜度和空間復(fù)雜度;提高算法的執(zhí)行效。率。
78.D本題主要考查if語句的條件表達(dá)式。在本題的四個選項中給出了四個不同的條件表達(dá)式,題目要求找出其中一個意思與其他三個不同的表達(dá)式。
選項A的表達(dá)式k%2的功能是對變量k進行取余運算,如果運算結(jié)果為假,表示變量k能被2整除,如果運算結(jié)果為真,表示k不能被2整除。
選項B的表達(dá)式k%2==1的功能是對變量k進行取余運算,并判斷結(jié)果等于1,如果運算結(jié)果為假,表示k%2的運算結(jié)果為0,即k能被2整除;如果運算結(jié)果為真,表示k%2的運算結(jié)果為1,即k不能被2整除。
選項C的表達(dá)式(k%2)!=0的功能是對變量k進行取余運算,并判斷結(jié)果不等于0,如果運算結(jié)果為假,表示k%2的運算結(jié)果0,即k能被2整除;如果運算結(jié)果為真,表示k%2的運算結(jié)果為1,即k不能被2整除。
選項D的表達(dá)式!k%2==1等價于(!k)%2==1,其功能是先對變量k進行邏輯非運算,然后將運算結(jié)果對2進行取余運算,再判斷其結(jié)果是否等于1。這與前面三個選項的意思完全不同,因此本題的正確答案選D。
79.B
80.C解析:軟件設(shè)計遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念。①抽象是一種思維工具,就是把事物本質(zhì)的共同特性抽出來而不考慮其他細(xì)節(jié)。②模塊是指可以單獨命名且可編址的元素。如高級語言中的過程、函數(shù)、子程序等。③信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。④模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。因此,本題的正確答案是C。
81.\n\t(1)錯誤:voidproc(charstr,charch)
\n正確:voidproc(char*str,charch)
\n(2)錯誤:if(*str==ch)
\n正確:if(*str==\0)
\n(3)錯誤:str[1]=0;
\n正確:str[1]=\0;
\n【解析】形參的個數(shù)和類型由調(diào)用該函數(shù)的實參的個數(shù)和類型決定,由main函數(shù)中調(diào)用的函數(shù)proc可知,“void
\nproe(charstr,charch)”應(yīng)改為“voidproc(char*str,char
\nch)”;將字符串中的每一個字符與給定字符相比較,'-3字符串結(jié)束或者字符串中有與給定字符相同的字符時結(jié)束。如果到字符串的最后一個字符仍沒找到與給定字符相同的字符,將給定字符插在字符串的最后,因此,“if(*str==ch)”應(yīng)改為“if(*str==\0)”;最后還要為字符串添加一個結(jié)束符,因此“str[1]=0;”應(yīng)改為“str[1]=\0”。\n
82.
【考點分析】
本題考查:迭代法求給定多項式的值。迭代算法:讓計算機對一組指令(或一定步驟)進行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值。需要注意變量的數(shù)據(jù)類型以及賦初值操作。
【解題思路】
首先應(yīng)該定義double類型變量,并且賦初值,用來存放多項式的某一項和最后的總和。從第2項開始以后的每一項都是其前面一項乘以n/(2*n+1),程序中用sl來表示每一項,s表示求和后的結(jié)果。需注意sl和S的初值都為1.0,因為循環(huán)變量從第二項開始累加。2022年山東省青島市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有以下程序:
程序運行后的輸出結(jié)果是().
A.1,3
B.2,3
C.1,4
D.1,2
2.對n個元素的有序表A[1..n]進行順序查找,其成功查找的平均查找長度(即在查找表中找到指定關(guān)鍵碼的元素時,所進行比較的表中元素個數(shù)的期望值)為()
A.nB.(n+1)/2C.log2nD.n^2
3.
4.
5.
6.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}
A.6,2B.6,4C.8,4D.8,6
7.數(shù)據(jù)流圖(DFD)的作用是()。
A.描述軟件系統(tǒng)的控制流B.支持軟件系統(tǒng)的功能建模C.支持軟件系統(tǒng)的面向?qū)ο蠓治鯠.描述軟件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)
8.對于C語言的函數(shù),下列敘述中正確的是()。
A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套
B.函數(shù)的定義可以嵌套,但函數(shù)調(diào)用不能嵌套
C.函數(shù)的定義和調(diào)用都不能嵌套
D.函數(shù)的定義和調(diào)用都可以嵌套
9.設(shè)intx=7,則~x的值是()。
A.-8B.7C.-1D.1
10.
11.將發(fā)送端數(shù)字脈沖信號轉(zhuǎn)換成模擬信號的過程稱為
A.鏈路傳輸B.調(diào)制C.解調(diào)D.數(shù)字信道傳輸
12.下面程序的輸出是()。A.17B.18C.23D.24
13.有以下程序:
程序的運行結(jié)果是()。
A.y=0B.y=1C.y=2D.y=3
14.有以下程序#include<stdio.h>voidfun(int*a,int*B){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*p,*q);}程序運行后的輸出結(jié)果是______。A.3,5,5,3B.3,5,3,5C.5,3,3,5D.5,3,5,3
15.甲乙兩個聰明人上街,撿到一張10塊錢的購物卡,兩人就想出一個辦法來分配這張卡。兩個分別將自己出的價格寫在紙上,然后看誰出的價高就給誰,并且那個出價高的人要把出的錢給對方?,F(xiàn)在甲有6塊錢,乙有8塊錢,甲乙雙方都知道對方當(dāng)前有多少錢并且都希望自己收益高于對方。問最后誰獲得的錢多()
A.甲多B.乙多C.一樣多D.有可能出現(xiàn)有人賠錢的情況
16.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序運行后的輸出結(jié)果是()。
A.10,One*Dream!
B.9,One*Dream!
C.9,One*World
D.10,One*World
17.若一棵二叉樹具有10個出度為2的結(jié)點,則在該二叉樹中,出度為0的結(jié)點個數(shù)是()
A.9B.11C.12D.不確定
18.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen(“d.dat”,“w+b”);for(i=0;i<6;i++)fwrite(&a[i],sizeof(int),1,fp);rewind(fp);fread(&a[3],sizeof(int),3,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,a[i]);}程序運行后的輸出結(jié)果是()。
A.4,5,6,4,5,6,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.1,2,3,1,2,3,
19.在學(xué)生管理的關(guān)系數(shù)據(jù)庫中,存取一個學(xué)生信息的數(shù)據(jù)單位是()。
A.文件B.數(shù)據(jù)庫C.字段D.記錄
20.若有以下定義:chara;intb;floatc;doubled;則表達(dá)式a*b+b-c值的類型為()。A.floatB.intC.charD.double
二、2.填空題(20題)21.定義inta=5,b;,則執(zhí)行表達(dá)式b=++a*--a之后,變量b的值為【】。
22.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且fun函數(shù)為void類型;請寫出fun函數(shù)的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}
23.下面程序的功能是從鍵盤輸入一行字符,統(tǒng)計有多少個單詞,單詞間用空格分隔。補充所缺語句。
#include<stdio.h>
main()
{charss[80],c1,c2='';
inti=0,num=0;
gets(s);
while(s[i]!='\0')
{c1=s[i];
if(i==0)c2='';
elsec2=s[i-1];
if(【】)num++;
i++;
}
printf("Thereare%dwords,\n",num);
}
24.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。
25.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。
26.以下sstrcpy()函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>
voidsstrcpy(char*s,char*t)
{while(*s++=______);}
main()
{charstr1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
27.下列程序段的輸出結(jié)果是【】。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",B);
}
28.當(dāng)循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進行人隊運算。這種情況稱為【】。
29.以下程序中,函數(shù)fun的功能是計算x2-2x+6,主函數(shù)中將調(diào)用fun函數(shù)計算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
請?zhí)羁铡?/p>
#include"math.h"
doublefun(doublex){return(x*x-2*x+6);}
main()
{doublex,y1,y2;
printf("Enterx:");scanf("%lf",&x);
y1=fun(【】);
y2=fun(【】);
printf("y1=%lf,y2=%lf\n",y1,y2);
}
30.使用結(jié)構(gòu)體處理數(shù)據(jù)的場合是【】。
31.函數(shù)my_cmp()的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,否則返回s和t的第一個不同字符的ASCII碼差值,即s>t時返回正值,當(dāng)s<t時返回負(fù)值。請?zhí)羁铡?/p>
my_cmp(char*s,char*t)
{while(*s==*t)
{if(*s=='\0')return0;
++s;++t;
}return【】;
}
32.下列程序段的輸出結(jié)果是______。
intn='c':
switch(n++)
{default:printf("error");break;
case'a':printf("good");break;
case'c':printf("moming");
case'd':printf("class");
}
33.若有如下程序:
sub(int*y)
{while(--(*y));
printf("%d",(*y)--);}
main()
{intx=10;
sub(&x);
}
則程序運行后的輸出結(jié)果是【】。
34.實體之間的聯(lián)系可以歸結(jié)為一對一的聯(lián)系,一對多的聯(lián)系與多對多的聯(lián)系。如果一個學(xué)校有許多教師,而一個教師只歸屬于一個學(xué)校,則實體集學(xué)校與實體集教師之間的聯(lián)系屬于【】的聯(lián)系。
35.以下程序的功能是調(diào)用函數(shù)fun計算:m=1-2+3-4+…+9-10,并輸出結(jié)果。請?zhí)羁铡?/p>
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
{m+=i*f;
f=【】;
}
returnm;
}
main()
{printf("m=%d\n",【】)};
36.若a的值為1,則表達(dá)式!a‖++a的值是______。
37.若要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
38.以下程序運行后的輸出結(jié)果是【】。
fun(inta)
{intb=0;staticintc=3;
b++;c++;
return(a+b+c);
}
main()
{inti,a=5;
for(i=0;i<3;i++)printf("%d%d",i,fun(a));
prind("\n");
}
39.以下程序調(diào)用函數(shù)swap將指針s和t所指單元(a和B)中的內(nèi)容交換,請?zhí)羁?。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;*tt=te;}
40.下列程序的輸出結(jié)果是______。
#defineLEN5
inta[LEN],k;
main()
{fun1();
fun2();
}
fun1()
{for(k=0;k<LEN;k++)
a[k]=k;
}
fun2()
{intk;
for(k=0;k<LEN;k++)
printf("%d",*(a+k));
}
三、1.選擇題(20題)41.有以下程序:
#include<stdlib.h>
structNODE{
intnum;
structNODE*next;
}
main()
{structNODE*p,*q,*r;
intsum=0;
p=(structNODE*)malloc(sizeof(structNODE));
q=(StructNODE*)malloc(sizeof(structNODE));
r=(StructNODE*)malloc(sizeof(structNODE));
p->num=1;q->num=2;r->num=3;
p->next=q;q->next=r;r->next=NULL;
sum+=q->next->num;sum+=p->num;
printf("%d\n",sum);
}
執(zhí)行后的輸出結(jié)果是()。
A.3B.4C.5D.6
42.若以“a+”方式打開一個已存在的文件,則下列敘述正確的是()。
A.文件打開時,原有文件內(nèi)容不被刪除,位置指針移到文件末尾,可以進行添加或讀操作
B.文件打開時,原有文件內(nèi)容不被刪除,只能進行讀操作
C.文件打開時,原有文件內(nèi)容被刪除,只能進行寫操作
D.以上三種說法都不正確
43.閱讀以下程序及對程序功能的描述,其中正確的描述是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf("Entertheinfilename:\n");scanf("%s",infile);printf("Entertheoutfilename:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("cannotopeninfile\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("cannotopenoutfile\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}
A.程序完成將磁盤文件的信息在屏幕上顯示的功能
B.程序完成將兩個磁盤文件合二為一的功能
C.程序完成將一個磁盤文件復(fù)制到另一個磁盤文件中
D.程序完成將兩個磁盤文件合并并在屏幕上輸出
44.下面關(guān)于完全二叉樹的敘述中,錯誤的是______。A.A.除了最后一層外,每一層上的結(jié)點數(shù)均達(dá)到最大值
B.可能缺少若干個左右葉子結(jié)點
C.完全二叉樹一般不是滿二叉樹
D.具有結(jié)點的完全二叉樹的深度為[log2n]+1
45.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){printf("%d\n",NULL);}
A.不確定的值(因變量無定義)B.0C.-1D.1
46.設(shè)x為int型變量,執(zhí)行以下語句,x=10;x+=x-=x-x;x的值為______。
A.10B.20C.30D.40
47.以下程序的輸出結(jié)果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20
48.以下程序輸出的結(jié)果是#include<stdio.h>main(){inti=010,j=10;printf("%d,%d\n",++i,j--);}
A.11,10B.9,10C.010,9D.10,9
49.當(dāng)執(zhí)行以下語句后,函數(shù)strlen(str)返回的值是()staticcharstr[10]={”Change"};
A.10B.7C.6D.11
50.變量a已被定義為整型,下列表達(dá)式有錯的是
A.a='A'+20B.a-='a'C.a=c+dD.a='c'+'d'
51.數(shù)據(jù)庫系統(tǒng)的核心是()A.數(shù)據(jù)模型B.數(shù)據(jù)庫管理系統(tǒng)C.軟件工具D.數(shù)據(jù)庫
52.若變量已正確定義并賦值,以下符合C++語言語法的表達(dá)式是()。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
53.設(shè)有數(shù)組定義:chararray[]="China";則數(shù)組array所占的空間為()
A.4個字節(jié)B.5個字節(jié)C.6個字節(jié)D.7個字節(jié)
54.有以下函數(shù)定義:voidfun(intn,doublex){......}若以下選項中的變量都已正確定義并賦值,則對函數(shù)fun正確調(diào)用語句是______。
A.fun(inty,doublem);
B.k=fun(10,12.5);
C.fun(x,n);
D.voidfun(n,x);
55.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",strl);}程序運行后的輸出結(jié)果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
56.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致,
B.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)的共享問題
C.數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫
D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持
57.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是#include"stdio.h"main(){charfun(char,int);chara='A';intb=13;a=fun(a,b);putchar(a);}charfun(chara,intb){chark;k=a+b;returnk;}
A.AB.MC.ND.L
58.算法的時間復(fù)雜度是指______。
A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運算次數(shù)D.算法程序中的指令條數(shù)
59.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)
A.getc()B.gets()C.getehar()D.scanf()
60.有以下程序intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(),int(*f2)(),intx){returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);pfintf(“%d\n”,i);}程序運行后的輸出結(jié)果是
A.-4B.1C.4D.8
四、選擇題(20題)61.
62.
63.以下敘述中正確的是()。
A.在C語言中,預(yù)處理命令行都以“#”開頭
B.預(yù)處理命令行必須位于c源程序的起始位置
C.#include<stdi0.h>必須放在C程序的開頭
D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能
64.設(shè)計軟件結(jié)構(gòu)是軟件生命周期的()。
A.軟件定義期B.軟件開發(fā)期C.軟件維護期D.以上3個都不是
65.
66.在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是()。
A.程序內(nèi)部邏輯B
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年北師大版九年級生物上冊階段測試試卷
- 2025年人教版(2024)九年級地理下冊月考試卷含答案
- 2025年教科新版高一地理上冊階段測試試卷含答案
- 2025年粵人版九年級地理下冊階段測試試卷含答案
- 2025年中圖版八年級歷史上冊月考試卷
- 2025年蘇人新版九年級歷史下冊月考試卷
- 2025年人教版(2024)九年級歷史下冊階段測試試卷
- 2025年粵教新版選擇性必修3歷史下冊階段測試試卷含答案
- 2025年人教A新版九年級歷史上冊階段測試試卷含答案
- 2025版牛舍智能化溫控系統(tǒng)安裝工程承包合同4篇
- 2025年上半年江蘇連云港灌云縣招聘“鄉(xiāng)村振興專干”16人易考易錯模擬試題(共500題)試卷后附參考答案
- DB3301T 0382-2022 公共資源交易開評標(biāo)數(shù)字見證服務(wù)規(guī)范
- 人教版2024-2025學(xué)年八年級上學(xué)期數(shù)學(xué)期末壓軸題練習(xí)
- 江蘇省無錫市2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)試題(原卷版)
- 俄語版:中國文化概論之中國的傳統(tǒng)節(jié)日
- 2022年湖南省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 婦科一病一品護理匯報
- 哪吒之魔童降世
- 2022年上海市各區(qū)中考一模語文試卷及答案
- 2024年全國統(tǒng)一高考數(shù)學(xué)試卷(新高考Ⅱ)含答案
- 我國無菌包裝行業(yè)消費量已超千億包-下游需求仍存擴容潛力
評論
0/150
提交評論