




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022年遼寧省阜新市全國計算機等級考試
C語言程序設計真題(含答案)
學校:班級:姓名:考號:
一、2.填空題(10題)
1.能把計算機處理好的結果轉換成為文本、圖形、圖像或聲音等形式并
輸送出來的設備稱為【】設備。
2.以下程序的輸出結果是【】。
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
)
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10);inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf("%d\n",s);
3.數(shù)據(jù)庫保護分為:安全性控制并發(fā)性控制和數(shù)據(jù)的恢復。
4.下述函數(shù)用于統(tǒng)計一行字符中的單詞個數(shù),單詞之間用空格分隔。
word_num(str)
charstr[];
{int,num=O,word=O;
for(i=0;str[i]!=[];i++)
if([]=")wprd=0
elseif(word=O)
word=l:
[];
)
return(num);
)
5.關系模型的完整性規(guī)則是對關系的某種約束條件,包括實體完整性、
和自定義完整性。
6.用下面語句調用庫函數(shù)malloc,使單精度型指針p指向具有40個字
節(jié)的動態(tài)存儲空間,請?zhí)羁铡?/p>
p=(float*)【];
7.如下語句printf("%c\n",B+40);在執(zhí)行后的輸出結果是【】。
8.數(shù)據(jù)的邏輯結構有線性結構和兩大類。
9.若輸入thistestterminal,以下程序的輸出結果為:tenninaltestthiso
請?zhí)羁铡?/p>
#defineMAXLINE20
【】
{inti;
char*pstr[3],str[3][MAXLINE];
for(i=0;i<3;++)pstr[i]=str[i];
for(i=0;i<3;i++)scanf("%s",pstr[l]);
sort(pstr);
for(i=0;i<3;i++)prntf("%s",pstr[i]);
)
sort([])
char*pstr[3];
{inti,j;
char*p;
for(i=0;i<3;i++)
for(j=i+l;j<3;j++)
if(strcmp(*(pstr+i,*(pstr+j)>0
{p=*(pstr+i);
*(pstr+i=[1
*(pstr+j)=p;
)
1O.\13農內存中占1個字節(jié),”\12”在內存中占_____個字節(jié)。
二、單選題(10題)
11.有以下程序段:
intx=3;
do
{printf("%d",x-=2);)
while(!(-x));
其輸出結果是()。
A.lB.30c.i-2D.死循環(huán)
12.已知a、b、c為整型變量,若從鍵盤輸入5〈空格>6(空格>7<
回車〉,使a的值為5,b的值為6,c的值為7,則下列選項中正確的
輸入語句是()o
A.scanf("%3d%3d%3d",a,b,C);
B.scanf("%d%d%d",a,b,C);
C.scanf("%d%d%d",&a,&b,&c);
D.scanf("%d%d%d",&a,&b,&c);
13.有以下程序
#include<stdio.h>
main()
{charcLc2;
cl=A+8-4
c2=A+8-5;
printf("%C,%d\n”,cl,c2);
)
已知字母A的ASCII碼為65,程序運行后的輸出結果是()OA.E,69B.D,69C.E,
DD.輸出無定值
14.以下敘述中錯誤的是()。
A.形參可以是常量、變量或表達式
B.實參可以是常量、變量或表達式
C.實參的類型應與形參的類型賦值兼容
D.實參的個數(shù)應與形參的個數(shù)一致
15.排序方法中,從未排序序列中依次取出元素與已排序序列中的元素進
行比較,將其放入已排序序列的正確位置上的方法,稱為0。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
16.下列敘述中錯誤的是()。
A.C語言程序必須由一個或一個以上的函數(shù)組成
B.函數(shù)調用可以作為一個獨立的語句存在
C.若函數(shù)有返回值,必須通過return語句返回
D.函數(shù)形參的值也可以傳回給對應的實參
17.設有以下語句:charstrl[]="string"mstr2[8],*str3,*str4=="string";
則不是對庫函數(shù)的正確調用。
A.strcpy(strl,"HELL01");
B.strcpy(str2,"HELLO2");
C.strcpy(str3,"HELLO3");
D.strcpy(str4,"HELLO4");
18.若主調用函數(shù)類型為double,被調用函數(shù)定義中沒有進行函數(shù)類型說
明,而return語句中的表達式類型為float型,則被調函數(shù)返回值的類型
是0。
A.int型Bfoat型C.double型D.由系統(tǒng)當時的情況而定
19.依次插入序列(50,72,43,85,75,20,34,45,65,30)后建立的二叉搜索樹中,
查找元素30要進行()次元素間的比較。
A.4B.5C.7D.10
20.若有定義語句“doublea,*p=&a;",下列敘述中錯誤的是()。
A.定義語句中的“*”是一個間址運算符
B.定義語句中的“*”是一個說明符
C.定義語句中的“p”只能存放double類型變量的地址
D.定義語句中*p=&a”把變量a的地址作為初值賦給指針變量p
三、程序設計題(10題)
21.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:
除了字符串前導的*號之外,將串中其他*號全部刪除。在編寫函數(shù)時,
不得使用c語言提供的字符串函數(shù)。
例如,字符串中的內容為:****A*BC*DEF*G*******,刪除后,字符
串中的內容應當是:
****ABCDEFG。
注意:部分源程序在文件PROG1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括
號中填入你編寫的若干語句。
#include<stdin,h>
voidfun(rhjir?■)
main()
Ichar481),voidNONO();
printff*Enterasiring:\nN);getn(B);
fun(w)3
printf("Thesiringafterdeleted:\n");puts(?);
NONO()?
voidNONO<)
{/?本函數(shù)用于打開文件,輸入數(shù)據(jù),調用函數(shù),輸出數(shù)據(jù),關閉文件,?/
FILE?in,?oul;
inti;chars[81Jj
in=fopen(*in.dat*rM);
outxfopcn("out.dat";
M>=01i<10
(?canftin.■);
fun(i)i
fpnnlf(out.H%?\nw.f);
(cloec(in);
lcloBe(oul);
22.請編寫函數(shù)proc(),函數(shù)的功能是求出二維數(shù)組周邊元素之和,作
為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。
利■.&二中的■力.
01234
597<S
4383G
1S<■7
則函數(shù)值為59o
注意:部分源程序給出如下。
請勿改動main。函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的花括
號中填入所編寫的若干語句。
試題程序:
3torludwVM&ihh>
sindudeVCOCIMX.b>
8in>:ludeV.UIK).h>
SdefineM4
■drfineNS
innpfuc(mia
voidIBMH(》
iftlMvM](N]■■(IO.L].3,4)?($?9?T.4.5》,
<4」.8?3?6〉.(S.)
"CI*S>>i
pfimtf(-ThrUCXIMMU<Uu0八ft*)i
(oHimOi?*Mil-?)
Clot(J-0jjVN.j++1
pvintlC*K6dt
prind<*\ne)i
ywproc(M)1
pniuK*\nTheAMA:*.y)i
pnntf<*\n*>■
23.
假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能
是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。例如,
若字符串中的內容為****a*bc*def*g****,刪除后,字符串中的內容則
應當是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main
()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的花括號中填入
所編寫的若干語句。試題程序:
FmcludcVadio.h>
&iocludrVcotioo*h>
voidproc<ciMir??lr>
voidnuiin()
rtuif;i
prmd<*Enter■string
g?M<Mr>a
proc<Mr>i
pnntR*TlwRtrtncaiicrd<Wiedt\nk);
&Ut><Mf11]
24.請編寫函數(shù)proc(),其功能是:將str所指字符串中下標為偶數(shù)的字
符刪除,串中剩余字符形成的新串放在t所指數(shù)組中。
例如,當str所指字符串中的內容為abcdefg,則在t所指數(shù)組中的內容
應是bdfo
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的花括
號中填入所編寫的若干語句。
試題程序:
iorlude”nt<fiib.h'a
stnciudkVcooio*
=inclu3rV>idioi
sinclude<,tnn*?
voidpf<ocXciwif?*tr?ciuivd])
VOfedIVMItfll)
clwr>tr{loo]?i[lOO]?
*€*!*?(*】i
pnntf<*\nPle?M*enter?tr%n<Mr*")i
?CMI"°V■"?Mr).
proc(wlf
pruxf(*\nTberesult*?t)t
25.請編寫一"個函數(shù)voidproc(char*tt,intpp[]),統(tǒng)計在tt字符串中"a”
到“z”26個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。例如,
當輸入字符串abcdefghxyzabcde“e后,程序的輸出結果應該是:
222233110000000000000000111o注意:部分源程序給出如下。請勿改
動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的花括號
中填入所編寫的若干語句。試題程序:
/include<comio.
fiincludeVstdio.h2>
#ihdudeVzdlibcb>
voidprac<char?tt?mipp[])
voedMMitfiiI
char
tntbb(M.?ki
?yutetnCi
pnntf(w\nPWe*center?charMrtagti
?can”?%,??&ir).
proc<?ir?bl>>i
lor(kw0ik<2<i-)
pnnlf(sKd-?bbc1lj)i
prmi((*\n*)i
26.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.Co程序中將m個人的成績存放
在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將低于平均分的人數(shù)
作為函數(shù)值返回,將低于平均分的分數(shù)放在below所指的數(shù)組中。
例如,當score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、60、70、80、
90時,函數(shù)返回的人數(shù)應該是4,below中的數(shù)據(jù)應為10、20、30、
40o注意:部分源程序在文件progl.c中。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
1#include<conio.h>
2finclude<stdio.h>
3#include<string.h>
4#include<stdlib-h>
5intfun(intscore[],intm,int
belowf])
6{
7
8}
9voidmain()
W(
11FILE*wf;
12int1,n,below[9];
13intscore[9]={10,20,30,40,
50,60,70,80,90};
14system(MCLSM);
15n-fun(score,9,below);
16printf(M\nBelowtheaverage
scoreare:w);
17for(i=0;i<n;i4-+)
18printf(M%dbelow[i]);
19/*************"**/
20wf=fopenCout.dat;
21for(i=0;i<n;i++)
Wn
22fprintf(wfz%dzbelow[i]);
23fclose(wf);
24/*****************/
25)
27.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能
是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字
符串函數(shù)。
例如,字符串中的內容為“****A*BC*DEF*G****",刪除后,字符串
中的內容應當是“ABCDEFG”。
注意:部分源程序給出如下。
請勿改動maini)函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號
中填入你編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(chara)
(
voidmain
(
chars[81];
print{("Enterastring:\n");
gets(s):
fun(S);
printf("Thestringafterdeleted:\n");
puts(s);
)
28.
學生的記錄由學號和成績組成,M名學生的數(shù)據(jù)已在主函數(shù)中放人結構
體數(shù)組stu中,請編寫函數(shù)proc(),其功能是:按分數(shù)的高低排列學生
的記錄,高分在前。注意:部分源程序給m如下。請勿改動main。
函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc()的花括號中填入所編
寫的若干語句。試題程序:
的ioclmlrVadtckh'?>
/drluM1M1(
fetrurt
rharnutnclOji
ttil
STRKf.
wedprociSTKEV?[])
mi
STRECti
forG-hYM“++)/?州■通法技
樽岸“
fcx(j?O“VM-I“??》
11(101八接分散的育伍林**4
立記立?鼻分在■?/
<—必].山]■山?1].?[>+1]-Z
voidmain<)
STREl*MMLM]-(<aGA005*?a5I.{*GA003
7??
(;A0024?^l?<eGAo04e?S5)?(*GAoor?9l
?GAOO7F2GA00B*.61)?(*GA0(MM.B71?
s9M
GAoi$.as<;A013*t>lh(*GA0l2.64l.
*GA0Ua.9lGAOirJSGAO|7M,64I.
?GAOIL.64GAO16e.72)h
ifilii
pcoc(?tn>?
pnfM(("Tbe<UitaiirrMinY、1),
for<i**0iYM*i++)
ilCiKl32*0)
〃與行■出4個?生id0
printfC*\ns>?
pnni(<*H?Kid*?*tu(iXnum??iw(i]v?)?
pn>M(<
29.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存入xx
所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。
例如,若輸入17,則應輸出:46891012141516。
注意:部分源程序在文件PROG1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括
號中填入你編寫的若干語句。
#int*!tidr<etdin.h>
voidfun(intm.int*k.int>x[])
main()
inttn.n.w;100];
voidNONO();
printf(*\nPleasrenteranintegernumltrrbrtwrrn10AFMI100:*);
H%dw.&n);
fun(n.Am,zz);
printf(,w\n\nTl>erearf%(I110n-printrnumberslr?sthan%rl;",m.n);
f?<(n?0;n<rn:n-?-*)
pnntff"\n%4<l".a[n');
N()NO();
NOXO()
八請在此函數(shù)內打開文件.輸入測試數(shù)據(jù).凋畝Gm函數(shù).
輸出故據(jù).關閉文件.?/
inim,ntm100J;
FILE?rf.?wf;
M
rf-fi>prn(in.<iul"f**r");
wf=fopcn(**(Hit.<lutMw")
f^nnfCff,"%d".&n);
fun(n.&m.zz)?
MM
fpnntf(wfa%d\n%d\ntm
fer(n=0;n<m:n??1
fprintf(wf,u[n])t
fcl<?c(rf);
fc!ose(wf);
30.
請編寫一個函數(shù)proc(),它的功能是:求出一個4xN整型二維數(shù)組中
最大元素的值,并將此值返回調用函數(shù)。注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)proc的花
括號中填入所編寫的若干語句。試題程序:
=N4
sincludeli>
mtpfoc<mi*[]]、」)
voidm*in()
mt?rrU][N[-{L37J1.5.S3?2?<2.-32?9?
81??於
printf(9nujt*%d\n*?proc<arr))i
四、2.程序修改題(10題)
31.下列給定程序中,函數(shù)fun()的功能是找出100?n(n不大于1000)之
間百位數(shù)字加十位數(shù)字等于個位數(shù)字的所有整數(shù),把這些整數(shù)放在s所
指的數(shù)組中,個數(shù)作為函數(shù)值返回。
請改正程序中的錯誤,使它能得到正確結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<stdio.h>
#defineN100
intfun(int*s,intn)
inti,j,k,a,b,c;
j=0;
for(i=100;i<n;i++)
/*************found***********/
k=n;
a=k%10;
k/=10;
b=k%10;
c=k/10;
if(a==b+c)
/************found***'
s[j]=i;
)
returnj;
)
main()
(
inta[N],n,num=0,i;
do
printf("\nEntern(<=1000):”);
scanf("%d",&n);
while(n>1000);
num=fun(a,n);
printf("\n\nTheresult:\n");
for(i=0;i<num;i++)
printf("%5d",a[i]);
printf("\n\n");
)
32.下列給定程序中,函數(shù)fun()的功能是:將m(lSmS10)個字符串反著
連接起來,組成一個新串,放入pt所指字符串中,例如把3個串DEG,
ac,df反著串聯(lián)起來,結果是dfacDEG。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main。函數(shù),不得增行或者刪行,也不得改變程序的結
構!
試題程序:
#include<conio.h>
#include<string.h>
#include<stdio.h>
voidfun(charstr[][10],intm,char*pt)
intk,q,i,j=0;
for(k=m;k>0;k—)
q=strlen(str[k]);
j+=q;
for(i=0;i<q;i++)
pt[i]=str[k][i];
Pt+=q;
pt[O]=O;
}
/*************found**************/
pt=j;
)
main()
{intm,h;
chars[10][10],p[120];
clrscr();
printf("\nPleaseenterm:");
scanf("%d",&m);
printf("\nPleaseenter%dstring:\n",m);
gets(s[O]);
for(h=0;h<m;h++)
gets(s[h]);
fun(S,m,p);
printf("/nTheresultiS:%s\n",p);
33.下列給定程序中函數(shù)fun()的功能是:計算n!。例如,給n輸入5,
則輸出120.000000。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<stdio.h>
#include<conio.h>
doublefun(intn)
{doubleresult=1.0;
/*************found**************/
ifn==0
return1.0;
while(n>l&&n<170)
/*************found**************/
result*=n—
returnresult;
)
main()
{intn;
printf("InputN:");
scanf("%d"&n);
printf("\n\n%d!=%lAn\n",n,fun(n));
)
34.下列給定程序中,函數(shù)fun()的功能是:根據(jù)輸入的3個邊長(整型
值),判斷能否構成三角形:若能構成等邊三角形,則返回3,若是等腰
三角形,則返回2,若能構成三角形則返回1,若不能,則返回0。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。
試題程序:
#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("\nlnputa,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);
35.下列給定程序中,函數(shù)fun()的功能是:先從鍵盤上輸入一個3行3
列的矩陣的各個元素的值,然后輸出主對角線元素之積。
請改正函數(shù)fun。中的錯誤,使它能得出正確的結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<stdio.h>
intfun()
(
inta[3][3],mul;
inti,j;
mu1=1;
for(i=0;i<3;i++)
(
/*************found*************/
for(i=0;i<3;j++)
scanf("%d”,&a[i][j]);
)
for(i=0;i<3;i++)
/*************found*************/
mul=mul*a[i][j];
printf("Mul=%d\n",mul);
)
main()
(
fun();
)
36.N個有序整數(shù)數(shù)列已放在一維數(shù)組中,給定下列程序中,函數(shù)fun()
的功能是:利用折半查找算法查找整數(shù)m在數(shù)組中的位置。若找到,則
返回其下標值:反之,則返回-1。
折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍:low和
high(low<high),然后把m與中間位置(mid)中元素的值進行比較。如果
m的值大于中間位置元素中的值,則下一次的查找范圍放在中間位置之
后的元素中;反之,下次查找范圍落在中間位置之前的元素中。直到low
>high,查找結束。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<stdio.h>
#defineN10
/*************found*********************/
voidfun(inta[],intm)
{intlow—0,high=N-l,mid;
while(low<=high)
{mid=(low+high)/2;
if(m<a[mid])
high=mid-1;
/*************found*********************/
elseif(m>=a[mid])
low=mid+l;
elsereturn(mid);
}
return(-l);
)
main()
{inti,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m;
printf("a數(shù)組中的數(shù)據(jù)如下:");
for(i=0;i<N;i++)printf("%d",a[i]);
printf("Enterm:");scanf("%d",&m);
k=fun(a,m);
if(k>=0)printf("m=%d,index=%d\n",m,k);
elseprintf("Notbefound!\n");
37.下列給定的程序中,函數(shù)fun()的功能是;將s所指字符串中出現(xiàn)的
n所指字符串全部替換成t2所指字符串,所形成的新的字符串放在w所
指的數(shù)組中。在此處,要求tl和t2所指字符串的長度相同。例如:當
S所指字符串中所指的內容為abcdabfab,tl所指字符串中的內容為ab,
t2所指字符串中的內容為99時,結果在w所指的數(shù)組中的內容應為
99cd99f99。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
/*************found**************/
intfun(char*s,char*tl,char*t2,char*w)
inti;char*p,*r,*a;
strcpy(w,s);
while(*w)
{p=w;r=tl;
/*************found**************/
while(r)
if(*r==*p){r++;p++;)
elsebreak;
if(*r=='\0')
{a=w;r=t2;
/*************found**************/
while(*r){*a=*r;a++;r++}
w+=strlen(t2);
elsew++;
main()
{chars[100],tl[100],t2[100],w[100];
clrscr();
printf("\nPleaseenterstringS:");
scanf("%s",s);
printf("\nPleaseentersubstringtl:");
scanf("%s",tl);一
printf("\nPleaseentersubstringt2:");
scanf("%s",t2);,
if(strlen(tl)==strlen(t2))
(
fun(s,tl,t2,w);
printf("\nTheresultis:%s\n",w);
}
elseprintf("Error:strlen(t2)\n");
)
38.給定程序M0D11.c中函數(shù)fun的功能是;由形參給定n個實數(shù),
輸出平均值,并統(tǒng)計在平均值以上(含平均值)的實數(shù)個數(shù)。
例如,n=8時,輸入:193,199,195,673,195,757,196,051,196,092,
196,596,196,579,196.763
所得平均值為:195.838745,在平均值以上的實數(shù)個數(shù)應為:5
請改正程序中的錯誤,使程序能輸出正確的結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!
1Ifinclude<stdio.h>
2?intfun(doublex(],intn)
4;/…………found…?……
5;intj.doublexa-0.0;
6;for(j?0;j<n;
7!xa?,x(j)/n;
8;printf(wave-%f\nw,xa);
9;for(j?0;j<n;j4+)
10;/*********??*found*
11;if(x[j]■>xa)
12IC++;
13ireturnc;
14
15main()
(doublex(100)-(193.199,195.673,
195.757,196.051.196.092,196.596.
196.579,196.763};
HR
printf(%d\nrfun(x,8));
39.給定程序MOD11.C中函數(shù)fun的功能是:先將s所指字符串中的
字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序連
接到t所指串的后面。
例如:當S所指的字符串為:“ABCDE”時,則t所指的字符串應為:
“EDCBAABCDE”。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!
*include<stdio.h>
2?include<string.h>
3voidfun(char*srchar*t)
4(
5/?**??***??**found***??**????*/
6int1;
7si?strlen(s);
8for(i-0;i<sl;i++)
9/…………"und…………/
10t[i]?s(sl-i];
11for(i-0;i<sl;i++)
12t■s[i];
13t[2*sl]-^O1;
14)
15main()
16{chars[100],t[100];
17printf("\nPleaseenterstring
Mw
s:);scanf(%s°rs);
18fun(srt);
19printf("Theresult
20
40.給定程序MOD11.C中函數(shù)fun的功能是:找出100至n(不大于
1000)之間三位數(shù)字相等的所有整數(shù),把這些整數(shù)放在s所指數(shù)組中,個
數(shù)作為函數(shù)值返回。
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!
1;tinclude<stdio.h>
2!IdefineN100
3intfun(int*s,intn)
4{int
5j?0;
6for(i?100;i<n;i++){
7/found*************/
8k?n;
9a-k%10;k/-10;
10b?k%10;k/-10;
11/found?
12c-k%10
13if(a—b&&a?-c)s[
14}
15returnj;
16}
17main()
18{inta[N],n,num-0ri;
19do
20{printf(w\nEntern(<*1000):
www
);scanf(%dr&n);}
21while(n>1000);
22num-fun(a,n);
23printf(w\n\nTheresult:\n");
nw
24for(i?0;i<num;i++)printf(%5dr
a[i));
25printf(w\n\nw);
26
五、程序改錯題(2題)
41.下列給定程序中,函數(shù)proc的功能是:讀入一個字符串(長度
<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。
例如,輸入opdye,則應輸出deopy。
請修改程序中的錯誤,使它能得到正確結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結
構。
試題程序:
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
//****f^)und****
intproc(charstr[])
(
charc;
unsignedi,j;
for(i=0;i<strlen(str)-1;i++)
for(j=i+l;j<strlen(str);j++)
if(str[i]>str[j])
(
c=str[j]:
//****^)und****
str[j]=str[i++];
str[i]=c;
)
)
voidmain
(
charstr[81];
system("CLS");
printf("\nPleaseenteracharacter
string:");
gets(str);
printf("\n\nBeforesorting:\n%s”,str);
proc(str);
printf("\nAftersortingdecendingly:\n
%s",str);
)
42.
由N個有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,下列給定程序函數(shù)fun
()的功能是:利用折半查找法查找整數(shù)m在數(shù)組中的位置。若找到,
返回其下標值;否則,返回一1。折半查找的基本算法是:每次查找前先
確定數(shù)組中待查的范圍low和high(10w%high)o然后用m與中間位
置(mid)上元素的值進行比較。如果m的值大于中間位置元素的值,
則下一次的查找范圍落在中間位置之后的元素中;反之,下一次的查找
范圍落在中間位置之前的元素中,直到low>;high,查找結束。請改
正程序中的錯誤,使它能得出正確的結果。注意:不要改動main()
函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:
Sinclude<ntdio.h>
3defineN10
//?????found?■??
voidfun(intatJ?intm)
{intlow=0.high=iI.mid:
whilr(1ow<=high>
{mtd=(low+high)/2:
if(m<a[mid3)
high=mid-I:
//????found????
cUcif(m>“mid]》
low,:mid4-1s
elsercturn<mid);
returnC-1)?
r
voidmain()
finti.a[N]-{-3.4.7,9.13.45?67.89.100.
180>.k,m,
printf(V數(shù)組中的數(shù)據(jù)如下:?),
for(i=0giV、gi++)
printfC*%d*??Lij)t
print£(MEntermJ八
wanf("%d"?&m)i
k^3fun(A.m>i
if(k>?0)
printf(*m=%d?index=%d\n"?m.k>i
ekeprintf(*Notbefound!\n")i
六、操作題(2題)
43.請編寫函數(shù)fun,它的功能是:計算并輸出n(包括n)以內能被5或9
整除的所有自然數(shù)的倒數(shù)之和。
例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=0.583333o注
意:要求n的值不大于100o
部分源程序在文件PROG1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括
號中填入你編寫的若干語句。
1:finclude<stdio.h>
doublefun(intn)
3
4
6NONO()
7(/?請在此函數(shù)內打開文件,輸入測試數(shù)據(jù).
調用fun的數(shù),輸出數(shù)據(jù),關閉文件.?/
8FILE*wf;intnfi;doubles;
9rf?fopenLin.dat"."r");
Rw
10wf?fopen(1?out.datr"w);
11for(i?0;i<10;(
12fscanf(rtf"W,sn);
13s■fun(n);
14fprintf(wf/s
15
16fclose(rf);fclose(wf);
17
18main()
(intn;doubles;
20printf(w\nlnputn:H);scanf("%dw,
£n);
s*fun(n);
H
22printf\nra)
23NONO();
24
44.下列給定程序中,函數(shù)fun()的功能是:在字符串的最前端加入n個
*號,形成新串,并且覆蓋原串。
注意:字符串的長度最長允許79。
請改正函數(shù)fun。中的錯誤,使它能得出正確的結果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。
試題程序;
#include<stdio.h>
#include<strzng.h>
#include<conio.h>
/*****************found***************/
voidfun(chars[],intn)
chara[80],*p;
inti;
/*****************found***************/
S=p;
for(i=0;i<n;i++)a[i]='*';
do
{a[i]=*p;
/*****************found***************/
i++;
}while(*p);
a[i]=0;
strcpy(s,a);
)
main()
{intn;chars[80];
clrscr();
printf("\nEnterastring:");gets(s);
printf("\nThestring\%s\n",s);
printf("\nEntern(numberof*):");scanf("%d",&n);
fun(s,n);
printf("\nThestringafterinster:\%s\n",s);
參考答案
1.輸出輸出
2.2222解析:在main函數(shù)中,調用reverse函數(shù)將b數(shù)組中的前8個成
員進行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},然后再
執(zhí)行for循環(huán)結構,將b[6],b⑺…b[9]的值相加,結果為22O
3.完整性控制完整性控制
4.\0'或0或NULLstr[i]num++或num=num+l或mum+=l\\0'或0
或NULL\r\nstr[i]\r\nnum++或num=num+l或mum+=l解析:觀察題
目要求,可以知道以下幾點:
①for循環(huán)的結束條件應當是:str[i]已是字符串的最后一個字符;
②str[i]代表字符串str中的第i+1個字符;
③整型變量num的值是要記錄的單詞的個數(shù)。
C語言中規(guī)定字和會串的最后一個字和會是一個隱含的字符串結束符
所以在題中第一個空中應填寫“\\0”題中第二個空應填寫“str[i/,
以判斷當前位置的字符是否為空格;題中第三個空中應當填寫“num++”,
通地變量num的加1累加到字符串中的單詞個數(shù)。
5.參照完整性參照完整性
6.malloc(40)malloc(40)解析:庫函數(shù)malloc()只有一個參數(shù),就是所需
分配內存的字節(jié)數(shù),然后返回一個void*指針。本題要求分配40個字節(jié),
故直接調用malloc(40)就可以了。
7.jj解析:在C程序中的字符量可參與任何整數(shù)運算。
8.非線性結構非線性結構
9.main()pstr*(pstr+j)
10.22解析:,\\13,:表示八進制數(shù)13表示的ASCII字符,是一個字符,
占一個字節(jié);而“W12”是個字符串,除了八進制數(shù)12表示的ASCII字符
占一個字節(jié)外,還有在字符串的末尾加上串結束標志所以共有2
個字節(jié)。
11.C
本題考查do-while循環(huán),先執(zhí)行dO輸出的x的值為L接著執(zhí)行
while語句,此時--x的值為0,x也為0,而非。為1,循環(huán)成立,接
著執(zhí)行do輸出X值為-2,執(zhí)行--X后,表達式為-2,而!(--X)為0,退
出循環(huán)。
12.C解析:通過scanf()函數(shù)從鍵盤讀入數(shù)據(jù)時,接收參數(shù)的使用變量的
地址值,所以選項A和B是錯誤的。選項D要求輸入時以逗號間隔,
故按題目要求的輸入方式不能正確讀取到3個數(shù),也是錯誤的。所以正
確答案是C。
13.A
本值輸出兩個值,%c為輸出一個字母,0/4(1輸出一個數(shù)字。"",的
ASCII碼為65,再加4之后為69,也就是字母E,所以本題A正確。
14.A函數(shù)中,形參必須是變量,實參可以是常量、變量或表達式,選項
A錯誤,選項B正確;實參的個數(shù)和類型要與形參一致,選項C、D正
確。本題答案為A選項。
15.C
16.D形參是定義函數(shù)時由用戶定義的。實參是函數(shù)調用時,主調函數(shù)為
被調函數(shù)提供的原始數(shù)據(jù)。在C語言中,實參向形參傳送數(shù)據(jù)的方式是
“值傳遞'是單向傳遞。故本題答案為D選項。
17.C解析:C語言中:strcpy(stl,st2);,其兩個參數(shù)均為字符指針或字符
數(shù)組,選項C中的目的串指針str3沒有指向具體有效的存儲單元,故是
錯誤的調用。
18.A
19.B
20.A變量定義語句“doublea,*p=&a;",是一個指針運算符,而非間
址運算符。故本題答案為A選項。
21.
程序設計題解析:
【考點分析】
本題考查:指針型變量定義;while循環(huán)語句;if語句條件表達式;字
符串結束標識,\\0,
【解題思路】
函數(shù)fun的功能:除了字符串前導的*號之外,將串中其他。號全部刪
除。解答本題,(1)定義一個臨時指針P,初始指向原串首地址;(2)利
用循環(huán)語句把字符串前導*號拷貝到原串;(3)繼續(xù)移動指針,把串中和
串尾的非*號字符拷貝到原串;(4)為修改后的字符串賦結束字符
【解題寶典】
要刪除字符串中的指定字符,通常采用保留非指定字符的方法??梢?/p>
將非指定字符保留在原串,即將需要保留的字符從原串的起始位置重
新賦值;也可以保留到新串,即新建一個字符串,存放要保留的字
符。
22.
【解析】要求二維數(shù)組周邊元素之和,首先應該判斷數(shù)組中的每一個
元素是否是周邊元素。找出所有的周邊元素后求和,返回給主函數(shù)。
周邊元素的下標特點為行或列的下標為?;騈—1。根據(jù)此特點,找出
所有的周邊元素然后求和。
23.
【解析】題目中要求將字符串中的前導*號全部刪除,首先將指針P移
動到第一個不是*的字符,將指針P之后的字符放入原來的字符串中,
并為新的字符串添加結束符。
24.
“ndeher?mr?chAr
mi?ir>?/('lifttt71?
mt
ior<i-IJVIH〃,?i-2?我示力?ar
心總下缽為今數(shù)的
■中
心]■、o\J國力[■字料率,因包包國用、。作
力婚4癡上
【解析】題目要求將下標為偶數(shù)的字符刪除,其余字符放在新的字符
數(shù)組t中。首先取出字符串str中下標為奇數(shù)的字符,將其賦值給新的
字符串t,最后用‘\0'作為字符串結束的標志。
25.
【解析】由函數(shù)proc()可知,數(shù)組PP中存放26個字母各自出現(xiàn)的次數(shù),
初始化為0。然后判斷字符串tt中每一個字符,每檢查一個字符,將數(shù)
組PP中相應的元素加1。
26.1intfun(intscore[],intm,intbe-low[])
2{
3inti,j=0;
4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年美容師高級護理技能測試卷:美容師皮膚診斷與護理方案設計試題
- 貨物買賣合同糾紛起訴書
- 勞動合同:國有企業(yè)改革與發(fā)展
- 職業(yè)培訓機構師資租賃合同范本大全
- 建筑項目施工合同書范本
- 企業(yè)采購供應鏈管理合同模板
- 技術交流與合作保密合同
- 醫(yī)療器械銷售代表勞動合同
- 單位企業(yè)與個人勞務派遣服務合同
- 白酒代理銷售合同
- 二年級下冊課文(五)16雷雨-雷雨-學習任務單
- 網頁設計基礎ppt課件(完整版)
- 2023高中物理步步高大一輪 第十章 專題強化十八 帶電粒子在有界勻強磁場中的運動
- 供應商管理控制流程圖
- 四年級下冊健康成長教案(共26頁)
- 義務教育語文課程標準(2022年版)
- 初中物理公式總結大全(最新歸納)
- 小學四年級《雞兔同籠》優(yōu)秀獲獎公開課分析
- 不均勻系數(shù)和曲率系數(shù)自動升程計算(升級版)
- 《弟子規(guī)》(精美圖片版)(課堂PPT)
- GB 12268-2012 危險貨物品名表(高清版)
評論
0/150
提交評論