版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年黑龍江省大慶市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、2.填空題(10題)1.以下程序運行時,若從鍵盤輸入:102030<回車>,輸出的結(jié)果是【】。
#include<stdio.h>
main()
{inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
2.下面程序中的數(shù)組a包括10個整數(shù)元素,從a中第二個元素起,分別將后項減前項之差存入數(shù)組b,并按每行4個元素輸出數(shù)組b,請?zhí)羁?。main(){inta[10],b[10],i;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=1;i<10;i++)();for(i=0;i<9;i++){printf("%d",b[i]);if(i%4==0)printf("\n");}}
3.有以下程序
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf("%d\n",t);
}
執(zhí)行后輸出結(jié)果是______。
4.在關(guān)系數(shù)據(jù)庫中,將數(shù)據(jù)表示成二維表,每一個二維表稱為______。
5.設(shè)在主函數(shù)中有以下定義和函數(shù)調(diào)用語句,且fun函數(shù)為void類型;請寫出fun函數(shù)的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}
6.二分法查找僅限于這樣的表:表中的數(shù)據(jù)元素必須有序,其存儲結(jié)構(gòu)必須是______。
7.輸入字母a時,下列程序的運行結(jié)果為【】。
#include<stdio.h>
main()
{charch;
ch=getchar();
(ch>='a'&&ch<='z')?putchar(ch+'A'-'a'):putchar(ch);
}
8.執(zhí)行以下程序后的輸出結(jié)果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
9.下列程序的輸出結(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));
}
10.以下程序運行后的輸出結(jié)果是______。
main()
{chara[]="Language",b[]="Programe";
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf("%c,*(p1+k));
}
二、單選題(10題)11.如果樹的的結(jié)點A有4個兄弟,而且B為A的雙親,則B的度為()。
A.3B.4C.5D.1
12.按照“先進(jìn)后出”原則組織數(shù)據(jù)的結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
13.有以下程序:#include<stdio.h>typedefstruct{intnum;charname[10];intscore;}PER;voidfun(PERx[]){intt;if(x[0].score>x[1].score){t=x[0].score;x[0].score=x[1].score;x[1].score=t;}}main(){PERs[2]={{1001,“zhang”,621},{1002,“wang”,585}};inti;fun(s);for(i=0;i<2;i++)printf(“%d,%s,%d,”,s[i].num,s[i].name,s[i].score);}程序的運行結(jié)果是()。A.1001,zhang,585,1002,wang,621,
B.1001,zhang,621,1002,wang,585,
C.1002,wang,585,1001,zhang,621,
D.1002,wang,621,1001,zhang,585,
14.以下敘述中錯誤的是()。
A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C
B.C語言編寫的函數(shù)都可以作為一個獨立的源程序文件
C.C語言編寫的每個函數(shù)都可以進(jìn)行獨立的編譯并執(zhí)行
D.一個C語言程序只能有一個主函數(shù)
15.設(shè)有一個二維數(shù)組A[m][n],假設(shè)A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每個元素占一個空間,問A[3][3](10)存放在什么位置()(腳注(10)表示用10進(jìn)制表示)。
A.688B.678C.692D.696
16.下列程序執(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
17.以下敘述中正確的是()。
A.結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組或指針變量
B.不同結(jié)構(gòu)體的成員名不能相同
C.結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型可以是本結(jié)構(gòu)體類型
D.結(jié)構(gòu)體定義時,類型不同的成員項之間可以用逗號隔開
18.
19.
20.
三、程序設(shè)計題(10題)21.請編寫函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。
例如,若二維數(shù)組中的數(shù)據(jù)為
13233343
14243444
15253545
則一維數(shù)組中的內(nèi)容應(yīng)該是132333431424344415253545。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
voidproc(int(*s)[103,int*b,int*n,intrain.intnn)
{}
voidmain
{
intarr[10][10]={{33,33,33,33),{44,44,44,44},
{55,55,55,55}),i,j;
inta[l00]={o),n=o;
printf("Thematrix:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%3d",arr[i][j]):
printf("\n");
}
proc(arr,a,&n,3,4):
printf("TheAarray:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]):
printf("\n\n");
}
22.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如,若二維數(shù)組中的值為13579299946999813570則函數(shù)值為61。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}
23.編寫函數(shù)fun,其功能是:實現(xiàn)兩個字符串的連接(不要使用庫函數(shù)strcat),即把p2所指的字符串連接到pl所指的字符串的后面。
例如,分別輸人下面兩個字符串:FirstString——SecondString
程序運行后的輸出結(jié)果是:FirstString————SecondString
注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
24.請編寫函數(shù)proc(),它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。sum=1-x+x2/2!-x3/31+…+(-l*x)n/n!例如,當(dāng)n=23,x=0.3時,函數(shù)值為0.740818。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。試題程序:
25.使用VC++2010打開觸文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是移動字符串中的內(nèi)容,移動的規(guī)則是把第1~m個字符,移動到字符串的最后,把第m+1到最后的字符移動到于符串的前面。例如,字符串中原有的內(nèi)容為“ABCDEFGHIJK”,m的值為3,移動后,字符串中的內(nèi)容應(yīng)該是“DEFGHUKABC”。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
26.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是實現(xiàn)B=A+AT,即將矩陣A加上A的轉(zhuǎn)置,結(jié)果存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。舉例如下。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>voidfun(inta[3][3],intb[3][3]){}voidmain(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; inti,j; system(“CLS”); fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%7d”,t[i][j]); printf(“\n”); }}
27.請編寫函數(shù)fun(),其功能是:找出2M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:
28.請編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值所在的下標(biāo),并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值。index存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。
試題程序:
29.編寫函數(shù)fun,其功能是:根據(jù)以下公式求π的值(要求精度0.0005,即某項小于0.0005時停止迭代)。
程序運行后,若輸入精度
0.0005,則程序應(yīng)輸出為3.14…
注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
30.請編寫一個函數(shù),用來刪除字符串中的所有空格。例如,輸入abcdefgh,則輸出為abcdefgh。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是將字符串s中位于偶數(shù)位置的字符或ASCII碼為奇數(shù)的字符放入字符串t中(規(guī)定第一個字符放在第0位中)。
例如:字符串中的數(shù)據(jù)為ADFESHDI,則輸出應(yīng)當(dāng)是AFESDI。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
#defineN80
/************found*************/
voidfun(chars,chart[])
{
inti,j=0;
for(i=0;i<strlen(s);i++)
/*********found*+************/
if(i%2=0||s[i]%2!=0)
t[j++]=s[i];
t[j]='\0';
}
main()
{
chars[N],t[N];
clrscr();
printf("\nPleaseenterstrings:");
gets(s);
fun(s,t);
printf("\nTheresultis:%s\n",t);
}
32.下列給定程序中,函數(shù)fun()的功能是:從字符串s中,刪除所有大寫字母'F'。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
voidfun(char*s)
{
inti,j;
/*************found**************/
for(i=j=0;s[i]!='0';i++)
if(s[i]!='F')
/*************found**************/
s[j]=s[i];
s[j]='\0';
}
main()
{
chars[80];
printf("\nEnterastring:");
gets(s);
printf("Theoriginalstring:");
puts(s);
fun(s);
printf("Thestringafterdeleted:");
puts(s);
printf("\n\n");
}
33.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)形參m的值(2≤m≤9),在m行m列的二維數(shù)組中存放如下所示規(guī)律的數(shù)據(jù),由main函數(shù)輸出。
例如,若輸入2|若輸入4
則輸出:|則輸出:
12|1234
24|2468
|36912
|481216
請改正程序函數(shù)中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
34.下列給定程序是建立一個帶頭結(jié)點的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點賦值。函數(shù)fun()的功能是:將單向鏈表結(jié)點(不包括頭結(jié)點)數(shù)據(jù)域為偶數(shù)的值累加起來,并作為函數(shù)值返回。
其累加和通過函數(shù)值返回main()函數(shù)。例如,若n=5,則應(yīng)輸出8.391667。
請改正程序中的錯誤,使它能得到正確結(jié)果。
[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdio.h>
#include<stdiib.h>
typedefstructaa
{
intdata;
structaa*next;
}NODE;
intfun(NODE*h)
{
intsum=0;
NODE*P;
/**********found**********/
p=h;
while(P->next)
{
if(p->data%2==0)
sum+=p->data;
/**********found**********/
p=h->next;
}
returnsum;
}
NODE*creatlink(intn)
{
NODE*h,*p,*s,*q;
inti,x;
h=p=(NODE*)malloc(sizeof(NODE));
for(i=1;i<=n;i++)
{
s=(NODE*)malloc(sizeof(NODE));
s->data=rand()%16;
s->next=p->next;
p->next=s;
p=p->next;
}
p->next=NULL;
returnh;
}
outlink(NODE*h,FILE*Pf)
{
NODE*p;
p=h->next;
fprintf(Pf,"\n\nTHELIST:\n\nHEAD");
while(P)
{
fprintf(Pf,"->%d",p->data);p=p->next;
}
fprintf(pf,"\n");
}
outresult(ints,FILE*pf)
{
fprintf(Pf,"\nThesumofevennumbers:%d\n",s);
}
main()
{
NODE*head;inteven;
head=creatlink(12);
head->data=9000;
outlink(head,stdout);
even=fun(head);
printf("\nTheresult:\n");outresult(even,stdout);
}
35.下列給定程序中,函數(shù)fun()的功能是:根據(jù)整型形參m的值,計算如下公式的值。
t=1-1/(2×2)-1/(3×3)-…-l/(m×m)
請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{doubley=1.O;
inti;
/*************found**************/
for(i=2;i<m;i++)
/************found**************/
y-=1/(i*i);
return(y);
}
main()
{intn=5;
clrscr();
printf("\nTheresultis%1f\n",fun(n));
}
36.給定程序MODll.C中函數(shù)fun的功能是:應(yīng)用遞歸算法求形參a的平方根。求平方根的迭代公式如下:
例如,a為2時,平方根值為:1.414214。
請改正程序中的錯誤,使它能得出正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
37.下列給定程序中,函數(shù)fun()的功能是根據(jù)整型形參m,計算如下公式的值。
y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)
例如:m中的值為5,則應(yīng)輸出0.838611。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{doubley=1.0;
/**********found*************/
intj=1;
inti;
for(i=2;i<=m;i++)
{
j=-1*j;
/****************found*******+******/
y+=1/(i*i);
}
return(y);
}
main()
{
intn=5;
clrscr();
printf("\nTheresultis%lf\n",fun(n));
}
38.給定程序MODll.C中函數(shù)fun的功能是:從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在1中。高位仍在高位,低位仍在低位。
例如,當(dāng)s中的數(shù)為:7654321時,t中的數(shù)為:7531。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
39.下列給定程序中,函數(shù)fun()的功能是:先從鍵盤上輸入一個3行3列的矩陣的各個元素的值,然后輸出主對角線元素之和。
請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
intfun()
{
inta[3][3],sum;
inti,j;
/*************found**************/
sum=1;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
/*************found**************/
scanf("%d",a[i][j]);
}
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf("Sum=%d\n",sum);
}
main()
{
fun();
}
40.給定程序MODll.C中函數(shù)fun的功能是:在字符串的最前端加入n個*號,形成新串,并且覆蓋原串。
注意:字符串的長度最長允許為79。
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
五、程序改錯題(2題)41.下列給定程序中,函數(shù)proc的功能是:從字符串str中,刪除所有大寫字母F。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>voidproc(char*str){inti,j;//****found****for(i=j=0;str[i]一0;i++)if(str[i]!=F)//****found****str[i]=str[i];str[j]=\0;}voidmain{charstr[80];printf("\nEnterastring:");gets(str);printf("Theoriginalstring:");puts(str);proc(str);printf("Thestringafterdeleted:");puts(str);printf("\n\n");}42.下列給定的程序中,函數(shù)proc()的功能是:為一個偶數(shù)尋找兩個素數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針傳回主函數(shù)。
請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、操作題(2題)43.以下fun函數(shù)的功能是在N行M列的整型二維數(shù)組中,選出一個最大值作為函數(shù)值返回,請?zhí)羁铡?設(shè)M,N已定義)
intfun(inta[N][M])
{inti,j,row=0,col=0;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][col])(row=i;col=j;)
return(_____);
}
44.請編寫一個函數(shù)fun(),它的功能是:比較兩個字符串的長度,(不得調(diào)用C語言提供的求字符串長度的函數(shù)),函數(shù)返回較短的字符串。若兩個字符串長度相等,則返回第1個字符串。
例如,輸入nanjing<CR>nanchang<CR>(<CR>為回車鍵),函數(shù)將返回nanjing。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
char*fun(char*S,char*t)
{
}
main()
{
chara[20],b[10],*p,*q;
inti;
printf("Inputlthstring:");
gets(a);
printf("Input2thstring:");
gets(b);
printf(“%s”,fun(a,b));
}
參考答案
1.1030010300解析:輸入語句使i=10,j=30,k沒有被重新賦值,仍為初值0。
2.b[i-1]=a[i]-a[i-1]
3.00解析:本題中的for循環(huán)共執(zhí)行了6次,每執(zhí)行一次將相應(yīng)i的值相乘,最后當(dāng)i=-1時停止循環(huán).該for循環(huán)執(zhí)行完后t的值為5*4*3*2*1*0=0,故最后輸出I的值為0。
4.關(guān)系或關(guān)系表關(guān)系或關(guān)系表解析:在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個關(guān)系.表中的每一列稱為一個屬性,相當(dāng)于記錄中的一個數(shù)據(jù)項,對屬性的命名稱為屬性名,表中的一行稱為一個元組,相當(dāng)于記錄值。
5.
6.順序存儲(順序方式存儲)順序存儲(順序方式存儲)解析:二分法查找對表的要求是有序的順序表,即第一要求是數(shù)據(jù)元素有序,第二要求是按順序方式存儲。
7.A
8.a=14a=14解析:逗號表達(dá)式的值是以逗號分隔的最后一個表達(dá)式的值。所以題目中的語句a=(3*5,a+4);就等價于a=a+4;。故本題輸出結(jié)果是a=14。
9.01234。01234。解析:函數(shù)fun1給數(shù)組a的每個元素賦值,fun2則輸出結(jié)果。
10.gae
11.C
12.B棧是線性表的一種,其插入和刪除運算都只在表的一端進(jìn)行。進(jìn)行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元素是最后被插入的元素,不是最后被刪除的元素,是按先進(jìn)后出的原則組織數(shù)據(jù)的。
13.A程序首先使用typedef定義一種新的類型名PER,它包含3種數(shù)據(jù)成員:整數(shù)num,字符數(shù)組name,整數(shù)score。main函數(shù)使用PER定義結(jié)構(gòu)體數(shù)組s,s包含兩個PER類型的元素。然后調(diào)用函數(shù)fun將數(shù)組s傳入。fun函數(shù)的功能是比較形參數(shù)組x的兩個元素的score值的大小。若第1個元素的score值大于第2個元素的score值,就使用臨時變量t將兩個元素的score值交換。由于621大于585且x等價于實參s的指針,因此實參s的兩個元素的score也會進(jìn)行交換,執(zhí)行完fun函數(shù)之后,for循環(huán)將兩個元素輸出。故本題答案為A選項。
14.C函數(shù)是指預(yù)先定義功能塊,其目的是提高程序的重用性。在C語言中函數(shù)的源程序,后綴名可以為C。C語言所編寫的函數(shù)都可以是一個獨立的源文件。一個C語言程序只能有一個主函數(shù)。C語言中編寫的函數(shù)不是每個都可以獨立地編譯和執(zhí)行的,因為C語言中程序的開始為主函數(shù),如果程序中沒有主函數(shù)則無法進(jìn)行編譯和執(zhí)行。
15.C
16.A本題考查函數(shù)的調(diào)用,從主函數(shù)傳遞到調(diào)用函數(shù)中,*a的值為0,因此當(dāng)執(zhí)行完調(diào)用函數(shù)后,b[0]的值為6。
17.A結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組、指針變量或者結(jié)構(gòu)體變量,選項A正確;不同結(jié)構(gòu)體成員名可以相同,選項B錯誤;結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型不能是本結(jié)構(gòu)體類型,選項C錯誤;結(jié)構(gòu)體定義時,類型不同的成員項之間使用分號隔開,選項D錯誤。本題答案為A選項。
18.A
19.D
20.B
21.\r\n\tvoidproc(int(*s)[10],int*b,int*n,intmm,intnn)
{
inti,j,k=0;
for(i=0;i<mm;i++)//i是表示其行的下標(biāo)
for(j=0;j<nn;j++)//j是表示其列的下標(biāo)
b[k++]=s[i][j];//把其放到b的一維數(shù)組中
*n=k;//把b數(shù)組的長度通過形參n傳回到主函數(shù)中
}
【解析】要將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,可以通過首先行循環(huán),然后列循環(huán)取出二維數(shù)組中的每一個元素,并將其放入一維數(shù)組中。最后,將一維數(shù)組的長度通過形參返回到主函數(shù)當(dāng)中。
22.1intfun(inta[M][N])2{3inti,j,sum=0;4for(i=0;i<m;i++)5for(j=0;j<n;j++)6if(i==o||i==M-1||j==0||j==N-1)/*只要下標(biāo)中有一個為?;騇-1或N-1,則它一定是周邊元素*/7sum=sum+a[i][j];/*將周邊元素相加*/8returnsum;9}本題采用逐一判斷的方式求數(shù)組周邊元素和。二維數(shù)組周邊元素的規(guī)律是,其兩個下標(biāo)中一定有一個是0或M-1或N-1。程序中循環(huán)語句用來控制數(shù)組的行和列,條件語句用來判斷數(shù)組元素是否為周邊元素。23.
voidfun(charpl[],charp2[])
in“,j;
for(i=0;pl[i]f=。、0’;i++);
for(j=0;p2[j]!=。、0’;j++)p1[i++]=p2[j];
p1[i],_。、0’;}
【考點分析】“
本題考查:不使用字符串函數(shù)實現(xiàn)字符串連接操作。通過for循環(huán)語句來完成,不要忘了最后需要加上字符串結(jié)束標(biāo)識‘、0’。
【解題思路】
本題用兩個循環(huán)完成操作,第1個循環(huán)的作用是求出第1個字符串的長度,即將i指到第1個字符串的末尾。第2個循環(huán)的作用是將第2個字符串的字符連到第l個字符申的末尾。最后在第l個字符串的結(jié)尾加上字符串結(jié)束標(biāo)識‘、0’。
24.
【解析】首先定義兩個變量分別用來存儲級數(shù)的和與每一項的分母。觀察級數(shù)的特點,其每一項的正負(fù)號是交替變化的。根據(jù)這些特點,每增加一項都需要變換符號。最后求出級數(shù)的和。
25.Voidfun(char*w,intm)chart;for(i=1;i<=m;i++)/*進(jìn)行m次的循環(huán)左移*/{t=w[o];for(j=1;w[j]!='\0';j++)/*從第2個字符開始以后的每個字符都依次前移一個字符*/w[j-l]=w[j];9w[j-l]=t;/*將第1個字符放到最后一個字符中*/10}}本題應(yīng)采用“循環(huán)左移”的算法。外層循環(huán)用于控制移動的字符的個數(shù),即需進(jìn)行多少次循環(huán)。內(nèi)層循環(huán)的作用是將第2個字符以后的每個字符依次前移一個位置,最后將第1個字符放到最后一個字符中。26.voidfun(inta[3][3],intb[3][3]){ inti,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉(zhuǎn)置,存放在矩陣b中*/}行列數(shù)相等的二維數(shù)組的轉(zhuǎn)置就是行列互換。即轉(zhuǎn)置后的第i行第j列正好對應(yīng)原矩陣的第j行第i列。本題使用兩層循環(huán)實現(xiàn)矩陣的轉(zhuǎn)置,并將計算結(jié)果存入矩陣b中,外層循環(huán)控制矩陣的行下標(biāo),內(nèi)層循環(huán)控制矩陣的列下標(biāo)。
27.
【解析】此題考查的是數(shù)組的查找算法。使用for循環(huán)嵌套完成對二維數(shù)組的遍歷。題目要求出最大值,則應(yīng)采用將所有元素遍歷一遍,逐個比較的方式完成。定義變量max,將第一個元素賦值max,然后通過for循環(huán)將元素逐個與max比較,遇到比max大的則賦值max,替換原有數(shù)據(jù),當(dāng)嵌套的for循環(huán)結(jié)束后,max即為二維數(shù)組中的最大值。
28.
【解析】本題考查的是for循環(huán)和指針變量。通過for循環(huán)實現(xiàn)對數(shù)組的遍歷,形參iilax和d都是指針型變量,所以引用它們指向的變量時要進(jìn)行指針運算。先有*max=a[0],在遍歷中如果遇到比max大的元素,則將a[i]賦值給max,下標(biāo)i賦值給*d。循環(huán)語句用來遍歷數(shù)組元素,然后通過條件語句比較數(shù)組元素找到最大值。
29.
【考點分析】
本題考查:迭代法求給定多項式的值。迭代算法:讓計算機(jī)對一組指令(或一定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值。需要注意變量的數(shù)據(jù)類型以及賦初值操作。
【解題思路】
首先應(yīng)該定義double類型變量,并且賦初值,用來存放多項式的某一項和最后的總和。從第2項開始以后的每一項都是其前面一項乘以n/(2*n+1),程序中用sl來表示每一項,s表示求和后的結(jié)果。需注意sl和S的初值都為1.0,因為循環(huán)變量從第二項開始累加。
30.
【解析】根據(jù)題目中要求刪除字符串中所有的空格,需要檢查字符串中的每一個字符。將不是空格的字符放入原來的字符串中,形成新的字符串。在新的字符串的末尾加上結(jié)束符。
31.(1)錯誤:voidfun(charschart[])正確:voidfun(char*schart[])(2)錯誤:if(i%2=0||s[i]%2!=0)正確:if(i%2=0||s[i]%2!=0)(1)錯誤:voidfun(chars,chart[])正確:voidfun(char*s,chart[])\r\n(2)錯誤:if(i%2=0||s[i]%2!=0)正確:if(i%2=0||s[i]%2!=0)解析:錯誤1:由于本題中函數(shù)的功能是對字符串進(jìn)行處理,而不是對單個字符進(jìn)行處理,因此,函數(shù)的參數(shù)應(yīng)為字符串指針。錯誤2:if語句中要用關(guān)系運算符,而不是賦值運算符。
32.(1)錯誤:for(i=j=0;s[i]!='0';i++)正確:for(i=j=0;s[i]!'\0';i++)(2)錯誤:s[j]=s[i]正確:s[j++]=s[i];(1)錯誤:for(i=j=0;s[i]!='0';i++)正確:for(i=j=0;s[i]!'\\0';i++)\r\n(2)錯誤:s[j]=s[i]正確:s[j++]=s[i];解析:錯誤1:本題考查是否掌握字符串的最后一個字符是結(jié)束標(biāo)志符'\\0'。錯誤2:在循環(huán)中,新字符串的下標(biāo)也要遞增,這樣最終產(chǎn)生一個新的字符串。
33.(1)voidfun(inta[][M]intm)(2)a[j][k]=(k+1)*(j+1);(1)voidfun(inta[][M],intm)(2)a[j][k]=(k+1)*(j+1);解析:本題中函數(shù)的功能是根據(jù)形參m的值(2≤m≤9),在m行m列的二維數(shù)組中存放有規(guī)律的數(shù)據(jù),規(guī)律就是,i和j代表二維數(shù)組的行和列,則a啪[k]=(k+1)*(j+1)。
34.(1)錯誤:while(p->next)正確:while(p!=NULL)或while(p)(2)錯誤:p=h->next;正確:p=p->next;(1)錯誤:while(p->next)\r\n正確:while(p!=NULL)或while(p)\r\n(2)錯誤:p=h->next;\r\n正確:p=p->next;解析:錯誤1:循環(huán)時要注意循環(huán)中止的條件是p!=NULL(最后一個結(jié)點為空,就像字符串的最后一個字符為結(jié)尾標(biāo)志符'\\0'一樣),while(p->next)使循環(huán)提前結(jié)束,所以應(yīng)改為while(p!=NULL)或while(p)。
錯誤2:當(dāng)累加完后,應(yīng)該把指針指向下一個結(jié)點的指針賦給p,而不是把頭指針指向的下一個結(jié)點賦給p,否則還會造成死循環(huán),所以p=h->next;應(yīng)該改為p=p->next;。
35.(1)錯誤:for(i=2;i<m;i++)正確:for(i=2;i<=m;i++)(2)錯誤:y-=1/(i*i);正確:y-=1.0/(i*i);(1)錯誤:for(i=2;i<m;i++)正確:for(i=2;i<=m;i++)\r\n(2)錯誤:y-=1/(i*i);正確:y-=1.0/(i*i);解析:該題是一道簡單的計算題,循環(huán)條件for(i=2;i<m;i++)中忽略了i=m時的一種情況,因為題目中i是從2到m的一個計算公式,y-=1/(i*i);的錯誤很明顯,是語法錯誤,由定義doubley=1.0可知,應(yīng)該是y-=1.0/(i*i);,而非y-=1/(i*i);。
36.(1)doublefun(doubleadoublex0)(2)if(fabs(x1-x0)>0.0O001)(1)doublefun(doublea,doublex0)(2)if(fabs(x1-x0)>0.0O001)解析:(1)主函數(shù)中“fun(x,1.0)”,x是double型變量,1.0是浮點數(shù),可知fun有兩個double型參數(shù),而第一標(biāo)識下“dounle”不是C語言關(guān)鍵字,所以應(yīng)將“doublefun(doublea,dounlex0)”改為“doublefun(doublea,doublex0)”。
(2)第二個標(biāo)識下的if語句是判斷進(jìn)行遞歸運算的條件,第二標(biāo)識下變量x0沒有定義,根據(jù)題意,這里是判斷x1和x0的差值的絕對值是否比0.00001大,所以第二個標(biāo)識下“ifi[fabs(x1-xo)>0.0
37.(1)錯誤:intj=1正確:doublej=1.0;(2)錯誤:y+=1/(i*i);正確:y+=j/(i*i);(1)錯誤:intj=1正確:doublej=1.0;\r\n(2)錯誤:y+=1/(i*i);正確:y+=j/(i*i);解析:錯誤1:為了做后面的除法運算,j要定義為實型數(shù),否則除得的結(jié)果將為整數(shù)。錯誤2:題中公式是加減相間的運算,通過來實現(xiàn)。
38.(1)voidfun(10ngslon
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東水利電力職業(yè)技術(shù)學(xué)院《高寒地區(qū)新型建筑材料》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東汕頭幼兒師范高等??茖W(xué)?!夺t(yī)學(xué)超聲影像學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東培正學(xué)院《專項技能與實踐2》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東農(nóng)工商職業(yè)技術(shù)學(xué)院《中學(xué)語文模擬教學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東茂名農(nóng)林科技職業(yè)學(xué)院《建筑模型》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東嶺南職業(yè)技術(shù)學(xué)院《高級英語綜合》2023-2024學(xué)年第一學(xué)期期末試卷
- 創(chuàng)業(yè)管理實戰(zhàn)(清華大學(xué))學(xué)習(xí)通測試及答案
- 【名師一號】2021年新課標(biāo)版歷史-必修3-雙基限時練23
- 《保定文化圖》課件
- 語文教育實習(xí)總結(jié)
- 肉牛肉羊屠宰加工項目選址方案
- 人大版《精算模型(第3版)》習(xí)題解答
- 7人英語短劇劇本(5篇)
- 員工滿意度中英文對照外文翻譯文獻(xiàn)
- 國有企業(yè)(投資類)戰(zhàn)略規(guī)劃管理暫行辦法模版
- GB/T 14211-2019機(jī)械密封試驗方法
- 人教版七年級上冊數(shù)學(xué)第一章有理數(shù)計算題訓(xùn)練(無答案)
- 拱壩講義(河海大學(xué)水工建筑物課件)
- 新能源發(fā)電技術(shù)教學(xué)大綱
- 三進(jìn)兩聯(lián)一交友先進(jìn)個人 范文(5篇)
- 微生物在農(nóng)業(yè)上的應(yīng)用技術(shù)課件
評論
0/150
提交評論