版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021年山東省濟(jì)南市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)測試卷(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________一、2.填空題(10題)1.下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為[]。
2.數(shù)據(jù)庫設(shè)計(jì)分為以下6個(gè)設(shè)計(jì)階段:需求分析階段、______、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段、運(yùn)行和維護(hù)階段。
3.下面程序的功能是:從輸入的正整數(shù)中選3個(gè)數(shù)進(jìn)行輸出,要求這些數(shù)都是2的倍數(shù),請(qǐng)?zhí)羁铡?/p>
main()
{inta,i=0;
scanf("%d",&A);
do
{if(a>0&&a%2==0)
{printf("%d\n",A);i++;}
if(i!=3)
{scanf("%d",&A);}
}while(());
}
4.閱讀下面程序段,則執(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;}
5.下面的程序?yàn)?個(gè)整型變量A、B、C、D、E、F輸入整數(shù),并按從大到小的順序輸出整數(shù)及其所對(duì)應(yīng)的變量名。例如,輸入的數(shù)為3、2、5、7、4、6,則輸出的形式為:D(7)F(6)C(5)E(4)A(3)B(2)。
#include<stdio.h>
intA,B,C,D,E,F(xiàn);
struct
{
charn;
【】;
}tb1[]={{'A',&A},{'B',&B},{'C',&c},{'D',&D),{'E',&E},{'F',&F}},t;
main()
{
inti,j;
for(i=0;i<6;i++)scanf("%d",【】);
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
if(【】)
{
t=tb1[j];
tb1[j]=tb1[j+1];
tb1[j+1]=t;
}
for(i=0;i<6;i++)printf("%c(%d)",tb1[i].n,*tb1[i].p);
printf("\n");
}
6.下列程序的運(yùn)行結(jié)果是______。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",-i);
}
7.以下程序運(yùn)行后的輸出結(jié)果是【】。
voidfun(intx,inty)
{x=x+y;Y=x-y;x=x-y;
printf(“%d,%d”,x,y);}
main()
{intx=2,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
}
8.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三角,形式如下
1
11
121
1331
14641
其構(gòu)成規(guī)律是:
(1)第0列元素和主對(duì)角線元素均為1
(2)其余元素為其左卜方和正上方元素之和
(3)數(shù)據(jù)的個(gè)數(shù)每行遞增1
請(qǐng)將程序補(bǔ)充完整。
#defineN6
voidyanghui(intx[N][N])
{inti,j;
x[0][0]=1;
for(i=1;j<N;i++)
{x[i][0]=______=1;
for(j=1;j<i;j++)
x[i][j]=______;
}
}
9.執(zhí)行以下“for(i=1;i++<=4;i++);”語句后,變量i的值是()。
10.下列程序的輸出結(jié)果是16.00,請(qǐng)?zhí)羁眨?/p>
main()
{
inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
}
二、單選題(10題)11.設(shè)有如下定義和語句:FILE*fp;intdata[10],i,n;fp=fopen(“abc.txt”,“r”);文本文件abc.txt中的數(shù)據(jù)為58192765190,其中第1個(gè)數(shù)據(jù)代表的是它后面數(shù)據(jù)的個(gè)數(shù)。若文件已正確打開,則以下程序段中能將文件的最后5個(gè)數(shù)據(jù)依次正確讀入數(shù)組data[0]~data[4]中的是()。
A.fscanf(fp,“%d”,&n);for(i=0;i<n;i++)fscanf(fp,“%d”,&data[i]);
B.i=0;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}
C.for(i=0;!feof(fp);i++)fscanf(fp,“%d”,&data[i]);
D.i=0;fscanf(fp,“%d”,&n);i++;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}
12.在下面的二維數(shù)組定義中,正確的是()。
A.inta[5][];
B.inta[][5];
C.inta[][3]={{1,3,5},{2}};
D.inta[](10);
13.下列函數(shù)的功能是
set(s,t)
{char*s,*t;
while((*s)&&(*t)&&(*t++==*s++));
return(*s-*t);
}A.A.求字符串的長度
B.比較兩字符串的大小
C.將字符串s復(fù)制到字符串t中
D.將字符串s連接到字符串t后
14.若函數(shù)中有定義語句:inta;,則()。
A.系統(tǒng)將自動(dòng)給a賦初值為0B.系統(tǒng)將自動(dòng)給a賦初值一lC.這時(shí)a中的值無意義D.這時(shí)a中無任何值
15.下列程序的輸出結(jié)果是()。#include<stdio.h>voidp(int*x){printf("%d¨,++*x);}voidmain(){inty=3;p(&y);}A.3B.4C.2D.5
16.帶頭結(jié)點(diǎn)的單鏈表head為空的判定條件是()。
A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL
17.
18.該程序試圖通過指針p為變量n讀入數(shù)據(jù)并輸出,但程序有多處錯(cuò)誤,以下語句正確的是()#includeMain(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);print("outputn:");print("%d\n",p);A.intn,*p=NULL;
B.*p=&n;
C.scanf("%d",&p)
D.printf("%d\n",p);
19.在下列排序算法中,在待排序的數(shù)據(jù)表已經(jīng)為有序時(shí),花費(fèi)時(shí)間反而最多的是()
A.希爾排序B.堆排序C.冒泡排序D.快速排序
20.下列敘述中正確的是()。
A.在賦值表達(dá)式中,賦值號(hào)的左邊既可以是變量,也可以是任意表達(dá)式
B.實(shí)型變量中允許存放整型數(shù)
C.若a和b類型相同,在執(zhí)行賦值a=b后,b中的值將放入a中,但b中的值不變
D.在C程序中,求余算符“%”兩邊的類型相同時(shí)才能進(jìn)行運(yùn)算
三、程序設(shè)計(jì)題(10題)21.請(qǐng)編寫函數(shù)proc(),其功能是:將str所指字符串中下標(biāo)為偶數(shù)的字符刪除,串中剩余字符形成的新串放在t所指數(shù)組中。
例如,當(dāng)str所指字符串中的內(nèi)容為abcdefg,則在t所指數(shù)組中的內(nèi)容應(yīng)是bdf。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。
試題程序:
22.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。程序中將m個(gè)人的成績存放在score數(shù)組中,請(qǐng)編寫函數(shù)fun(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、60、70、80、90時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10、20、30、40。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:
23.規(guī)定輸入的字符串中只包含字母和*號(hào)。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號(hào)。編寫函
數(shù)時(shí),不得使用c語言提供的字符串函數(shù)。
例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******刪除*后字符串中的內(nèi)容應(yīng)當(dāng)
是:ABCDEFG。
注意:部分源程序在文件PROGl.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
24.請(qǐng)編寫函數(shù)proc(),它的功能是計(jì)算:s=(1-1n(1)-1n(2)-1n(3)-…-1n(m))2s作為函數(shù)值返回。在C語言中可調(diào)用log(n)函數(shù)求1n(n)。log函數(shù)的引用說明是doublelog(doublex)。例如,若m的值為10,則proc()函數(shù)值為l98.934454。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
25.請(qǐng)編寫函數(shù)proc(),它的功能是計(jì)算:s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5在C語言中可調(diào)用log(n)函數(shù)求1n(n)。例如,若n1的值為30,則proc()函數(shù)值為8.640500。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試題程序:
26.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),它的功能是求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之和的平方根,并將其作為函數(shù)值返回。例如,若n為1000時(shí),程序輸出應(yīng)為s=153.909064。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:27.請(qǐng)編寫函數(shù)voidproc(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)、不為1的各整數(shù),并按從大到小的順序放在PP所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過形參n返回。
例如,若x的值為30,則有3個(gè)數(shù)符合要求,它們是15,5,3。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。
試題程序:
28.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是找出成績最低的學(xué)生記錄,通過形參將其返回主函數(shù)(規(guī)定只有一個(gè)最低分)。已給出函數(shù)的首部,請(qǐng)完成該函數(shù)。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#include<string.h>3#include<conio.h>4#include<stdlib.h>5#defineN106typedefstructss7{charnum[10];8ints;9}STU;10fun(STUa[],STU*s)11{1213}14voidmain()15{16FILE*wf;17STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m18inti;19system("CLS");20printf("*****Theoriginaldata*****\n");21for(i=0;i<N;i++)22printf("No=%sMark=%d\n",a[i],num,a[i].s);23fun(a,&m);24printf("****TheResult****\n");25printf("Thelowest:%s,%d\n",m.num,m.s);26/*************************/27wf=fopen("out.dat'*,"w");28fprintf(wf,"%s,%d",m.num,m.s);29fclose(wf);30/*************************/29.請(qǐng)編寫函數(shù)proc(),其功能是:計(jì)算并輸出下列多項(xiàng)式的值。
S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+m)
例如,若主函數(shù)從鍵盤給m輸入20后,則輸出為s=1.904762。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。
試題程序:
30.規(guī)定輸入的字符串中只包含字母和*號(hào)。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號(hào)。編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)maini)函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(chara){voidmain{chars[81];print{("Enterastring:\n");gets(s):fun(S);printf("Thestringafterdeleted:\n");puts(s);}四、2.程序修改題(10題)31.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。
例如,若m=2000,則應(yīng)輸出:0.000160。
請(qǐng)改正程序中的語法錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
32.下列給定程序中,函數(shù)fun()的功能是:輸出M行N列整數(shù)方陣,然后求兩條對(duì)角線上的各元素之和,返回此和數(shù)。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
#defineM5
/**********************************/
ihtfun(intn,intxx[][])
{inti,j,sum=0;
printf("\nThe%dx%dmatrix:\n",M,M);
for(i=0;i<M;i++)
{for(j=0;j<M;j++)
/**********************************/
printf("%4f",xx[i][j]);
printf("\n");
}
for(i=0;i<n;i++)
sum+=xx[i][i]+xx[i][n-i-1];
return(sum);
}
main()
{intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},
{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};
clrscr();
printf("\nThesumofallelementson2
diagnalsis%d",fun(M,aa));
}
33.給定程序MODll.C中函數(shù)fun的功能是:應(yīng)用遞歸算法求形參a的平方根。求平方根的迭代公式如下:
例如,a為2時(shí),平方根值為:1.414214。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
34.下列給定程序中,函數(shù)fun()的功能是:給一維數(shù)組a輸入任意4個(gè)整數(shù),并按如下的規(guī)律輸出。例如輸入1,2,3,4,程序運(yùn)行后輸出以下方陣:
4123
3412
2341
1234
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意;不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序;
#include<stdio.h>
#defineM4
/*******************************/
voidfun(inta)
{inti,j,k,m;
printf("Enter4number:");
for(i=0;i<M;i++)scanf("%d",&a[i]);
printf("\n\nTheresult:\n\n");
for(i=M;i>0;i--)
{k=a[M-1];
for(j=M-1;j>0;j--)
/**********************************/
a[j]=a[j+1];
a[0]=k;
for(m=0;m<M;m++)printf("%d",a[m]);
printf("\n");
}
}
main()
{inta[M];
fun(a);printf("\n\n");
}
35.下列給定程序是建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)數(shù)據(jù)域賦值。函數(shù)fun()的作用是求出單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedefstructaa
{intdata;
structaa*next;
}NODE;
/*************found**************/
fun(NODE*h)
{intmax=-1;
NODE*p;
p=h->next;
while(p)
{if(p->data>max)
max=p->data;
/*************found**************/
p=h->next;
}
returnmax;
}
outresult(ints,FILE*pf)
{fprintf(pf,"\nThemaxinlink:%d\n
",s);}
NODE*creatlink(intn,intm)
{NODE*h,*p,*s,*q;
inti,x;
h=p=(NODE*)malloc(sizeof(NODE));
h->data=9999;
for(i=1;i<=n;i++)
{s=(NODE*)malloc(sizeof(NODE));
s->data=rand()%m;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,"\nTheLIST:\n\nHEAD");
while(p)
{fprintf(pf,"->%d",p->data);
p=p->next;}
fprintf(pf,"\n");
}
main()
{NODE*head;intm;
clrscr();
head=creatlink(12,100);
outlink(head,stdout);
m=fun(head);
printf("\nTheRESULT:\n");outresult
(m,stdout);
}
36.下列給定程序中,函數(shù)fun()的功能是:根據(jù)輸入的3個(gè)邊長(整型值),判斷能否構(gòu)成三角形:若能構(gòu)成等邊三角形,則返回3,若是等腰三角形,則返回2,若能構(gòu)成三角形則返回1,若不能,則返回0。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<math.h>
intfun(inta,intb,intc)
{if(a+b>c&&b+c>a&&a+c>b)
{if(a==b&&b==c)
/*************found**************/
return1;
elseif(a==b||b==c||a==c)
return2;
/*************found**************/
elsereturn3;
}
elsereturn0;
}
main()
{inta,b,c,shape;
printf("\nInputa,b,c:");
scanf("%d%d%d",&a,&b,&c);
printf("\na=%d,b=%d,c=%d\n",a,b,c);
shape=fun(a,b,c);
printf("\n\nTheshape:%d\n",shape);
}
37.給定程序MODll.C中函數(shù)。fun的功能是:從3個(gè)紅球,5個(gè)白球,6個(gè)黑球中任意取出8個(gè)作為一組,進(jìn)行輸出。在每組中,可以沒有黑球,但必須要有紅球和白球。
組合數(shù)作為函數(shù)值返回。正確的組合數(shù)應(yīng)該是15。程序中i的值代表紅球數(shù),j的值代表白球數(shù),k的值代表黑球數(shù)。
請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
38.下列給定程序中,函數(shù)fun()的功能是:讀入一個(gè)字符串(長度<20),將該字符串中的所有字符按ASCII碼降序排序后輸出。
例如:輸入dafhc,則應(yīng)輸出hfdca。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,敢不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
/*************found**************/
intfun(chart[])
{
charc;
inti,j;
for(i=0;i<strlen(t)-1;i++)
for(j=i+1;i<strlen(t);j++)
if(t[i]<t[j])
{
c=t[j];
/*************found**************/
t[i]=t[i++];
t[i]=c;
}
}
main()
{
chars[81];
clrscr();
printf("\nPleaseenteracharacter
string:");
gets(s);
printf("\n\nBeforesorting:\n%S",s);
fun(s);
printf("\nAftersortingdecendingly:\n
%s",s);
}
39.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。
例如,若m中的值為:5,則應(yīng)輸出:1.463611。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
40.給定程序MODll.C中函數(shù)fun的功能是:將長整型數(shù)中每一位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。
例如,當(dāng)s中的數(shù)為:87653142時(shí),t中的數(shù)為:7531。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
五、程序改錯(cuò)題(2題)41.由N個(gè)有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,下列給定程序函數(shù)fun()的功能是:利用折半查找法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標(biāo)值;否則,返回-1。折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍low和high(10w%high)。然后用m與中間位置(mid)上元素的值進(jìn)行比較。如果m的值大于中間位置元素的值,則下一次的查找范圍落在中間位置之后的元素中;反之,下一次的查找范圍落在中間位置之前的元素中,直到low>;high,查找結(jié)束。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
42.下列給定程序中函數(shù)fun的功能是:逐個(gè)比較P.q所指兩個(gè)字符串對(duì)應(yīng)位置上的字符,并把ASCIl值大或相等的字符依次存放到C所指的數(shù)組中,形成一個(gè)新的字符串。
例如,若主函數(shù)中a字符串為“aBCDeFgH”,b字符串為“Abed”,則C中的字符串應(yīng)為“aBcdeFgH”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
六、操作題(2題)43.以下fun函數(shù)的功能是在N行M列的整型二維數(shù)組中,選出一個(gè)最大值作為函數(shù)值返回,請(qǐng)?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.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的記錄已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是找出成績最高的學(xué)生記錄,通過形參將其返回主函數(shù)(規(guī)定只有一個(gè)最髙分)。已給出函數(shù)的首部,請(qǐng)完成該函數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>#defineN10typedefstructss/*定義結(jié)構(gòu)體*/{charnum[10];ints;}STU;fun(STUa[],STU*s){}voidmain(){STUa[N]={{“A01”,81},{“A02”,89},{“A03”,66},{“A04”,87},{“A05”,77},{“A06”,90},{“A07”,79},{“A08”,61},{“A09”,80},{“A10”,71}},m;inti;system(“CLS”);printf(“****Theoriginaldata****”);for(i=0;i<N;i++)printf(“No=%sMark=%d\n”,a[i].num,a[i].s);fun(a,&m);printf(“****THERESULT****\n”);printf(“Thetop:%s,%d\n”,m.num,m.s);}
參考答案
1.33解析:軟件系統(tǒng)結(jié)構(gòu)圖的寬度:整體控制跨度(最大模塊數(shù)的層)的表示。
2.概念設(shè)計(jì)階段(數(shù)據(jù)庫概念設(shè)計(jì)階段)概念設(shè)計(jì)階段(數(shù)據(jù)庫概念設(shè)計(jì)階段)
3.i<3
4.NN解析:函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實(shí)現(xiàn)的是在字符'A'的ASCII碼值上加上一個(gè)常數(shù),使之變成另一個(gè)ASCII碼值,從而輸出字符。
5.int*ptb1[i].p*tb1[j].p<*tb1[j+1].p
6.33解析:分析程序運(yùn)行過程,第1次循環(huán):s=s+i*i=0+1*1=1,i=2;第2次循環(huán):s=s+i*i=1+2*2=5,i=3;第3次循環(huán):s=s+i*i=5+3*3=14,i=4;循環(huán)條件不成立輸出i,--i使i的值減1,軸出結(jié)果為3。
7.32233,2,2,3解析:主函數(shù)中首先定義了整型變量x和y,并分別給它們賦初值為2和3,接著調(diào)用fun()函數(shù),fun()函數(shù)把實(shí)參x和y的值傳給形式參數(shù)x和y,實(shí)參和形參不再有聯(lián)系。在fun()函數(shù)中,通過運(yùn)算使x和y的值交換過來,所以fun()函數(shù)中的輸出結(jié)果是“3,2”。fun()函數(shù)調(diào)用返回輸出x和y依然是原來的x和y,為“2,3”。原因是變量作為形參傳值的,對(duì)形參的修改并不影響對(duì)應(yīng)的實(shí)參。所以最后輸出為3,2,2,3。
8.x[i][i]x[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]解析:本題考核的知識(shí)點(diǎn)是函數(shù)與算法結(jié)合在一起的應(yīng)用。在程序中用兩重循環(huán)。在第一層循環(huán)中將每行的第0列賦值為1,對(duì)角線上的元素賦值為1顯然在第一個(gè)空中應(yīng)該填入對(duì)角線上的元素即x[i][i]在第2重循環(huán)中給每行其他元素賦值,而在每行中除了第0列和對(duì)角線的元素外其他元素為其對(duì)應(yīng)的上一行中同列和同列的前一列的元素相加,所以在第二個(gè)空中應(yīng)該填入x[i-1][j-1]+x[i-1][j]。
9.6
解析:本題,已知結(jié)果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a(bǔ)、b,代入,得到16.0=9/2+2*x/1.1+1/2。因?yàn)閍=9,a是整型,所以9/2的值在沒有進(jìn)行類型轉(zhuǎn)換時(shí),等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。
11.A由題意可知,文件abc.txt中存放了6個(gè)整數(shù)。其中第1個(gè)表示后續(xù)數(shù)據(jù)的個(gè)數(shù)。要將最后5個(gè)數(shù)據(jù)讀入數(shù)組data中,需要讀取數(shù)據(jù)的個(gè)數(shù)為5,所以首先調(diào)用fscanf函數(shù),將5讀入整型變量n中;接著通過for循環(huán),i分別取值0~n-1,調(diào)用fscanf函數(shù)將n個(gè)整數(shù)讀入data[0]~data[n-1]中。故本題答案為A選項(xiàng)。
12.C
13.B在本題中,從題目給出的四個(gè)選項(xiàng)我們就可以知道,程序是對(duì)兩個(gè)字符串進(jìn)行操作。下面將具體分析程序。
程序首先定義兩個(gè)字符型的指針變量s和t,從后面的程序中不難看出這兩個(gè)指針變量應(yīng)該用來對(duì)兩個(gè)字符串進(jìn)行操作處理。用循環(huán)來對(duì)字符串進(jìn)行處理時(shí),循環(huán)繼續(xù)的條件是指針變量s和指針變量t所指向的結(jié)果值不為0,且兩結(jié)果值相等。很顯然,指針變量s和指針變量t所指向的結(jié)果值不為0,說明兩字符串沒有結(jié)束,只有結(jié)束時(shí)才為0,而結(jié)果值相等說明兩字符相等,如果不等,循環(huán)則結(jié)束,此時(shí)程序?qū)⒁蠓祷夭坏仍刂g的差值,從差值的正負(fù)關(guān)系我們可以判斷出哪個(gè)元素更大。綜上所述,程序段的作用是用來比較兩字符串的大小。因此,本題正確的答案選B。
14.C用int方法定義變量時(shí),編譯器僅為變量開辟存儲(chǔ)單元,并沒有在存儲(chǔ)單元中放任何值,此時(shí)變量中的值是無確定的,稱變量值”無意義”。因此,本題正確答案為c。
15.B本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。在函數(shù)調(diào)用時(shí),形參是指向?qū)崊⒌闹羔樧兞?,則printf的執(zhí)行結(jié)果為++x;x=3,則3+1=4。
16.B
17.B
18.A選項(xiàng)B)的正確寫法應(yīng)為p=&n;選項(xiàng)C)的正確寫法應(yīng)為scanf("%d",p);選項(xiàng)D)的正確寫法應(yīng)為print("%d\\n",*p)。
19.D
20.D選項(xiàng)A,在賦值表達(dá)式中,賦值號(hào)的左邊只能是變量或者是代表某個(gè)存儲(chǔ)單元的表達(dá)式,不能是任意表達(dá)式,右邊也不得出現(xiàn)表達(dá)式;選項(xiàng)8中,整型變量中只能存放整型數(shù),但實(shí)型變量中能存放實(shí)型數(shù),也能存放整型數(shù);選項(xiàng)C,表達(dá)式a=b的意思是把變量b的值賦給變量a,從而覆蓋a中原來值;選項(xiàng)D,要求取余運(yùn)算符"%"兩邊的類型均為整型。
21.
【解析】題目要求將下標(biāo)為偶數(shù)的字符刪除,其余字符放在新的字符數(shù)組t中。首先取出字符串str中下標(biāo)為奇數(shù)的字符,將其賦值給新的字符串t,最后用ˊ\0ˊ作為字符串結(jié)束的標(biāo)志。
22.1intfun(intscore[],intm,intbe-low[])2{3inti,j=0;4floatav=0.0;5for(i=0;i<m;i++)6av=av+score[i]/m;/*求平均值*/</m;i++)<m;i++)7for(i=0;i<m;i++)gif(score[i]</m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>8低于平均分,則將此分?jǐn)?shù)放入below數(shù)::組中*/</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>9below[j++]=score[i];</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>10returnj;/*</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>返回低于平均分的人數(shù)*/U}要計(jì)算低于平均分的人數(shù),首先應(yīng)該求出數(shù)組score中各元素的平均值。然后通過for循環(huán)語句和if條件語句找出低于平均值的分?jǐn)?shù)。該題第1個(gè)循環(huán)的作用是求出平均值av,第2個(gè)循環(huán)的作用是找出數(shù)組score中低于平均值的成績記錄并存入below數(shù)組中。</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)
23.
【考點(diǎn)分析】
要?jiǎng)h除字符串中所有*號(hào)需要用循環(huán)語句遍歷字符串,用
判斷語句判斷字符是否為*號(hào),由此可以決定該程序應(yīng)使用循
環(huán)判斷結(jié)構(gòu)。
【解題思路】
24.
【解析】首先我們應(yīng)定義一個(gè)變量來表示其和,另一個(gè)來表示其項(xiàng)數(shù),然后通過循環(huán),求得其差值,最后把和的平方返回到主函數(shù)中。
25.
【解析】由題目中所給表達(dá)式可知,表達(dá)式的值為m項(xiàng)表達(dá)式的和然后開平方??梢允紫韧ㄟ^m次循環(huán)求得m項(xiàng)表達(dá)式的和,然后將其和開平方并返回到主函數(shù)當(dāng)中。
26.1doublefun(intn)doublesum=0.0;inti;for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;returnsqrt(sum);本題考查算術(shù)運(yùn)算的算法。首先利用一個(gè)for循環(huán)判斷小于n且能同時(shí)被3和7整除的整數(shù),并將滿足條件的整數(shù)累加到sum。之后調(diào)用Sqrt()函數(shù)計(jì)算sum的平方根,并將其作為函數(shù)的返回值返回。
27.
【解析】按照題目中要求,求出能整除x且不是偶數(shù)的各整數(shù)。首先判斷小于等于整數(shù)x的所有奇數(shù)是否能被x整除,將能被x整除的奇數(shù)放入數(shù)組pp中。最后將數(shù)組pp中元素的個(gè)數(shù)返回到主函數(shù)中。
28.1fun(STUa[],STU*s)2{3inti;4*s=a[0];/*假設(shè)第1個(gè)元素值最小*/5for(i=0;i<N;i++)/*如果在循環(huán)的過程中再發(fā)現(xiàn)比第1個(gè)元素值更小的元素則賦給*s*/6if(s->s>a[i].s)7*s=a[i];8}題目要求找出結(jié)構(gòu)體數(shù)組元素中的最小值。假設(shè)數(shù)組中第1個(gè)元素值最小,即*s=a[0];,如果在循環(huán)的過程中發(fā)現(xiàn)比第1個(gè)元素值更小的,就將指針s指向該元素,直到找到值最小的元素。另外,本題還涉及結(jié)構(gòu)體中的指向運(yùn)算符。
29.
【解析】由題目中所給公式可知,多項(xiàng)式的值為m項(xiàng)的和。多項(xiàng)式每一項(xiàng)的分子均為1,第i項(xiàng)的分母為1~i所有整數(shù)的和。根據(jù)這個(gè)特點(diǎn),通過m次循環(huán)求出多項(xiàng)式的每一項(xiàng)并求和。最后將多項(xiàng)式的和返回到主函數(shù)中。
30.voidfun(char*a){inti,j=0;for(i=0;a[i]!=\0;i++)if(a[i]!=*)a[j++]=a[i];//若不是要?jiǎng)h除的字符*則保留a[j]=\0;//最后加上字符串結(jié)束符\0}【解析】此題是刪除字符串中的星號(hào)。思路是通過for循環(huán)完成對(duì)字符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中星號(hào)前的位置,“if(a[i]!=*)”“a[i++]=a[i]”,最后返回主函數(shù)將刪除*后的字符串輸出即可。
31.(1)doublefun(intm)(2)for(i=100;i<=m;i+=100)(1)doublefun(intm)(2)for(i=100;i<=m;i+=100)解析:本題中函數(shù)的功能是計(jì)算公式的值。關(guān)于題干公式的求解過程,首先根據(jù)題干中給出的公式推出每一項(xiàng)之間的關(guān)系,求出每一項(xiàng)的表達(dá)式,然后求得數(shù)列的值。
32.(1)錯(cuò)誤:intfun(ihtnintxx[][])正確:intltm(ihtmintr.x[][M])(2)錯(cuò)誤:printf("%4ff'xx[i]fj]);正確:printf("%4d"xx[i][j]);(1)錯(cuò)誤:intfun(ihtn,intxx[][])正確:intltm(ihtmintr.x[][M])\r\n(2)錯(cuò)誤:printf('%4f,f\',xx[i]fj]);正確:printf('%4d',xx[i][j]);解析:該題錯(cuò)誤比較隱蔽,一般的C語言上機(jī)考試很少涉及printf順數(shù)中的錯(cuò)誤,在這里,我們只要明白“d”和“f”的區(qū)別就OK了。格式字符d表示:以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(正整數(shù)不輸出符號(hào));格式字符f表示;以小數(shù)形式輸出單、雙精度,隱含輸出6位小數(shù)。
33.(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是浮點(diǎn)數(shù),可知fun有兩個(gè)double型參數(shù),而第一標(biāo)識(shí)下“dounle”不是C語言關(guān)鍵字,所以應(yīng)將“doublefun(doublea,dounlex0)”改為“doublefun(doublea,doublex0)”。
(2)第二個(gè)標(biāo)識(shí)下的if語句是判斷進(jìn)行遞歸運(yùn)算的條件,第二標(biāo)識(shí)下變量x0沒有定義,根據(jù)題意,這里是判斷x1和x0的差值的絕對(duì)值是否比0.00001大,所以第二個(gè)標(biāo)識(shí)下“ifi[fabs(x1-xo)>0.0
34.(1)錯(cuò)誤:voidfun(inta)正確:intfim(int*a(2)錯(cuò)誤:a[j]=a[j+1];正確:a[j]=a[j-1];(1)錯(cuò)誤:voidfun(inta)正確:intfim(int*a\r\n(2)錯(cuò)誤:a[j]=a[j+1];正確:a[j]=a[j-1];解析:其實(shí),該題中題目信息已經(jīng)告訴我們按“如下規(guī)律”,這就需要去認(rèn)真分析矩陣的“規(guī)律”了,在第1列中,數(shù)列以4開始遞減,直至1,在該數(shù)列中,行和列都是遞減循環(huán)排列,所以題目在循環(huán)的時(shí)候有循環(huán)條件for(i=M;i>0;i--)和for(j=M-1;j>0;j--),當(dāng)然每次循環(huán)結(jié)束后在列中的賦值語句應(yīng)該是a[j]=a[j-1];。
35.(1)錯(cuò)誤:fun(NODE*h)正確:intfun(NODE*h)(2)錯(cuò)誤:p=h->next;正確:p=p->next;(1)錯(cuò)誤:fun(NODE*h)正確:intfun(NODE*h)\r\n(2)錯(cuò)誤:p=h->next;正確:p=p->next;解析:本題考查的這種鏈表的數(shù)據(jù)結(jié)構(gòu)中,必須利用指針變量才能實(shí)現(xiàn)。即一個(gè)結(jié)點(diǎn)中應(yīng)包含一個(gè)指針變量,用它存放下一結(jié)點(diǎn)的地址。建立單向鏈表的一般步驟是:建立頭指針一建立第一個(gè)節(jié)點(diǎn)一頭指針指向第一個(gè)節(jié)點(diǎn)一建立第二個(gè)節(jié)點(diǎn)一第一個(gè)節(jié)點(diǎn)的指針域指向第二個(gè)節(jié)點(diǎn)→……→最后一個(gè)節(jié)點(diǎn)指向NULL。本題重點(diǎn)是:了解鏈表的基本思想和相關(guān)算法,其實(shí)考試時(shí)的程序根本沒有書上的難。在這里我們要說,重點(diǎn)理解有關(guān)鏈表插入及
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專屬2024年商品銷售代表協(xié)議版
- 專業(yè)倉儲(chǔ)及配送服務(wù):2024協(xié)議范本版A版
- 科技驅(qū)動(dòng):公司未來發(fā)展
- 2025年度彩鋼房拆除與綠色建筑認(rèn)證服務(wù)合同范本4篇
- 2025年度影視基地場地借用及拍攝制作合同4篇
- 2025年度科研實(shí)驗(yàn)場地使用權(quán)出讓及研發(fā)支持服務(wù)合同4篇
- 二零二五年度抽沙船租賃及海洋環(huán)境監(jiān)測協(xié)議3篇
- 2025年度新型工業(yè)園區(qū)土地使用權(quán)交易合同范本4篇
- 2025年智能工廠設(shè)備租賃居間合同示范文本4篇
- 2025年度長租公寓運(yùn)營管理服務(wù)合同4篇
- 領(lǐng)導(dǎo)溝通的藝術(shù)
- 發(fā)生用藥錯(cuò)誤應(yīng)急預(yù)案
- 南潯至臨安公路(南潯至練市段)公路工程環(huán)境影響報(bào)告
- 綠色貸款培訓(xùn)課件
- 大學(xué)生預(yù)征對(duì)象登記表(樣表)
- 主管部門審核意見三篇
- 初中數(shù)學(xué)校本教材(完整版)
- 父母教育方式對(duì)幼兒社會(huì)性發(fā)展影響的研究
- 新課標(biāo)人教版數(shù)學(xué)三年級(jí)上冊(cè)第八單元《分?jǐn)?shù)的初步認(rèn)識(shí)》教材解讀
- (人教版2019)數(shù)學(xué)必修第一冊(cè) 第三章 函數(shù)的概念與性質(zhì) 復(fù)習(xí)課件
- 重慶市銅梁區(qū)2024屆數(shù)學(xué)八上期末檢測試題含解析
評(píng)論
0/150
提交評(píng)論