




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021年廣東省廣州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(12題)1.下列關(guān)于線性鏈表的敘述中,正確的是()A.各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致
B.各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)
C.進行出入與刪除時,不需要移動表中的元素
D.以上三種說法都不催
2.對兩個數(shù)組a和b進行下列初始化:charm[]1="l234567":charn[]={1,2,3,4,5,6,7);則下列敘述正確的是()。A.數(shù)組m與數(shù)組n完全相同B.數(shù)組m與數(shù)組n長度相同C.數(shù)組m比數(shù)組n長1D.數(shù)組m與數(shù)組n中都存放字符串
3.線性表(a1,a2,?,an)以鏈式方式存儲,訪問第i位置元素的時間復(fù)雜度為()。
A.O(0)B.O(1)C.O(n)D.O(n2)
4.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當運行時輸入:a<回車>后,以下敘述正確的是()。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
5.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)A.getc()B.gets()C.getchar()D.scanf()
6.下面關(guān)于圖的存儲的敘述中正確的是()。
A.用鄰接表法存儲圖,占用的存儲空間大小只與圖中邊數(shù)有關(guān),而與頂點個數(shù)無關(guān)
B.用鄰接表法存儲圖,占用的存儲空間大小與圖中邊數(shù)和頂點個數(shù)都有關(guān)
C.用鄰接矩陣法存儲圖,占用的存儲空間大小與圖中頂點個數(shù)和邊數(shù)無關(guān)
D.用鄰接矩陣存儲圖,占用的存儲空間大小只與圖中邊數(shù)有關(guān),而與頂點個數(shù)無關(guān)
7.下列有關(guān)圖的遍歷說法中,不正確的是()
A.圖的遍歷必須用遞歸實現(xiàn)
B.基本遍歷算法兩種:深度遍歷和廣度遍歷
C.有向圖和無向圖都可以進行遍歷操作
D.圖的遍歷算法可以執(zhí)行在有回路的圖上
8.有以下程序intf(intA){returna%2;}main(){ints[8]={1,3,5,2,4,6),i,d=0;for(i=0;f(s[i];i++)d+=s[i];printf("%d\n",D);}程序運行后的輸出結(jié)果是
A.9B.11C.19D.21
9.設(shè)R是一個2元關(guān)系,有3個元組,S是一個3元關(guān)系,有3個元組。如T=R×S,則T的元組的個數(shù)為()。A.6B.8C.9D.12
10.下列程序執(zhí)行后的輸出結(jié)果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9
11.面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是()。
A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系
B.強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念
C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題
D.不強調(diào)模擬現(xiàn)實世界中的算法而強調(diào)概念
12.一個二維數(shù)組的定義語句為“inta[3][4]={{3,4},{2,8,6}};”,則元素a[2][1]的值為()。
A.0B.4C.8D.6
二、2.填空題(12題)13.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。
14.以下函數(shù)用來在w數(shù)組中插入x,w數(shù)組中的數(shù)已按由小到大的順序存放,n為數(shù)組中存放的數(shù)的個數(shù)。插入后數(shù)組中的個數(shù)仍然有序。請?zhí)羁?,使之完整?/p>
voidfun(char*w,charx,int*n)
{inti,p;
p=0;
w[*n]=x;
whiel(x>w[p])【】;
for(i=*n;i>p;i--)w[i]=【】;
w[p]=x;
++*n;
}
15.以下程序輸出的結(jié)果是______。
mazn()
{inta=5,b=4,c=3,d;
d=(a>b>C);
printf("%d\n",D);
}
16.以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
main()
{ihtx=0210;printf("%x\n",x);
}
17.以下函數(shù)的功能是計算s=1+1/2!+1/3!+……+1/n!,請?zhí)羁铡?/p>
doublefun(intn)
{
doubles=0.0,fac=1.0;inti;
for(i=1,i<=n;i++)
{
fac=fac______;
s=s+fac;
}
returns;
}
18.下列表達式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁誣_____。
19.以下程序的功能是:從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。請?zhí)羁铡?include<stdio.h>main(){longs,t,s1=10;pfintf("\n.Pleaseenters:");scanf("%1d",&s);t=s%10;while(s>0){s=s/100;t=();s1=s1*10;}printf("Theresultis:%1d\n",t);}
20.以下程序中,fun函數(shù)的功能足求3行4列二維數(shù)組每行尢素中的最大值。請?zhí)羁?。voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;fun(3,4,a,B);for(i=0;j<3;i++)printf("%4d",b[i]);printf("\n");}voidfun(intm,intn,intar[][4],int*br){inti,j,x;for(i=0;i<m;i++){x=ar[i][0];for(j=0;j<n;j++)if(())x=ar[i][j];br[i]=x;}}
21.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。
22.軟件危機出現(xiàn)于20時紀60年代末,為了解決軟件危機,人們提出了()的原理來設(shè)計軟件,這就是軟件工程誕生的基礎(chǔ)。
23.下列程序的運行結(jié)果是______。
#definePOWER(x)((x)*(x))
main()
{inti=1;
printf("%d,%d",POWER(i++),i);
}
24.設(shè)有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內(nèi)容,請將語句補充家整。
seanf("%d",【】);
printf("%d\n",【】);
三、3.程序設(shè)計題(10題)25.請編寫函數(shù)fun(),其功能是:將所有大于1小于整數(shù)m的素數(shù)存入xx所指數(shù)組中,素數(shù)的個數(shù)通過k傳回。
例如,輸入25,則應(yīng)輸出23571113171923。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(intm,int*k,intxx[])
{
}
main()
{
intm,n,zz[100];
clrscr();
printf("/nPleaseenteranintegernumberbetween10and100:");
scanf("%d",&n);
fun(n,&m,zz);
printf("\n\nThereare%dprimenumbers
lessthan%d:",m,n);
for(n=0;n<m;n++)
printf("\n%4d",zz[n]);
}
26.請編寫函數(shù)fun,其功能是:計算并輸出3~n之間(含3和n)所有素數(shù)的平方根之和。
例如,在主函數(shù)中從鍵盤為n輸入100后,輸出為:sum=148.874270。
[注意]要求n的值大于2但不大于100。
[注意]部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
[試題源程序]
#include<math.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
intn;
doublesum;
printf("\n\nInputn:");
scanf("%d",&n);
sum=fun(n);
printf("kn\nsum=%f\n\n",sum);
}
27.請編寫函數(shù)fun(),對長度為7個字符的字符串,除首、尾字符外,將其余5個字符按ASCII碼值升序排列。
例如:原來的字符串為BdsihAd,則排序后輸出為BAdhisd。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
intfun(char*s,intnum)
{
}
main()
{
chars[10];
clrscr();
printf("輸入7個字符的字符串:");
gets(s);
fun(s,7);
printf("\n%s",s);
}
28.請編寫函數(shù)voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在即所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。
例如,若x中的值為30,則有4個數(shù)符合要求,它們是1,3,5,15。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(intx,intpp[],int*n)
{
}
main()
{
intx,aa[1000],n,i;
clrscr();
printf("\nPleaseenteraninteger
number:\n");
scanf("%d",&x);
fun(x,aa,&n);
for(i=0;i<n;i++)
printf("%d",aa[i]);
printf("\n");
}
29.函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在c中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的十位和千位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。
例如,當a=45,b=12。調(diào)用該函數(shù)后,c=5241。
注意:部分源程序存在文件.PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
30.請編寫一個函數(shù)voidfun(intm,intk,intxx[]),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中。
例如,若輸入17,5,則應(yīng)輸出19,23,29,3l,37。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(intm,intk,intxx[])
{
}
main()
{
intm,n,zz[1000];
clrscr();
printf("\nPleaseentertwointegers:");
scanf("%d%d",&m,&n);
fun(m,n,zz);
for(m=O;m<n;m++)
printf("%d",zz[m]);
printf("\n");
}
31.請編寫函數(shù)fun,其功能是:計算并輸出3到n之間(含3和n)所有素數(shù)的平方根之和。
例如,在主函數(shù)中從鍵盤給n輸入100后,輸出為:sum=148.874270。
注意:要求n的值大于2但不大于100。部分源程序給出如下。清勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
[試題源程序]
#include<math.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
intn;
doublesum;
printf("\n\nInputn:");
scanf("%d",&n);
sum=fun(n);
printf("\n\nsum=%f\n\n",sum);
}
32.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:把指定分數(shù)范圍內(nèi)的學生數(shù)據(jù)放在b所指的數(shù)組中,分數(shù)范圍內(nèi)的學生人數(shù)由函數(shù)值返回。
例如,輸入的分數(shù)是60和69,則應(yīng)當把分數(shù)在60到69的學生數(shù)據(jù)進行輸出,包含60分和69分的學生數(shù)據(jù)。主函數(shù)中把60放在low中,把69放在heigh中。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b,int1,inth)
{
}
main()
{
STRECs[N]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",96},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",94},{"GA012",64},
{"GA014",91},{"GA011",90},{"GA017",64},
{"GA018",64},{"GA016",72}};
STRECh[N],tt;
FILE*out;
inti,j,n,low,heigh,t;
printf("Enter2integernumberlow&
heigh:");
scanf("%d%d",&low,&heigh);
if(heigh<low)
{t=heigh;heigh=low;low=t;}
n=fun(s,h,low,heigh);
printf("Thestudent'sdatabetween
%d--%d:\n",low,heigh);
for(i=0;i<n;i++)
printf("%s%4d\n",h[i].num,h[i].s);
/*輸出指定分數(shù)范圍內(nèi)的學生記錄*/
printf("\n");
ut=fopen("out74.dat","w")
fprintf(out,"%d\n",n)-
n=fun(s,h,80,98);
for(i=0;i<n-1;i++)
/*分數(shù)在80~98之間的學生記錄按他數(shù)從低到高排序*/
for(j=i+l;j<n;j++)
if(h[i].s>h[j].s)
{tt=h[i];h[ii=h[j];h[j]=tt;}
for(i=0;i<n;i++)
fprintf(out,"%4d\n",h[i].s);
fprintf(out,"\n");
fclose(out);
}
33.m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將高于平均分的人數(shù)作為函數(shù)值返回,將高于平均分的分數(shù)放在叩所指的數(shù)組中。
例如,當score數(shù)組中的數(shù)據(jù)為24,35,88,76,90,54,59,66,96時,函數(shù)返回的人數(shù)應(yīng)該是5,up中的數(shù)據(jù)應(yīng)為88,76,90,66,96。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(intscore[],intm,intup[])
{
}
main()
{
inti,n,up[9];
intscore[9]={24,35,88,76,90,54,
59,66,96};
clrscr();
n=fun(score,9,up);
printf("\nuptotheaveragescoreare:");
for(i=0;i<n;i++)
printf("%d",up[i]);
}
34.請編寫函數(shù)fun,其功能是求出數(shù)組的最大元素在數(shù)組中的下標并存放在k所指的存儲單元中。
例如,輸入如下整數(shù):87667589610l30l401980431451777則輸出結(jié)果為:6,980
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
四、單選題(0題)35.C語言中的基本數(shù)據(jù)類型所占存儲空間長度的順序是()
A.char<=int<=float<=double<=long
B.int<=char<=float<=long<=double
C.int<=long<=float<=double<=char
D.char<=int<=float<=long<=double
五、單選題(0題)36.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是()。
A.77B.88C.810D.1010
六、單選題(0題)37.若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語句后輸出的結(jié)果為()。
cb='b';
k=10;
printf("%X,%o,”,ch,ch,k);
printf("k=%%d\n",k);A.A.因變量類型與格式描述符的類型不匹配,輸出無定值
B.輸出項與格式描述符個數(shù)不符,輸出為0值或不定值
C.62,142,k=%d
D.62,142,k=%10
參考答案
1.C
試題2分析
結(jié)點的存儲順序和邏輯順序不一定一致,存儲空間也不一定連續(xù)。插入和刪除元素的時候,不需要移動表中的元素。
試題2答案
C
2.C在m數(shù)組中賦值的是字符串,其長度為7,末尾有結(jié)束符\0,故字節(jié)數(shù)為8,而n數(shù)組中賦的是字符,其長度為7,故C選項正確。
3.C
4.A解析:本題考查的是getchar()函數(shù)。getchar()函數(shù)執(zhí)行時將從鍵盤緩沖區(qū)中讀取用戶的輸入,而不管輸入的是否可打印字符,所以當輸入a<回車>后,鍵盤緩沖區(qū)被輸入的實際上是兩個字符:'a'和'\\n'。故選項A的說法是正確的。
5.Bscanf(\u3000)語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf(\u3000)函數(shù)不能輸入空格;getehar(\u3000)函數(shù)用于輸入字符,其調(diào)用形式為:ch=getelaar(\u3000),getehar(\u3000)函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets(\u3000)函數(shù)的凋用形式為:gets(str_adr),其中stradr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。9ets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc(\u3000)函數(shù)的調(diào)用形式為:ch=getc(pf)其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。
6.B
7.A
8.A解析:本題考核的知識點是一維數(shù)組的定義,初始化和數(shù)組中元素的引用。函數(shù)f()的作用是形參a為偶數(shù)的時候返回0,主函數(shù)中首先定義了一個長度為8的一維數(shù)組,然后給它賦初值使得s[0]=1、a[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6.其他沒有賦值的數(shù)組元素將自動賦值為0。for循環(huán)中,當s[1]不為偶數(shù)的時,將s[i]相加,即當i=3時,s[i]=2為偶數(shù),退出循環(huán),此時d的值為d=s101+s[1]+s[2]=1+3+5=9,因此最后輸出的d的值為9。所以,4個選項中選項A符合題意。
9.CC。R為n元關(guān)系,有P個元組S為m元關(guān)系,有q個元組。兩個關(guān)系笛卡兒積是一個n+m元的關(guān)系,元組個數(shù)是q×p。所以T的元組的個數(shù)為9個。
10.A本題考查函數(shù)的調(diào)用,從主函數(shù)傳遞到調(diào)用函數(shù)中,*a的值為0,因此當執(zhí)行完調(diào)用函數(shù)后,b[0]的值為6。
11.C\n面向?qū)ο蟮脑O(shè)計方法的基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它雖強調(diào)模擬現(xiàn)實世界中的概念而不強調(diào)算法,但是它鼓勵開發(fā)者在軟件開發(fā)的過程中從應(yīng)用領(lǐng)域的概念角度去思考。
\n
12.A
13.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。
14.++pw[i-1]
15.00解析:關(guān)系運算符“>”的結(jié)合方式是從左向右的,所以在本題中的表達式a>b>c;從左向右開始計算,a>b的結(jié)果為“1”,接著1和c比較假,該空格處應(yīng)該填0。
16.8888解析:程序中的0210表示八進制數(shù),%x是以十六進制形式輸出。本題可先將0210轉(zhuǎn)換為十進制數(shù),再將其轉(zhuǎn)換為十六進制數(shù)。
17./i或*1.0/i或*1/i或*(1.0/i)或/(double)i/i或*1.0/i或*1/i或*(1.0/i)或/(double)i解析:主函數(shù)中首先定義了兩個double型的變量s和fac,并給它們賦初值為0.0和1.0,在函數(shù)中s和fac的作用是存放和以及要加到的那一項的值。通過分析可知,第i項的值可以由第i-1項的值得到,即第i項是第i-1項的值除以i??梢姍M線處應(yīng)添“/i”或與它等價的表達式。
18.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查邏輯表達。年號能被4整除(y%4==0)但不能被100整除(y%100!=0),兩者是與的關(guān)系,年號能被400整除即y%400==0,與前兩項是或的關(guān)系。
19.s%10*s1+t
20.x<ar[i][j]x<ar[i][j]解析:本題考查的是循環(huán)的嵌套。本題定義了二維數(shù)組a,存放3行4列的數(shù)組元素,定義了,一維數(shù)組b用于存放每行的最大數(shù)。存函數(shù)fun中,通過二重for循環(huán)求每行的最大數(shù),外層for循環(huán)用于控制行數(shù),內(nèi)層for循環(huán)用于控制列數(shù)。當外層循環(huán)執(zhí)行一次時,內(nèi)層循環(huán)則執(zhí)行4次,并求出了這一行的最大值x,最后將每一行求出最大值x賦值給存放最大值的數(shù)組br,故本題答案為x<ar[i][j]。
21.存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間。供隊列循環(huán)使用??芍?,循環(huán)隊列應(yīng)當是物理結(jié)構(gòu)。
22.軟件工程學軟件工程學解析:為了消除軟件危機,通過認真研究解決軟件危機的方法,認識到軟件工程是使計算機軟件走向工程科學的途徑。逐步形成了軟件工程的概念,開辟了工程學的新興領(lǐng)域——軟件工程學。
23.111,1解析:POWER(i++)中先引用i的值1,再將i的值加1,POWER(i++)=1*1=1。
24.k[7]*kk[7]*k解析:scanf()函數(shù)有兩個參數(shù),第—個參數(shù)是格式控制部分(格式控制部分是字符串,主要由“%”號和格式字符組成)第二個參數(shù)是一地址列表(地址列表是由多個地址組成,可以是變量的地址,也可以是字符串的首地址)。而第一個空格處位于scanf()函數(shù)的第二個參數(shù)處,所以,第一個空應(yīng)該填地址k。printf()函數(shù)有兩個參數(shù),第一個參數(shù)是輸出格式字符串(輸出格式字符串是由控制輸出格式的字符和非格式字符組成的,通常是字符常量。非格式字符作為輸出數(shù)據(jù)的間隔,輸出時原樣輸出)第二個參數(shù)為一輸出表達式表(輸出表達式表是由若干個需要計算和輸出的表達式組成的,表達式之間用逗號分隔開)。而第二個空位于printf()函數(shù)的第二個參數(shù)處,所以應(yīng)該填*K。
25.voidfun(intmint*kintXX[]){intijtn=0;for(i=2;i<m;i++)/*找出大于1小于整數(shù)m的素數(shù)*/{t=l;for(j=2;j<i;j++)if(i%j==0){t=0;break;}if(t==1)xx[n++]=i;}*k=n;/*返回素數(shù)的個數(shù)*/}voidfun(intm,int*k,intXX[])\r\n{\r\ninti,j,t,n=0;\r\nfor(i=2;i<m;i++)/*找出大于1小于整數(shù)m的素數(shù)*/\r\n{\r\nt=l;\r\nfor(j=2;j<i;j++)\r\nif(i%j==0)\r\n{\r\nt=0;\r\nbreak;\r\n}\r\nif(t==1)\r\nxx[n++]=i;\r\n}\r\n*k=n;/*返回素數(shù)的個數(shù)*/\r\n}解析:這道題是考查一個數(shù)是不是素數(shù),只要掌握了判斷素數(shù)的方法,問題便能順利解決,請以此題為例,掌握判斷素數(shù)的方法。
26.doublefun(intn){intij=0;doubles=0;for(i=3;i<=n;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j==i)s=s+sqrt(i);}returns;}doublefun(intn)\r\n{\r\ninti,j=0;\r\ndoubles=0;\r\nfor(i=3;i<=n;i++)\r\n{\r\nfor(j=2;j<i;j++)\r\nif(i%j==0)\r\nbreak;\r\nif(j==i)\r\ns=s+sqrt(i);\r\n}\r\nreturns;\r\n}
27.intfun(char*sintnum){chart;intij;for(i=1;i<num-2;i++)/*下標值從1開始用循環(huán)依次取得字符串中的字符*/for(j=i+1;j<num-1;j++)/*將字符與其后的每個字符比較*/if(s[i]>s[j])/*如果后面字符的ASCII碼值小于該字符的ASCII碼值*/{t=s[i];/*則交換這兩個字符*/s[i]=s[j];s[j]=t;}}intfun(char*s,intnum)\r\n{chart;\r\ninti,j;\r\nfor(i=1;i<num-2;i++)/*下標值從1開始,用循環(huán)依次取得字符串中的字符*/\r\nfor(j=i+1;j<num-1;j++)/*將字符與其后的每個字符比較*/\r\nif(s[i]>s[j])/*如果后面字符的ASCII碼值小于該字符的ASCII碼值*/\r\n{t=s[i];/*則交換這兩個字符*/\r\ns[i]=s[j];\r\ns[j]=t;\r\n}\r\n}解析:本題考查利用循環(huán)來控制數(shù)組元素的操作,首尾元素除外,因此,數(shù)組的下標值要從1開始,用循環(huán)變量i來依次取得數(shù)組中的元素,用數(shù)組中的元素s[i]和s[j]進行比較,如果后一個元素的ASCII碼值小于前一個元素的ASCII碼值,則交換這兩個數(shù)組元素的值。
28.voidfun(intxintpp[]int*n){intij=0;for(i=1;i<x;i=i+2)/*i的初始值為1步長為2確保i為奇數(shù)*/if(x%i==0)/*將能整除x的數(shù)存入數(shù)組pp中*/pp[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/}voidfun(intx,intpp[],int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<x;i=i+2)/*i的初始值為1,步長為2,確保i為奇數(shù)*/\r\nif(x%i==0)/*將能整除x的數(shù)存入數(shù)組pp中*/\r\npp[j++]=i;\r\n*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/\r\n}解析:本題題干信息是:能整除x且不是偶數(shù)的所有整數(shù)。循環(huán)語句中i從1開始且每次增2,所以i始終是奇數(shù)。
29.
解析:該程序功能是將兩個正整數(shù)合并形成一個整數(shù)的題型。本題類型首先要考慮整數(shù)的位數(shù)分離,然后要進行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開,改變排列順序后,再組合成新的數(shù)字。
30.voidfun(intmintkintxx[]){intijn;for(i=m+1n=0;n<k;i++)/*找大于m的素數(shù)循環(huán)k次即找出緊靠m的k個素數(shù)*/{for(j=2;j<i;j++)/*判斷一個數(shù)是否為素數(shù)如果不是跳出此循環(huán)判斷下一個數(shù)*/if(i%j==O)break;if(j>=i)/*如果是素數(shù)放入數(shù)組xx中*/xx[n++]=i;}}voidfun(intm,intk,intxx[])\r\n{\r\ninti,j,n;\r\nfor(i=m+1,n=0;n<k;i++)/*找大于m的素數(shù),循環(huán)k次,即找出緊靠m的k個素數(shù)*/\r\n{for(j=2;j<i;j++)/*判斷一個數(shù)是否為素數(shù),如果不是,跳出此循環(huán),判斷下一個數(shù)*/\r\nif(i%j==O)break;\r\nif(j>=i)/*如果是素數(shù),放入數(shù)組xx中*/\r\nxx[n++]=i;\r\n}\r\n}解析:本題只要掌握了判斷素數(shù)的算法即不難完成了,其實程序缺少部分也正是這部分。
31.doublefun(intn){intij=0;doubles=0;for(i=3;i<=n;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j==i)s=s+sqrt(i);}returns;}doublefun(intn)\r\n{\r\ninti,j=0;\r\ndoubles=0;\r\nfor(i=3;i<=n;i++)\r\n{\r\nfor(j=2;j<i;j++)\r\nif(i%j==0)\r\nbreak;\r\nif(j==i)\r\ns=s+sqrt(i);\r\n}\r\nreturns;\r\n}
32.intfun(STREC*aSTREC*bint1inth){intij=0;for(i=0;i<N;i++)if(a[i].s>-l&&a[i].s<=h)/*將分數(shù)高于1低于h的學生記錄存在于結(jié)構(gòu)體數(shù)組b中*/b[j++]=a[i];returnj;/*返回分數(shù)范圍內(nèi)的學生人數(shù)*/}intfun(STREC*a,STREC*b,int1,inth)\r\n{\r\ninti,j=0;\r\nfor(i=0;i<N;i++)\r\nif(a[i].s>-l&&a[i].s<=h)/*將分數(shù)高于1,低于h的學生記錄存在于結(jié)構(gòu)體數(shù)組b中*/\r\nb[j++]=a[i];\r\nreturnj;/*返回分數(shù)范圍內(nèi)的學生人數(shù)*/\r\n}解析:處理此類分段統(tǒng)計問題,可采用多分支選擇語句或條件選擇語句。此處采用條件選擇語句解答,具體見參考答案。使用條件選擇語句進行分段統(tǒng)計時應(yīng)當注意分段范圍。
33.intfun(intscore[]intmintup[]){intij=0;floatav=0.0for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]>av)/*如果分數(shù)高于平均分則將此分數(shù)放入up數(shù)組中*/up[j++]=score[i];returnj;/*返回高于平均分的人數(shù)*/}intfun(intscore[],intm,intup[])\r\n{\r\ninti,j=0;\r\nfloatav=0.0\r\nfor(i=0;i<m;i++)\r\nav=av+score[i]/m;/*求平均值*/\r\nfor(i=0;i<m;i++)\r\nif(score[i]>av)/*如果分數(shù)高于平均分,則將此分數(shù)放入up數(shù)組中*/\r\nup[j++]=score[i];\r\nreturnj;/*返回高于平均分的人數(shù)*/\r\n}解析:該題第1個循環(huán)的作用是求出平均分av,第2個循環(huán)的作用是找出高于平均分的成績并存入up數(shù)組中。
34.
解析:(1)該程序功能是求最大元素在數(shù)組中的下標。它的解題思路是,用最大值變量max標記第一個待找數(shù)據(jù),逐個把所有待找數(shù)據(jù)和max進行比較,并用pos標記其當前最大值所在位置,從而找出最大值。(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)“fun(a,10,&k);”中的參數(shù)a存放著給出的整數(shù),fun函數(shù)實現(xiàn)查找最大元素的下標。
35.A
36.C解析:本題考核的知識點是字符數(shù)組的定義、賦初值以及函數(shù)sizeof()的應(yīng)用。本題中定義兩個字符型數(shù)組,其中a省略了長度,定義了b的長度為10,并賦初值分別為“abcdefg”和“abcdfg”。所以a的長度為賦值給它的字符串的字符個數(shù)7加上一個結(jié)束轉(zhuǎn)義字符,即a的長度為7+1為8.定義時b的長度定義為10,故b的長度為10,因此最后通過函數(shù)sizeof()求得的數(shù)組a和數(shù)組b的長度分別為8和10,所以,4個選項中選項C符合題意。
37.C第1個printf函數(shù),格式說明的個數(shù)是2,而輸出項的個數(shù)是3,所以對于多余的輸出項k不予輸出;第2個printf函數(shù),有兩個%說明,第1個%后面的字符要原樣輸出。本題考查printf函數(shù)的格式。①“%x”和“%0”分別表示以十六進制和八進制無符合型輸出整型數(shù)據(jù)(不帶前導(dǎo)ox或0);②printf函數(shù)中格式說明符之前插入的任何字符都原樣輸出;③格式說明與輸出項的個數(shù),也要相等,如果格式說明的個數(shù)少于輸出項的個數(shù),則對于多余的輸出項不予輸出。2021年廣東省廣州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(12題)1.下列關(guān)于線性鏈表的敘述中,正確的是()A.各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致
B.各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)
C.進行出入與刪除時,不需要移動表中的元素
D.以上三種說法都不催
2.對兩個數(shù)組a和b進行下列初始化:charm[]1="l234567":charn[]={1,2,3,4,5,6,7);則下列敘述正確的是()。A.數(shù)組m與數(shù)組n完全相同B.數(shù)組m與數(shù)組n長度相同C.數(shù)組m比數(shù)組n長1D.數(shù)組m與數(shù)組n中都存放字符串
3.線性表(a1,a2,?,an)以鏈式方式存儲,訪問第i位置元素的時間復(fù)雜度為()。
A.O(0)B.O(1)C.O(n)D.O(n2)
4.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當運行時輸入:a<回車>后,以下敘述正確的是()。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
5.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)A.getc()B.gets()C.getchar()D.scanf()
6.下面關(guān)于圖的存儲的敘述中正確的是()。
A.用鄰接表法存儲圖,占用的存儲空間大小只與圖中邊數(shù)有關(guān),而與頂點個數(shù)無關(guān)
B.用鄰接表法存儲圖,占用的存儲空間大小與圖中邊數(shù)和頂點個數(shù)都有關(guān)
C.用鄰接矩陣法存儲圖,占用的存儲空間大小與圖中頂點個數(shù)和邊數(shù)無關(guān)
D.用鄰接矩陣存儲圖,占用的存儲空間大小只與圖中邊數(shù)有關(guān),而與頂點個數(shù)無關(guān)
7.下列有關(guān)圖的遍歷說法中,不正確的是()
A.圖的遍歷必須用遞歸實現(xiàn)
B.基本遍歷算法兩種:深度遍歷和廣度遍歷
C.有向圖和無向圖都可以進行遍歷操作
D.圖的遍歷算法可以執(zhí)行在有回路的圖上
8.有以下程序intf(intA){returna%2;}main(){ints[8]={1,3,5,2,4,6),i,d=0;for(i=0;f(s[i];i++)d+=s[i];printf("%d\n",D);}程序運行后的輸出結(jié)果是
A.9B.11C.19D.21
9.設(shè)R是一個2元關(guān)系,有3個元組,S是一個3元關(guān)系,有3個元組。如T=R×S,則T的元組的個數(shù)為()。A.6B.8C.9D.12
10.下列程序執(zhí)行后的輸出結(jié)果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9
11.面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是()。
A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系
B.強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念
C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題
D.不強調(diào)模擬現(xiàn)實世界中的算法而強調(diào)概念
12.一個二維數(shù)組的定義語句為“inta[3][4]={{3,4},{2,8,6}};”,則元素a[2][1]的值為()。
A.0B.4C.8D.6
二、2.填空題(12題)13.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。
14.以下函數(shù)用來在w數(shù)組中插入x,w數(shù)組中的數(shù)已按由小到大的順序存放,n為數(shù)組中存放的數(shù)的個數(shù)。插入后數(shù)組中的個數(shù)仍然有序。請?zhí)羁眨怪暾?/p>
voidfun(char*w,charx,int*n)
{inti,p;
p=0;
w[*n]=x;
whiel(x>w[p])【】;
for(i=*n;i>p;i--)w[i]=【】;
w[p]=x;
++*n;
}
15.以下程序輸出的結(jié)果是______。
mazn()
{inta=5,b=4,c=3,d;
d=(a>b>C);
printf("%d\n",D);
}
16.以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
main()
{ihtx=0210;printf("%x\n",x);
}
17.以下函數(shù)的功能是計算s=1+1/2!+1/3!+……+1/n!,請?zhí)羁铡?/p>
doublefun(intn)
{
doubles=0.0,fac=1.0;inti;
for(i=1,i<=n;i++)
{
fac=fac______;
s=s+fac;
}
returns;
}
18.下列表達式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁誣_____。
19.以下程序的功能是:從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。請?zhí)羁铡?include<stdio.h>main(){longs,t,s1=10;pfintf("\n.Pleaseenters:");scanf("%1d",&s);t=s%10;while(s>0){s=s/100;t=();s1=s1*10;}printf("Theresultis:%1d\n",t);}
20.以下程序中,fun函數(shù)的功能足求3行4列二維數(shù)組每行尢素中的最大值。請?zhí)羁?。voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;fun(3,4,a,B);for(i=0;j<3;i++)printf("%4d",b[i]);printf("\n");}voidfun(intm,intn,intar[][4],int*br){inti,j,x;for(i=0;i<m;i++){x=ar[i][0];for(j=0;j<n;j++)if(())x=ar[i][j];br[i]=x;}}
21.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。
22.軟件危機出現(xiàn)于20時紀60年代末,為了解決軟件危機,人們提出了()的原理來設(shè)計軟件,這就是軟件工程誕生的基礎(chǔ)。
23.下列程序的運行結(jié)果是______。
#definePOWER(x)((x)*(x))
main()
{inti=1;
printf("%d,%d",POWER(i++),i);
}
24.設(shè)有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內(nèi)容,請將語句補充家整。
seanf("%d",【】);
printf("%d\n",【】);
三、3.程序設(shè)計題(10題)25.請編寫函數(shù)fun(),其功能是:將所有大于1小于整數(shù)m的素數(shù)存入xx所指數(shù)組中,素數(shù)的個數(shù)通過k傳回。
例如,輸入25,則應(yīng)輸出23571113171923。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(intm,int*k,intxx[])
{
}
main()
{
intm,n,zz[100];
clrscr();
printf("/nPleaseenteranintegernumberbetween10and100:");
scanf("%d",&n);
fun(n,&m,zz);
printf("\n\nThereare%dprimenumbers
lessthan%d:",m,n);
for(n=0;n<m;n++)
printf("\n%4d",zz[n]);
}
26.請編寫函數(shù)fun,其功能是:計算并輸出3~n之間(含3和n)所有素數(shù)的平方根之和。
例如,在主函數(shù)中從鍵盤為n輸入100后,輸出為:sum=148.874270。
[注意]要求n的值大于2但不大于100。
[注意]部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
[試題源程序]
#include<math.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
intn;
doublesum;
printf("\n\nInputn:");
scanf("%d",&n);
sum=fun(n);
printf("kn\nsum=%f\n\n",sum);
}
27.請編寫函數(shù)fun(),對長度為7個字符的字符串,除首、尾字符外,將其余5個字符按ASCII碼值升序排列。
例如:原來的字符串為BdsihAd,則排序后輸出為BAdhisd。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
intfun(char*s,intnum)
{
}
main()
{
chars[10];
clrscr();
printf("輸入7個字符的字符串:");
gets(s);
fun(s,7);
printf("\n%s",s);
}
28.請編寫函數(shù)voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在即所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。
例如,若x中的值為30,則有4個數(shù)符合要求,它們是1,3,5,15。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(intx,intpp[],int*n)
{
}
main()
{
intx,aa[1000],n,i;
clrscr();
printf("\nPleaseenteraninteger
number:\n");
scanf("%d",&x);
fun(x,aa,&n);
for(i=0;i<n;i++)
printf("%d",aa[i]);
printf("\n");
}
29.函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在c中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的十位和千位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。
例如,當a=45,b=12。調(diào)用該函數(shù)后,c=5241。
注意:部分源程序存在文件.PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
30.請編寫一個函數(shù)voidfun(intm,intk,intxx[]),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中。
例如,若輸入17,5,則應(yīng)輸出19,23,29,3l,37。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(intm,intk,intxx[])
{
}
main()
{
intm,n,zz[1000];
clrscr();
printf("\nPleaseentertwointegers:");
scanf("%d%d",&m,&n);
fun(m,n,zz);
for(m=O;m<n;m++)
printf("%d",zz[m]);
printf("\n");
}
31.請編寫函數(shù)fun,其功能是:計算并輸出3到n之間(含3和n)所有素數(shù)的平方根之和。
例如,在主函數(shù)中從鍵盤給n輸入100后,輸出為:sum=148.874270。
注意:要求n的值大于2但不大于100。部分源程序給出如下。清勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
[試題源程序]
#include<math.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
intn;
doublesum;
printf("\n\nInputn:");
scanf("%d",&n);
sum=fun(n);
printf("\n\nsum=%f\n\n",sum);
}
32.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:把指定分數(shù)范圍內(nèi)的學生數(shù)據(jù)放在b所指的數(shù)組中,分數(shù)范圍內(nèi)的學生人數(shù)由函數(shù)值返回。
例如,輸入的分數(shù)是60和69,則應(yīng)當把分數(shù)在60到69的學生數(shù)據(jù)進行輸出,包含60分和69分的學生數(shù)據(jù)。主函數(shù)中把60放在low中,把69放在heigh中。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b,int1,inth)
{
}
main()
{
STRECs[N]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",96},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",94},{"GA012",64},
{"GA014",91},{"GA011",90},{"GA017",64},
{"GA018",64},{"GA016",72}};
STRECh[N],tt;
FILE*out;
inti,j,n,low,heigh,t;
printf("Enter2integernumberlow&
heigh:");
scanf("%d%d",&low,&heigh);
if(heigh<low)
{t=heigh;heigh=low;low=t;}
n=fun(s,h,low,heigh);
printf("Thestudent'sdatabetween
%d--%d:\n",low,heigh);
for(i=0;i<n;i++)
printf("%s%4d\n",h[i].num,h[i].s);
/*輸出指定分數(shù)范圍內(nèi)的學生記錄*/
printf("\n");
ut=fopen("out74.dat","w")
fprintf(out,"%d\n",n)-
n=fun(s,h,80,98);
for(i=0;i<n-1;i++)
/*分數(shù)在80~98之間的學生記錄按他數(shù)從低到高排序*/
for(j=i+l;j<n;j++)
if(h[i].s>h[j].s)
{tt=h[i];h[ii=h[j];h[j]=tt;}
for(i=0;i<n;i++)
fprintf(out,"%4d\n",h[i].s);
fprintf(out,"\n");
fclose(out);
}
33.m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將高于平均分的人數(shù)作為函數(shù)值返回,將高于平均分的分數(shù)放在叩所指的數(shù)組中。
例如,當score數(shù)組中的數(shù)據(jù)為24,35,88,76,90,54,59,66,96時,函數(shù)返回的人數(shù)應(yīng)該是5,up中的數(shù)據(jù)應(yīng)為88,76,90,66,96。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(intscore[],intm,intup[])
{
}
main()
{
inti,n,up[9];
intscore[9]={24,35,88,76,90,54,
59,66,96};
clrscr();
n=fun(score,9,up);
printf("\nuptotheaveragescoreare:");
for(i=0;i<n;i++)
printf("%d",up[i]);
}
34.請編寫函數(shù)fun,其功能是求出數(shù)組的最大元素在數(shù)組中的下標并存放在k所指的存儲單元中。
例如,輸入如下整數(shù):87667589610l30l401980431451777則輸出結(jié)果為:6,980
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
四、單選題(0題)35.C語言中的基本數(shù)據(jù)類型所占存儲空間長度的順序是()
A.char<=int<=float<=double<=long
B.int<=char<=float<=long<=double
C.int<=long<=float<=double<=char
D.char<=int<=float<=long<=double
五、單選題(0題)36.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是()。
A.77B.88C.810D.1010
六、單選題(0題)37.若ch為char型變量,k為int型變量(已知字符a的ASCII碼是97),則執(zhí)行下列語句后輸出的結(jié)果為()。
cb='b';
k=10;
printf("%X,%o,”,ch,ch,k);
printf("k=%%d\n",k);A.A.因變量類型與格式描述符的類型不匹配,輸出無定值
B.輸出項與格式描述符個數(shù)不符,輸出為0值或不定值
C.62,142,k=%d
D.62,142,k=%10
參考答案
1.C
試題2分析
結(jié)點的存儲順序和邏輯順序不一定一致,存儲空間也不一定連續(xù)。插入和刪除元素的時候,不需要移動表中的元素。
試題2答案
C
2.C在m數(shù)組中賦值的是字符串,其長度為7,末尾有結(jié)束符\0,故字節(jié)數(shù)為8,而n數(shù)組中賦的是字符,其長度為7,故C選項正確。
3.C
4.A解析:本題考查的是getchar()函數(shù)。getchar()函數(shù)執(zhí)行時將從鍵盤緩沖區(qū)中讀取用戶的輸入,而不管輸入的是否可打印字符,所以當輸入a<回車>后,鍵盤緩沖區(qū)被輸入的實際上是兩個字符:'a'和'\\n'。故選項A的說法是正確的。
5.Bscanf(\u3000)語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf(\u3000)函數(shù)不能輸入空格;getehar(\u3000)函數(shù)用于輸入字符,其調(diào)用形式為:ch=getelaar(\u3000),getehar(\u3000)函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets(\u3000)函數(shù)的凋用形式為:gets(str_adr),其中stradr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。9ets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc(\u3000)函數(shù)的調(diào)用形式為:ch=getc(pf)其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。
6.B
7.A
8.A解析:本題考核的知識點是一維數(shù)組的定義,初始化和數(shù)組中元素的引用。函數(shù)f()的作用是形參a為偶數(shù)的時候返回0,主函數(shù)中首先定義了一個長度為8的一維數(shù)組,然后給它賦初值使得s[0]=1、a[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6.其他沒有賦值的數(shù)組元素將自動賦值為0。for循環(huán)中,當s[1]不為偶數(shù)的時,將s[i]相加,即當i=3時,s[i]=2為偶數(shù),退出循環(huán),此時d的值為d=s101+s[1]+s[2]=1+3+5=9,因此最后輸出的d的值為9。所以,4個選項中選項A符合題意。
9.CC。R為n元關(guān)系,有P個元組S為m元關(guān)系,有q個元組。兩個關(guān)系笛卡兒積是一個n+m元的關(guān)系,元組個數(shù)是q×p。所以T的元組的個數(shù)為9個。
10.A本題考查函數(shù)的調(diào)用,從主函數(shù)傳遞到調(diào)用函數(shù)中,*a的值為0,因此當執(zhí)行完調(diào)用函數(shù)后,b[0]的值為6。
11.C\n面向?qū)ο蟮脑O(shè)計方法的基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它雖強調(diào)模擬現(xiàn)實世界中的概念而不強調(diào)算法,但是它鼓勵開發(fā)者在軟件開發(fā)的過程中從應(yīng)用領(lǐng)域的概念角度去思考。
\n
12.A
13.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。
14.++pw[i-1]
15.00解析:關(guān)系運算符“>”的結(jié)合方式是從左向右的,所以在本題中的表達式a>b>c;從左向右開始計算,a>b的結(jié)果為“1”,接著1和c比較假,該空格處應(yīng)該填0。
16.8888解析:程序中的0210表示八進制數(shù),%x是以十六進制形式輸出。本題可先將0210轉(zhuǎn)換為十進制數(shù),再將其轉(zhuǎn)換為十六進制數(shù)。
17./i或*1.0/i或*1/i或*(1.0/i)或/(double)i/i或*1.0/i或*1/i或*(1.0/i)或/(double)i解析:主函數(shù)中首先定義了兩個double型的變量s和fac,并給它們賦初值為0.0和1.0,在函數(shù)中s和fac的作用是存放和以及要加到的那一項的值。通過分析可知,第i項的值可以由第i-1項的值得到,即第i項是第i-1項的值除以i??梢姍M線處應(yīng)添“/i”或與它等價的表達式。
18.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查邏輯表達。年號能被4整除(y%4==0)但不能被100整除(y%100!=0),兩者是與的關(guān)系,年號能被400整除即y%400==0,與前兩項是或的關(guān)系。
19.s%10*s1+t
20.x<ar[i][j]x<ar[i][j]解析:本題考查的是循環(huán)的嵌套。本題定義了二維數(shù)組a,存放3行4列的數(shù)組元素,定義了,一維數(shù)組b用于存放每行的最大數(shù)。存函數(shù)fun中,通過二重for循環(huán)求每行的最大數(shù),外層for循環(huán)用于控制行數(shù),內(nèi)層for循環(huán)用于控制列數(shù)。當外層循環(huán)執(zhí)行一次時,內(nèi)層循環(huán)則執(zhí)行4次,并求出了這一行的最大值x,最后將每一行求出最大值x賦值給存放最大值的數(shù)組br,故本題答案為x<ar[i][j]。
21.存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間。供隊列循環(huán)使用。可知,循環(huán)隊列應(yīng)當是物理結(jié)構(gòu)。
22.軟件工程學軟件工程學解析:為了消除軟件危機,通過認真研究解決軟件危機的方法,認識到軟件工程是使計算機軟件走向工程科學的途徑。逐步形成了軟件工程的概念,開辟了工程學的新興領(lǐng)域——軟件工程學。
23.111,1解析:POWER(i++)中先引用i的值1,再將i的值加1,POWER(i++)=1*1=1。
24.k[7]*kk[7]*k解析:scanf()函數(shù)有兩個參數(shù),第—個參數(shù)是格式控制部分(格式控制部分是字符串,主要由“%”號和格式字符組成)第二個參數(shù)是一地址列表(地址列表是由多個地址組成,可以是變量的地址,也可以是字符串的首地址)。而第一個空格處位于scanf()函數(shù)的第二個參數(shù)處,所以,第一個空應(yīng)該填地址k。printf()函數(shù)有兩個參數(shù),第一個參數(shù)是輸出格式字符串(輸出格式字符串是由控制輸出格式的字符和非格式字符組成的,通常是字符常量。非格式字符作為輸出數(shù)據(jù)的間隔,輸出時原樣輸出)第二個參數(shù)為一輸出表達式表(輸出表達式表是由若干個需要計算和輸出的表達式組成的,表達式之間用逗號分隔開)。而第二個空位于printf()函數(shù)的第二個參數(shù)處,所以應(yīng)該填*K。
25.voidfun(intmint*kintXX[]){intijtn=0;for(i=2;i<m;i++)/*找出大于1小于整數(shù)m的素數(shù)*/{t=l;for(j=2;j<i;j++)if(i%j==0){t=0;break;}if(t==1)xx[n++]=i;}*k=n;/*返回素數(shù)的個數(shù)*/}voidfun(intm,int*k,intXX[])\r\n{\r\ninti,j,t,n=0;\r\nfor(i=2;i<m;i++)/*找出大于1小于整數(shù)m的素數(shù)*/\r\n{\r\nt=l;\r\nfor(j=2;j<i;j++)\r\nif(i%j==0)\r\n{\r\nt=0;\r\nbreak;\r\n}\r\nif(t==1)\r\nxx[n++]=i;\r\n}\r\n*k=n;/*返回素數(shù)的個數(shù)*/\r\n}解析:這道題是考查一個數(shù)是不是素數(shù),只要掌握了判斷素數(shù)的方法,問題便能順利解決,請以此題為例,掌握判斷素數(shù)的方法。
26.doublefun(intn){intij=0;doubles=0;for(i=3;i<=n;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j==i)s=s+sqrt(i);}returns;}doublefun(intn)\r\n{\r\ninti,j=0;\r\ndou
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年可持續(xù)發(fā)展目標與實踐課程考試試題及答案
- T/WEGU 0002-2019城市河湖水環(huán)境治理綜合規(guī)劃設(shè)計編制規(guī)程
- 分娩呼吸運動指導(dǎo)方法
- 香煙包裝設(shè)計規(guī)范與創(chuàng)新策略
- 綜合實踐認識植物
- 工廠防呆體系構(gòu)建與實施策略
- 花店發(fā)展規(guī)劃
- 2025年《安全生產(chǎn)月》活動實施方案 (2份)-63
- 東南大學機械設(shè)計課程體系概述
- 拐杖文字排版設(shè)計
- (二模)青島市2025年高三年級第二次適應(yīng)性檢測地理試卷(含標準答案)
- 海林市社區(qū)工作者招聘真題2024
- 【檢查表】粉塵涉爆企業(yè)安全生產(chǎn)執(zhí)法檢查參考標準
- 2025年中考英語627個常見詞組分類速記背誦手冊
- 電子工業(yè)廢氣處理工程-設(shè)計標準
- 2025年2月22日四川省公務(wù)員面試真題及答案解析(定向鄉(xiāng)鎮(zhèn)崗)
- 售后服務(wù)技術(shù)合同
- 國家中小學智慧教育平臺應(yīng)用指南
- 防汛度汛管理制度
- 2024北京豐臺區(qū)三年級(下)期末數(shù)學試題及答案
- 第3節(jié) 呼吸作用2024-2025學年新教材七年級下冊生物同步教學設(shè)計(人教版2024)
評論
0/150
提交評論