![2023年安徽省宣城市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)真題(含答案)_第1頁(yè)](http://file4.renrendoc.com/view3/M02/38/2E/wKhkFmZRHISASNJcAAFXojB6_7Q321.jpg)
![2023年安徽省宣城市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)真題(含答案)_第2頁(yè)](http://file4.renrendoc.com/view3/M02/38/2E/wKhkFmZRHISASNJcAAFXojB6_7Q3212.jpg)
![2023年安徽省宣城市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)真題(含答案)_第3頁(yè)](http://file4.renrendoc.com/view3/M02/38/2E/wKhkFmZRHISASNJcAAFXojB6_7Q3213.jpg)
![2023年安徽省宣城市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)真題(含答案)_第4頁(yè)](http://file4.renrendoc.com/view3/M02/38/2E/wKhkFmZRHISASNJcAAFXojB6_7Q3214.jpg)
![2023年安徽省宣城市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)真題(含答案)_第5頁(yè)](http://file4.renrendoc.com/view3/M02/38/2E/wKhkFmZRHISASNJcAAFXojB6_7Q3215.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023年安徽省宣城市全國(guó)計(jì)算機(jī)等級(jí)考試
C語(yǔ)言程序設(shè)計(jì)真題(含答案)
學(xué)校:班級(jí):姓名:考號(hào):
一、2.填空題(10題)
1.若x、y和z均是int型變量,則執(zhí)行下面表達(dá)式后的x值為【】。
x=(y=4)+(z=3)
2.測(cè)試的目的是暴露錯(cuò)誤,評(píng)價(jià)程序的可靠性,?而的目的是發(fā)現(xiàn)
錯(cuò)誤的位置并改正錯(cuò)誤。
3.有兩個(gè)C程序文件T18.C和myfun.c同在VC系統(tǒng)目錄(文件夾)下,
其中T18.C文件如下:
#include<stdio.h>
#include"myfun.c"
main()
{fun();prinff("\n");}
myfun.c文件如下:
voidfun()
{chars[80],c;intn=0;
while((c=getchar())!:'\n')s[n++]=c;
n--;
while(n>=0)prinff("%c",s[n—]);
)
當(dāng)編譯連接通過(guò)后,運(yùn)行程序T18時(shí),輸入"Thank!”,則輸出結(jié)果是【】。
4.性表的順序存儲(chǔ)中,元素之間的邏輯關(guān)系是通過(guò)【】決定的;性表
的鏈接存儲(chǔ)中,元素之間的邏輯關(guān)系是通過(guò)【】決定的。
5.設(shè)inta=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是[]0
6.以下程序的功能是從名為filea.dat的文本文件中逐個(gè)讀入字符并顯示
在屏幕上。請(qǐng)?zhí)羁铡?/p>
majn()
{FILE*fp;charch;
fp=fopen();
ch=fgetc(fp);
whle(!feof(fp)){putchar(ch);ch=f8etc(fp);}
putchar('\n');fclose(fp);
}
7.寫出下列程序的輸出結(jié)果o
main()
{int=0;
while(n++<=1);
printf("%d,",n);
printf("%d",n++);
)
8.常用的軟件結(jié)構(gòu)設(shè)計(jì)工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用
矩形表示用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
9.在長(zhǎng)度為n的有序線性表中進(jìn)行二分查找。最壞的情況下,需要的比
較次數(shù)為【】。
10.一個(gè)項(xiàng)目具有一個(gè)項(xiàng)目主管,一個(gè)項(xiàng)目主管可管理多個(gè)項(xiàng)目,則實(shí)體”
項(xiàng)目主管與實(shí)體“項(xiàng)目”的聯(lián)系屬于【】的聯(lián)系。
二、單選題(10題)
11.下面程序中算法的時(shí)間復(fù)雜度是0
intgetSym(intn)
if(n<=0)
return0;
inti=0;
ints=l;
while(s<n)
(
i++;
s*=i;
}
returns;
)
A.O(n)B.O(nA2)C.O(logn)D.O(n*logn)
12.以下敘述正確的是
A.continue語(yǔ)句的作用是結(jié)束整個(gè)循環(huán)的執(zhí)行
B.只能在循環(huán)體內(nèi)和switch語(yǔ)句體內(nèi)使用break語(yǔ)句
C.在循環(huán)體內(nèi)使用break語(yǔ)句或continue語(yǔ)句的作用相同
D.從多層循環(huán)嵌套中退出時(shí),只能使用got。語(yǔ)句
知)軟件測(cè)試的目的是
A)評(píng)估軟件可16性
B)發(fā)現(xiàn)并改正程序中的錯(cuò)誤
C)改正程序中的錯(cuò)誤D)發(fā)現(xiàn)程序中的錯(cuò)誤
13.
(34)若已定義:
inta[]={0,U2,3,4,5,6,7,8,9),*p=a,i;
其中0WiW9,則對(duì)a數(shù)組元素不正確的引用是()。
A)a[p-a]
B)*(&a[i])
C)p[i]
14D)a[10]
15.設(shè)二叉排序樹(shù)中有n個(gè)結(jié)點(diǎn),則二叉排序樹(shù)的平均查找長(zhǎng)度為()。
A.O(l)
B.O(logn)
C.O(n)
D.(n2)
16.如果樹(shù)的的結(jié)點(diǎn)A有4個(gè)兄弟,而且B為A的雙親,則B的度為
Oo
A.3B.4C.5D.1
17.有以下程序段intn=0,p?o{scanf("%d”,&p);n++;}while(p!=12345
&&n<3);此處do-while循環(huán)的結(jié)束條件是
A.P的值不等于12345并且n的值小于3
B.P的值等于12345并且n的值大于等于3
C.P的值不等于12345或者n的值小于3
D.P的值等于12345或者n的值大于等于3
18.將數(shù)據(jù)和操作置于對(duì)象統(tǒng)一體中的實(shí)現(xiàn)方式是0。
A.隱藏B.抽象C.封裝D.結(jié)合
19.以下選項(xiàng)中不屬于字符常量的是
A:CB.〃C〃C.kCCDA072'
20.
(34)下面函數(shù)的功能是()?
sss(s,t)
char
{while(*s);
while(*t)
*(s-H-)=*(t++);
returns;
}
A)將字符串s復(fù)制到字符串t中B)比較兩個(gè)字符串的大小
C)求字符串的長(zhǎng)度D)將字符串t續(xù)接到字符串s中
三、程序設(shè)計(jì)題(10題)
21.編寫函數(shù)fun(),其功能是:求出1?1000中能被7或11整除,但
不能同時(shí)被7和11整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過(guò)
n返回這些數(shù)的個(gè)數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()
函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入所編
寫的若干語(yǔ)句。試題程序:
UmcludeVadhhh>
ifirltMicVeitoo.h>
9includeVstdio.h>
K*idfun<ini?*?mi?n)
voidtmiin()
mlaa£|OOOj?ii?ki
?ywtcm()?
(wn<M?(-B)<
(or+)
it<(b>t)X10?■<>)
Ipnntf(*X5d*eM£k]>t
prifiif<w\n*>iI〃一行Y9個(gè)ft
ebe
prtnif<"KSd*?
pnnth*\nw>?
22.假定輸人的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)proc,它的功能
是:將字符串中
的前導(dǎo)*號(hào)全部刪除,中間和后面的*號(hào)不刪除。
例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的
內(nèi)容則
應(yīng)當(dāng)是a*bc*de#g****。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)
中填入所編
寫的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidproc(char*str)
voidmain
(
charstr[81];
printf("Enterastring:kn");
gets(str);
proc(str);
printf("Thestringafterdeleted:kn");
puts(str);}
23.使用VC++2010打開(kāi)考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.co在此程序中,編寫函數(shù)fun(),
其功能是將s所指字符串中除了下標(biāo)為奇數(shù)同時(shí)ASCII值也為奇數(shù)的字
符之外的其余所有字符全部刪除,字符串中剩余字符所形成的一個(gè)新字
符串存放在t所指的數(shù)組中。
例如,若s所指字符串的內(nèi)容為“ABCDEFG12345",其中字符A的
ASCII值為奇數(shù),但所在元素的下標(biāo)為偶數(shù),因此需要?jiǎng)h除;而字符1
的ASCII值為奇數(shù),所在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,
其他依此類推。最后t所指數(shù)組中的內(nèi)容應(yīng)為“135”。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號(hào)中填入你編寫的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*s,chart[])
(
)
main()
(
chars[100],t[100];
printf("\nPleaseenterstrings:");
scanf("%s”,s);
fun(s,t);
printf("\nTheresultis:%s\n,,,t);
}
24.實(shí)現(xiàn)字符串拷貝的函數(shù)strcpy為()。
25.
請(qǐng)編寫函數(shù)proc(),其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存
入XX所指數(shù)組中,非素?cái)?shù)的個(gè)數(shù)通過(guò)k傳回。例如,輸入20,則應(yīng)
輸出4689101214151618。注意:部分源程序給出如下。請(qǐng)勿改
動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)
中填入所編寫的若干語(yǔ)句。試題程序:
aif^dudcV.tdhhhS>
UinrludrVcooio.h>
#includeVscdio.h>
vt?dproc(intm?i?t?k?mtantJ)
vo*dwutfH>
Nilm>n??tr{IOO]i
prmtf(0\tiPlr??rmietaaintvcrtnumbrr
between10andt001")i
?canf(
procC.&m.Mf)i
pdnif("\u\?Thrr?areHdaon-prime
number*ITMtfurnKdt
+>
prmtf("\nMid*
26.三個(gè)整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的數(shù)。
27.請(qǐng)編寫函數(shù)proc(),其功能是:將str所指字符串中除下標(biāo)為偶數(shù)、
同時(shí)ASCH碼值為奇數(shù)的字符外,其余的字符都刪除,串中剩余字符所
形成的一個(gè)新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容
為ABCDEFG12345,其中字符8的ASCII碼值為偶數(shù),所在元素的下
標(biāo)為奇數(shù),因此必須刪除;而字符A的ASCII碼值為奇數(shù),所在數(shù)組
中的下標(biāo)為偶數(shù),因此不應(yīng)當(dāng)刪除。依次類推,最后t所指的數(shù)組中的
內(nèi)容應(yīng)是ACEG。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main。函
數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所寫的
若干語(yǔ)句。試題程序:
4Ouflh
#includeVcomo.h>
8iibdtMkV,idio.h>
#include<*EMLh>
votdprorCrhat?Mr.rKir<[J)
widmaM<)
dmMf(KX)]u(100jt
Mywtrm<*01^1*>i
printfC*\nl*1ea?center?tnngNr.*)<
?can(<,九
proc<Mf?t)?
phnd(*\nTlier?s<ilt
28.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)proc,它的功
能是:將字符串中的前導(dǎo)*號(hào)全部刪除,中間和后面的*號(hào)不刪除。
例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串
中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g****。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花
括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<stdio.h=:{>
#include<conio.h>
woidproc(char*str)
(
)
voidmain
charstr[81];
printf("Enterastring:\n");
gets(str);
proc(str):
printf("Thestringafterdeleted:\n");
puts(str);}
29.使用VC++2010打開(kāi)考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,請(qǐng)編寫函數(shù)
fun(),它的功能是求出能整除x且不是偶數(shù)的整數(shù),并將這些整數(shù)按從
小到大的順序放在PP所指的數(shù)組中,總個(gè)數(shù)通過(guò)形參n返回。如x中
的值為30,則有4個(gè)數(shù)符合要求,它們是1、3、5、15。注意:部分源
程序在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main。和其他函數(shù)中的任何內(nèi)
容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:
1#include<conio.h>
2#include<stdio.h>
3#include<stdlib.h>
4voidfun(intx,intpp[],int*n)
5{
6
W}
8voidmain()
9{
10FILE*wf;
11intx,aa[1000],n,i;
12system("CLS");
13printf("\nPleaseenteran
integernumber:\n°);
14scanf&x);
15fun(xzaa,&n);
16for(i=0;i<n;i++)
17printf(w%d",aa[i]);
18printf(M\n");
19/**???????found???????*?/
20wf=fopen("out-dat","w");
21fun(30,aa,&n);
22for(i=0;i<n;i++)
23fprintf(wf,"%d",aa[i]);
24fclose(wf);
25/?***???*#found?**???***/
?)
30.使用VC++2010打開(kāi)考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,已知學(xué)生的記
錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。
請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是找出成績(jī)最低的學(xué)生記錄,通過(guò)形
參將其返回主函數(shù)(規(guī)定只有一個(gè)最低分)。已給出函數(shù)的首部,請(qǐng)完成
該函數(shù)。
注意:部分源程序在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)
中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。
試題程序:
1#include<stdio.h>
2#include<string.h>
3#include<conio.h>
4#include<stdlib.h>
5#defineN10
6typedefstructss
7{charnum[10];
8ints;
9}STU;
10fun(STUa[],STU*s)
11{
12
13)
14voidmain()
15{
16FILE*wf;
17STUa[N]={{"A01",81},{"AO2",89},{"A03",66},{"A04",87},{"
A05",77},{"A06",90},{"A07",79},
{"A08",61},{"A09",80},{"A10",71}},m
18inti;
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);
27wf=fopen("out.dat'*,"w");
28fprintf(wf,"%s,%d",m.num,m.s);
29fclose(w0;
四、2.程序修改題(10題)
31.下列給定程序中,函數(shù)fun()的功能是讀入一個(gè)字符串(長(zhǎng)度<20),
將該字符串中的所有字符按ASCII碼降序排序后輸出o
例如:輸入dafhc,則應(yīng)輸出hfdcao
請(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+l;i<strlen(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);
32.已知一個(gè)數(shù)列從。項(xiàng)開(kāi)始的前3項(xiàng):0,0,1,以后的各項(xiàng)都是其相
鄰的前3項(xiàng)之和。下列給定的程序中,函數(shù)fun()的功能是:計(jì)算并輸出
該數(shù)列前n項(xiàng)的和sum。n的值通過(guò)形參傳入。例如,當(dāng)n=10時(shí),程序
的輸出結(jié)果應(yīng)為96.0000000
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intn)
(
doublesum,SO,SI,S2,S;
intk;
sum=1.0;
if(n<=2)
sum=0.0;
s0=0.0;
si=0.0;
s2=1.0;
/*************found*************/
for(k=4;k<n;k++)
{
S=S0+Sl+s2;
Sum+=s;
SO=sl;
Sl=s2;
/*************found*************/
S2=S;
returnsum;
)
main()
(
intn;
clrscr();
printf("InputN=");
scanf("%d",&n);
printf("%f\n",fun(n));
)
33.給定程序M0D11.C中函數(shù)fun的功能是:求出以下分?jǐn)?shù)序列的前
n項(xiàng)之和。和值通過(guò)函數(shù)值返回到main函數(shù)。
23581321
T*2'3'51~3'TT…
例如,若n=5,則應(yīng)輸出:8.391667o
請(qǐng)改正程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
tinclude<stdio.h>
2/*?**?*??****found***w*****?*?/
3voidfun(intn)
4{inta,brc,k;doubles;
5s=0.0;a?2;b?1;
6for(k-1;k<?n;k++)<
7/????**???***foundw***?*????**/
8s-s?(Double)a/b;
9c-a;a=a+b;b-c;
10I
11returns;
12}
13main()
14(intn?5;
15printf(w\nThevalueoffunction
is:%lf\nH,fun(n));
16
34.下列給定程序中,函數(shù)fun()的功能是:計(jì)算s所指字符串中含有t
所指字符串的數(shù)目,并作為函數(shù)值返回。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<string.h>
#include<stdio.h>
#defineN80
intfun(char*s,char*t)
{intn;
char*p,*r;
n=0;
while(*s)
{P=s;
/****不***不***不*^Qund***不***不*******/
r=P;
while(*r)
if{*r==*p){r++;p++;}
elsebreak;
/******不*******fk)und*不*******不*****/
if(*r==O)
n++;
s++;
}
returnn;
)
main()
{chara[N],b[N];intm;
clrscr();
printf("\nPleaseenterstringa:");
gets(a);
printf("\nPleaseentersubstringb:");
gets(b);
m=fun{a,b);
printf("\nTheresultis:m=%d\n",m);
)
35.給定程序MODU.C中函數(shù)fun的功能是:統(tǒng)計(jì)substr所指子字符
串在str所指字符串中出現(xiàn)的次數(shù)。
例如,若字符串為aaaslkaaas,子字符串為as,則應(yīng)輸出2。
請(qǐng)改正程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
tinclude<stdio.h>
w
2intfun(charstrrchar*substr)
3(intirnum-0;
4/*???????***?found************/
5for(i-0,str[i]9i>+)
6for(j-i.k-0;substr[k)Mstr[j];
7八??………found
8If(substr[k*l]-f\0f)
9(num**;
10break;
11?
12returnnum;
13
14main()
15J(
16charstr[80]rsubstr(80);
17printf(RInputastring:;
18gets(str);
19printf(wInputasubstring:H);
20gets(substr);
21printffun(strrsubstr));
22
36.給定程序MODH.C中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算
如下公式的值。
例如,若m中的值為:5,則應(yīng)輸出:1.46361lo
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
linclude<stdio.h>
2doublefun(intm)
3{doubley-1.0;
4inti;
5/???★★-found—
6for(i-2;i<m;i++)
7?found?…………/
8y1/(i*i);
9return(y);
10)
11main()
12{intn-5;
13printf(H\nTheresultis%lf\nw,
fun(n));
14
37.給定程序MODH.C中函數(shù)fun的功能是:將p所指字符串中的所
有字符復(fù)制到b中,要求每復(fù)制三個(gè)字符之后插入一個(gè)空格。
例如,在調(diào)用fun函數(shù)之前給a輸入字符串:ABCDEFGHIJK,調(diào)用函
數(shù)之后,字符數(shù)組b中的內(nèi)容則為:ABCDEFGHIJKO
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
1*?tinclude<stdio.h>
2?voidfun(char.p,char*b)
3(int1,k-0;
4while(*p)
5{i-1;
6while(i<*3&&*p)<
7/?????*****found**********/
8b(kl-p;
9k++;p++;if
10}
11if(*p)
12(
13/?*********foundw*********/
14b[k++],"
15
16
17
18!)
19main()
20{chara[80]rb[80);
21printf("Enterastring:");gets(a);
22printf(RTheoriginalstring:");
puts(a);
23fun(arb);
24printf(0\nThestringafterinsert
space:puts(b);printf(w\n\n");
25
38.下列給定程序中函數(shù)fun()的功能是;先將在字符串s中的字符按逆
序存放到t串中,然后把s中的字符按正序連接到t串的后面。例如:
當(dāng)s中的字符串為ABCDE時(shí),則t中的字符串應(yīng)為EDCBAABCDEO
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*s,char*t)
(
inti,sl;
sl=strlen(s);
for(i=0;i<sl;i++)
t[i]=s[sl-l];
for(i=0;i<si;i++)
/*********不***found*不***不***不****
t[sl+i]=s[i];
t[2*sl]-'\0';
)
main()
{chars[100],t[100];
clrscr();
printf("\nPleaseenterstrings:");
scanf("%s",s);
fun(s,t);
printf("Theresultis:%s\n",t);
)
39.下列給定程序中,函數(shù)fun()的功能是:先從鍵盤上輸入一個(gè)3行3
列的矩陣的各個(gè)元素的值,然后輸出主對(duì)角線元素之和。
請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
intfun()
inta[3][3],sum;
inti,j;
/*************found**************/
sum=l;
for(i=0;i<3;i++)
{for(j=O;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.已知一個(gè)數(shù)列從。項(xiàng)開(kāi)始的前3項(xiàng):0,0,1,以后的各項(xiàng)都是其相
鄰的前3項(xiàng)之和。下列給定的程序中,函數(shù)fun()的功能是:計(jì)算并輸出
該數(shù)列前。項(xiàng)的平方根之和sum。n的值通過(guò)形參傳入。例如,當(dāng)n=10
時(shí),程序的輸出結(jié)果應(yīng)為23.197745。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
/*******不*不*不*不*found*不*不*不*不*不*********/
fun(intn)
{doublesum,sO,s1,s2,s;intk;
sum=1.0;
if(n<=2)sum=0.0;
sO=O.O;sl=O.O;s2=1.0;
for(k=4;k<=n;k++)
{s=s0+sl+s2;
sum+=sqrt(s);
sO=sl;sl=s2;s2=s;
)........................................................................
/*******不*不*不*不**found不*字*不*不*不********/
returnsum
)
main()
{intn;
clrscr();
printf("InputN=");
scanf("%d",&n);
printf("%fm",fun(n));
)
五、程序改錯(cuò)題(2題)
41.下列給定程序中,函數(shù)proc()的功能是:傳人一個(gè)整數(shù)n,計(jì)算如
下公式的值。t=l/2-l/3-...-l/n例如,若輸入3,則應(yīng)輸出0.166667。
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main
()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
£mdudr<.kttih
>include<como.h>
??nHtidrVatdio.h>
dkxibleproc<imn)
doublet*?1,Oi
inth
?)
//????found????
//????kxM*d????
VOM!BMM!()
(int?i
'CLS*)i
pnm<<*\tiPlM?eenter1tniegernumbers?\a*)<
pnnxflv\a\BTberesultis/if\n*.proc(m))?
42.下列給定程序中,函數(shù)proc()的功能是逐個(gè)比較strl,str2兩個(gè)字符
串對(duì)應(yīng)位置中的字符,把比ASCII值大或相等的字符依次存放到str數(shù)
組中,形成一個(gè)新的字符串。
例如,strl中的字符串為fshADfg,str2中的字符串為sdAEdi,則str
中的字符串應(yīng)為sshEdigo
請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main。函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)。
試題程序:
&mcludtV,ldsdh>
ftmcludt<h>
voidproc<ciuir?p.cha/?q.char?cl
Imlk*0?
wlnk<?pI?q)
//????found????
(if<?p>??q)
<£■]■?
<£']一?pt
|(<?p)?i
if<?q>q++i
〃????IOUMI????
voidm>in(>
(charwtrl[10]-ef?hAlXg\wir2[IO]?*>dAEdi*.
?tr[SOj*l*\O*h
proc<Mrl??tr2?iiKr)?
l>nntf<*TheMnn<>trl:*)iput?(9trl>i
ptrntfC*ThrstringMr2,")ipuu(?tr2)t
pru]((<*Tbcresuht*)iputMMr”
六、操作題(2題)
43.請(qǐng)補(bǔ)充main函數(shù),該函數(shù)的功能是輸入兩個(gè)正整數(shù)numl和num2,
求這兩個(gè)數(shù)的最大公約和最小公倍數(shù)。
例如,若輸入的兩個(gè)正整數(shù)為12,4,則它們的最大公約數(shù)為12,最小
公倍數(shù)為4。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在main函數(shù)的橫線上
填人所編寫的若干表達(dá)式或語(yǔ)句。
試題程序:
#include<stdlib.h>
#include<stdio.h>
voidmain
inta,b,numl,num2,t;
system("CLS"):
printf("\nlnputtwonumbers:\n");
scanf("%d,%d",&numl,&num2);
if(numl<num2)
(
a=num2;
b=numl:
)
else
(
a=numl;
b=num2;
)
while([1])
(
t=⑵
a=b;
b=t:
)
printff'greatestcommondivisor:
%d\n",a);
printf("leastcommonmultiple:
%d\n",[3];
44.以下程序運(yùn)行后的輸出結(jié)果是【】。(注:如果結(jié)果中含有回車,可
加一空格寫在一行,例如:
111
111
111
可以寫成:11111111lo
#include<stdio.h>
mala()
{inti,j,a口[3]={1,2,3,42,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+l;j<3;j++)a[j][i]=O;
for(i=0;i<3;i++)
{for(j=O;j<3;j++)printf("%d",a[i][j]);
printf("\n");
參考答案
1.77解析:x=(y=4)+(z=3)等價(jià)于y=4,z=3,x=y+z=4+3=7。
2.調(diào)試調(diào)試
3.!knahT!knahT解析:程序中myfun.c被包含在T18.C中進(jìn)行編譯。fun
函數(shù)中用getehar函數(shù)輸入字符并賦給數(shù)組s,每輸入一個(gè)字符,數(shù)組下
標(biāo)n加1,直到遇到回車鍵時(shí)輸入結(jié)束。while(n>=0)循環(huán)反序輸出字符
中。所以myfun.c文件用于實(shí)現(xiàn)字符串反序的功能。
4.相鄰位置鄰接指針相鄰位置\r\n鄰接指針
5.77解析:此表達(dá)式為三目運(yùn)算符,++a的值為6,b-的值為6,則整
個(gè)表達(dá)式的值為++a的值,++a的值為7。請(qǐng)注意前綴++,-和后綴++,
一的區(qū)別。
6.
7.333,3解析:本題在while(n++<=l)語(yǔ)句后,直接加了分號(hào),說(shuō)明如果
while。的條件為真時(shí),該循環(huán)什么都不做;n++是先取n的當(dāng)前值和I做
比較,然后再將n加1。第一次循環(huán),n=0時(shí),循環(huán)條件n++=O<=l成
立,執(zhí)行循環(huán),然后得到n=l。第二次循環(huán),n=l時(shí),循環(huán)條件n++=l
<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時(shí),循環(huán)條件
n++=2<=l不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時(shí)仍將n加1,得
到n=3。退出循環(huán)后執(zhí)行printf語(yǔ)句,第二個(gè)printf語(yǔ)句輸出n++,是先
輸出n的當(dāng)前值3,然后再將n加1,即程序結(jié)束后得到n=4,但輸出
的是3。
8.模塊模塊解析矩形表示的是模塊,箭頭表示的是模塊間的調(diào)用關(guān)系。
用帶實(shí)心圓的箭頭表示傳遞的是控制信息,用帶空心圓的箭頭表示傳遞
的是數(shù)據(jù)。
9.1og2n
10.一對(duì)多(或1:N)一對(duì)多(或1:N)解析:兩個(gè)實(shí)體集間的聯(lián)系實(shí)際上
是實(shí)體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有3種,即一對(duì)一(1:1)的聯(lián)
系、一對(duì)多(1:N)或多對(duì)一(N:1)的聯(lián)系和多對(duì)多(N:N)的聯(lián)系。
U.C
12.B解析:continue是結(jié)束本次循環(huán),直接進(jìn)入到下次循環(huán)中,break用
于循環(huán)語(yǔ)句中的作用是直接跳出本層循環(huán),能從多層循環(huán)中退出的語(yǔ)句
除了goto語(yǔ)句,exit,return等語(yǔ)句也能直接跳出多層循環(huán)。注意:
continue和break語(yǔ)句在while語(yǔ)句中的作用。
13.D
14.D
15.B
16.C
17.D解析:本題考查的知識(shí)點(diǎn)是do-while循環(huán)結(jié)構(gòu)循環(huán)執(zhí)行條件的判
斷.使用do-while語(yǔ)句必須注意以下幾點(diǎn):
先執(zhí)行語(yǔ)句,后判斷表達(dá)式。所以,無(wú)論一開(kāi)始表達(dá)式的值為“真”還是
“假”,循環(huán)體中的語(yǔ)句至少執(zhí)行一次,這一點(diǎn)與while不同,
如果do-while語(yǔ)句循環(huán)體部分是由多個(gè)語(yǔ)句組成,則必須用花括號(hào)括起
來(lái),使其形成復(fù)合語(yǔ)句。
C語(yǔ)言中的do-while語(yǔ)句是在表達(dá)式“真”時(shí)重復(fù)執(zhí)行循環(huán)體。
在本題中,循環(huán)執(zhí)行判斷條件為while后面括號(hào)里的表達(dá)式即
p!=12345&&n<3(意思為p不等于12345且n小于3)是否為“真”,由此
可得循環(huán)結(jié)束的條件為:p大于12345或者p小于12345又或者n大于
等于3。選項(xiàng)A的意思是:p的值不等于12345并且n的小于3和while
后面括號(hào)里的表達(dá)式等價(jià)是循環(huán)執(zhí)行的條件而不是循環(huán)結(jié)束的條件,所
以選項(xiàng)A不正確;選項(xiàng)B的意思是:p的值等于12345并且n的值大于
3,不是循環(huán)結(jié)束的條件一個(gè)子集,所以選項(xiàng)B不正確;選項(xiàng)C的意思
是:P的值不等于12345或者n的值小于3前一半是結(jié)束條件的子集,
后一部分不是結(jié)束條件,所以選項(xiàng)C不正確;選項(xiàng)D描述的意思是:p
的值等于12345或者你的大于等于3是結(jié)束條件的子集,所以選項(xiàng)D滿
足題意。所以4個(gè)選項(xiàng)中D正確。
18.C對(duì)象具有封裝性,從外面看只能看到對(duì)象的外部特性,對(duì)象的內(nèi)部
對(duì)外是封閉的。即封裝實(shí)現(xiàn)了將數(shù)據(jù)和操作置于對(duì)象統(tǒng)一體中。本題答
案為C選項(xiàng)。
19.B解析:在C語(yǔ)言程序中,用單引號(hào)把一個(gè)字符或反斜線后跟一個(gè)特
定的字符括起來(lái)表示一個(gè)字符常量。選項(xiàng)A)、C)和D)為正確的字符常
量,而選項(xiàng)B)是用雙引號(hào)括起來(lái)的字符,表示一個(gè)字符串常量。
20.D
21.
【解析】根據(jù)題意,所寫函數(shù)要用for循環(huán)實(shí)現(xiàn)對(duì)整數(shù)1?1000的遍歷;
通過(guò)if語(yǔ)句找出能被7或11整除,但不能同時(shí)被7和11整除的所有整
數(shù),因?yàn)橥瑫r(shí)被7和11整除的整數(shù)一定能被77整除,且不能被77整
除的數(shù)不一定就是能被7或11整除,可得出表達(dá)式“(i%7==0||i%ll==O)
&&i%77!=0";再按題目要求,將找出來(lái)的整數(shù)放在a所指的數(shù)組中,
通過(guò)n返回這些數(shù)的個(gè)數(shù)即可。
22.voidproc(char*str)
\n{
\nchar*p=str;
\nwhile(*p==*)p++;//通過(guò)p的移動(dòng)來(lái)達(dá)到使p指向第一個(gè)不是*
號(hào)的字符
\nfor(;*p!=\0;p++,str++)//把從第一個(gè)不是*號(hào)的字符放到a中
\n*str=*P:
\n*str=\0;//最后用\。作為字符串結(jié)束標(biāo)志
\n}
\n【解析】題目中要求將字符串中的前導(dǎo)*號(hào)全部刪除,首先將指針P移
動(dòng)到第一個(gè)不是*的字符,將指針P之后的字符放入原來(lái)的字符串中,
并為新的字符串添加結(jié)束符。
\n
23.voidfun(char*s,chart[])
(
inti,j=0,n;
n=strlen(s);
for(i=0;i<=""p="">
if((i%2)&&(s[i]%2))
{
t|j++]=s[i];/*將下標(biāo)為奇數(shù)同時(shí)ASCII值為奇數(shù)的字符放入數(shù)組
t中*/
)
中]='\0';/*最后加上字符串結(jié)束標(biāo)志*/
)
本題要求保留下標(biāo)為奇數(shù)同時(shí)ASCII值也為奇數(shù)的字符,其余的所有字
符都刪除。將s字符串中,滿足條件的字符存放到字符串t中。if的條
件表達(dá)式為:if(i%2!=0&&s[i]%2!=0)o
24.
voidstrcpy(char*s,char*t)/*copyttos*/
{while((*s++=1ct++)!='\0'))|
)
25.
【解析】題目中要求將所有大于1小于整數(shù)m的非素?cái)?shù)存入xx所指數(shù)
組中,因此需要判斷所有大干1小于m的整數(shù)是否為素?cái)?shù)。將所有大干
1小于m的非素?cái)?shù)放入數(shù)組xx中,并將非素?cái)?shù)的個(gè)數(shù)通過(guò)形參k傳遞
回主函數(shù)中。
26.main
\n{inta,b,c;
\nprintf(“請(qǐng)輸入三個(gè)整數(shù):");scanf("%d,%d,%d”,&a,&b,&c);
\nif(aif(belseprintf(<4max=%d\\n,,,b);
\nelseif(aelseprintf(44max=%d\\n,,,a);}
\n
27.
【解析】題目中要求將字符串str中下標(biāo)為偶數(shù)、同時(shí)ASCII碼值為奇
數(shù)的字符放在數(shù)組t中。首先,需要檢查字符串str中下標(biāo)為偶數(shù)的字
符的ASCH碼值是否為奇數(shù),將符合要求的字符放在數(shù)組t中。最后,
為新的字符串?dāng)?shù)組添加結(jié)束符。
28.voidproc(char*str)
{
char*p=str:
while(*p==*)p++;//通過(guò)P的移動(dòng)來(lái)達(dá)
到使P指向第一個(gè)不是*號(hào)的字符
for(;*p!=\0;p++,str++)//把從第一個(gè)
不是*號(hào)的字符放到a中
*str=*P:
*str=\0;//最后用\0作為字符串結(jié)束標(biāo)志
)
【解析】題目中要求將字符串中的前導(dǎo)*號(hào)全部刪除首先將指針p移動(dòng)
到第一個(gè)不是*的字符,將指針P之后的字符放入原來(lái)的字符串中,并
為新的字符串添加結(jié)束符。
29.1voidfun(intx,intpp[],int*n)
2{
3inti,j=0;
4for(i=l;i<=x;i=i+2)/*i的初值為1,步長(zhǎng)為2,確保i為奇數(shù)
*/5if(x%i==0)/*將能整除x的數(shù)存入數(shù)組pp中*/6pp[j++]=i;7*n=j;/*傳
回滿足條件的數(shù)的個(gè)數(shù)*/8}本題考查:偶數(shù)的判定方法;整除的實(shí)現(xiàn)。本
題題干信息:能整除X且不是偶數(shù)的所有整數(shù)。循環(huán)語(yǔ)句中變量i從1
開(kāi)始且每次遞增2,所以i始終是奇數(shù)。將能整除x的i值存放到數(shù)組
PP中,整除采用求余運(yùn)算符“%”,即“x%i==O"。最后將數(shù)據(jù)元素個(gè)數(shù)j
保存到n中。
30.1fun(STUa[],STU*s)
2{
3inti;
4*s=a[0];/*假設(shè)第1個(gè)元素值最小*/
5for(i=0;i<N;i++)/*如果在循環(huán)的過(guò)程中再發(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)的過(guò)程中發(fā)現(xiàn)比第1個(gè)元素值更小的,
就將指針S指向該元素,直到找到值最小的元素。另外,本題還涉及
結(jié)構(gòu)體中的指向運(yùn)算符。
31.(1)錯(cuò)誤:intfun(chart[])正確:voidfun(chart口)(2)錯(cuò)誤:t[j]=t[i++];
正確:;⑴錯(cuò)誤:intfun(chart[])正確:voidfun(chart口)\r\n(2)錯(cuò)
誤:tg]=t[i++];正確:tU]=t[i];解析:錯(cuò)誤1:該函數(shù)只是對(duì)一個(gè)字
符串中的元素進(jìn)行比較大小的操作,并沒(méi)有具體的返回值,因此,函數(shù)
的返回值類型應(yīng)為void。錯(cuò)誤2:本題的思路是利用選擇法對(duì)數(shù)組元素
進(jìn)行比較。所謂選擇法,是依次用當(dāng)前取得的元素和它后面的元素進(jìn)行
比較,在第一個(gè)元素和它后面的元素順次比較時(shí),可以借助中間變量來(lái)
對(duì)兩數(shù)進(jìn)行交換,要保證這第一個(gè)元素始終存放數(shù)組中的最大數(shù),以后
依次挑出次大數(shù),這樣最終的數(shù)組就是有序的。解答本題,只要理解了
選擇法的思想,找到并改正錯(cuò)誤就容易了。
32.(1)錯(cuò)誤:for(k=4;k<n;k++)正確:for(k=4;k<=n;k++)(2)錯(cuò)誤:
s2=s;正確:s2=s;}⑴錯(cuò)誤:fbr(k=4;k<n;k++)正確:for(k=4;k
<=n;k++)\r\n(2)錯(cuò)誤:s2=s;正確:s2=s;}解析:錯(cuò)誤1:循環(huán)中
包括k=n的情況,所以k要取到n之后才結(jié)束循環(huán)。錯(cuò)誤2:for循環(huán)的
語(yǔ)句要用大括號(hào),在此處少了“}“,應(yīng)添上。
33.(1)doublefun(intn)(2)s=s+(double)a/b;(l)doublefun(intn)
出5=5+90出吶/b;解析:本題中函數(shù)的功能是求出分?jǐn)?shù)序列的前n
項(xiàng)之和。首先根據(jù)題干中給出的公式推出每一項(xiàng)之間的關(guān)系,求出每一
項(xiàng)的表達(dá)式,然
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年二手教練車銷售合同格式
- 2025年乳制品代理銷售合同
- 2025年阻沙固沙網(wǎng)項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 2025年不動(dòng)產(chǎn)權(quán)購(gòu)房合同范本
- 2025年家禽購(gòu)銷合同協(xié)議
- 2025年陶瓷基體項(xiàng)目申請(qǐng)報(bào)告模范
- 2025年健身器材購(gòu)置合同
- 2025年合伙型股權(quán)分配合同
- 2025年度制造業(yè)租賃協(xié)議樣式
- 2025年產(chǎn)品研發(fā)合作協(xié)議范本
- 小學(xué)人教版五年級(jí)上冊(cè)數(shù)學(xué)填空達(dá)標(biāo)練習(xí)50題
- 北京市西城區(qū)2023-2024學(xué)年五年級(jí)上學(xué)期期末數(shù)學(xué)試卷
- 附屬醫(yī)院神經(jīng)內(nèi)科中長(zhǎng)期發(fā)展規(guī)劃五年發(fā)展規(guī)劃
- 營(yíng)養(yǎng)質(zhì)控中心管理制度
- 醫(yī)療文書(shū)病歷書(shū)寫規(guī)范培訓(xùn)教學(xué)課件
- 某美術(shù)館物業(yè)管理方案
- 中醫(yī)中風(fēng)病(腦梗死)診療方案
- 網(wǎng)絡(luò)安全架構(gòu)設(shè)計(jì)和網(wǎng)絡(luò)安全設(shè)備部署
- 電烤箱的使用方法ppt
- Part03 Unit5 Celebrations課件【知識(shí)精研+拓展提升】 中職專用 高一英語(yǔ)高效課堂
- 小學(xué)體育-快速跑-途中跑教學(xué)課件設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論