![2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第1頁](http://file4.renrendoc.com/view/22af4a84d41da350a0438671cf1c98e3/22af4a84d41da350a0438671cf1c98e31.gif)
![2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第2頁](http://file4.renrendoc.com/view/22af4a84d41da350a0438671cf1c98e3/22af4a84d41da350a0438671cf1c98e32.gif)
![2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第3頁](http://file4.renrendoc.com/view/22af4a84d41da350a0438671cf1c98e3/22af4a84d41da350a0438671cf1c98e33.gif)
![2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第4頁](http://file4.renrendoc.com/view/22af4a84d41da350a0438671cf1c98e3/22af4a84d41da350a0438671cf1c98e34.gif)
![2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第5頁](http://file4.renrendoc.com/view/22af4a84d41da350a0438671cf1c98e3/22af4a84d41da350a0438671cf1c98e35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2023年甘肅省張掖市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________
一、2.填空題(10題)1.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。
2.軟什是程序、數(shù)據(jù)和______的集合。
3.下面能正確進行字符串賦值操作的是
4.下列程序的輸出結(jié)果是【】。
main()
{inti;
for(i=1;i+1;i++)
{if(i>4)
{printf("%d\n",i);
break;}
printf("%d\n",i++);}}
5.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件是______。
6.設(shè)有以下定義和語句,則*(*(P+2)+1)的值為【】。
int[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
7.以下程序的作用是:從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fp;charch;
fp=fopen(______);
ch=fSetc(fp);
while(!feof(fp)){putchar(ch);ch=fSetc(fp);}
putchar('\n');fclose(fp);
}
8.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
#deftneJFT(x)x*x
main()
{inta,k=3;
a=++JFT(k+1);
printf("%d",a);
}
9.一個模塊直接訪問另一個模塊的內(nèi)容,稱為【】藕合。
10.若輸入Ihaveatest.#,則以下程序的運行結(jié)果為【】。
#include<stdio.h>
main()
{FILE*fp;
charstr[100],filename[10];
inti=0;
if((fp=fopen("test","w"))==NULL)
{printf("cannotopenthefile!\n");
exit(0);
}
getchar();
gets(str);
while(str[i]!='#')
{if(str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
fputc(str[i],fp);
i++;
}
fclose(fp);
fp=fopen("test","r");
fgets(str,strlen(str)+1,fp);
printf("%s\n",str);
fclose(fp);
}
二、單選題(10題)11.有以下程序段當(dāng)執(zhí)行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。
A.566.0B.55566.0C.7777.0D.566777.0
12.
13.
14.下列能正確進行字符串賦值的是()。A.B.C.D.
15.設(shè)x、y和z是int型變量,且x=4,y=6,z=8,則下列表達(dá)式中值為0的是()。
A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1
16.堆的形狀是一棵_______。
A.二叉排序樹B.滿二叉樹C.完全二叉樹D.平衡二叉樹
17.以下敘述中正確的是()。
A.預(yù)處理命令行必須位于C源程序的起始位置
B.在C語言中,預(yù)處理命令行都以“#”開頭
C.每個C程序必須在開頭包含預(yù)處理命令行:#include
D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能
18.當(dāng)用戶要求輸入的字符串中含有空格時,應(yīng)使用的輸入函數(shù)是()。
A.scanfB.getcharC.getsD.getc
19.對于n個元素,下列哪種操作時間復(fù)雜度不是O(nlogn)()
A.凸包計算B.LC搜索C.有序序列數(shù)字查找D.基于比較的排序
20.軟件設(shè)計中劃分模塊的一個準(zhǔn)則是()。A.低內(nèi)聚低耦合B.高內(nèi)聚低耦合C.低內(nèi)聚高耦合D.高內(nèi)聚高耦合
三、程序設(shè)計題(10題)21.編寫函數(shù)proc(),它的功能是:根據(jù)公式求p的值,結(jié)果由函數(shù)值帶回。m與n為兩個正數(shù)且要求m>;n。p=m!/(n!(m-n)!),例如,m=20,n=10時,運行結(jié)果為184756.000000。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
22.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)的。號之外,將串中其他*號全部刪除。在編寫函數(shù)時.不得使用C語言提供的字符串函數(shù).
23.請編寫函數(shù)proc(),該函數(shù)的功能是:計算n門課程的平均分,計算結(jié)果作為函數(shù)值返回。例如,有6門課程的成績是90.5,72,80,61.5,55,60,則函數(shù)的值為69.83。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
24.程序定義了M×M的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)proc(inta[][M],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。例如,a數(shù)組中的值為:
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
25.請編寫函數(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()的花括號中填入你編寫的若干語句。
試題程序:
26.有N個學(xué)生,每個學(xué)生的信息包括學(xué)號、性別、姓名、四門課的成績,從鍵盤上輸入N個學(xué)生的信息,要求輸出總平均成績最高的學(xué)生信息,包括學(xué)號、性別、姓名和平均成績。
27.請編一個函數(shù)fun(ohlr*str),該函數(shù)的功能是把字符串中的內(nèi)容逆置。
例如,字符串中原有的字符串為asdf9,則調(diào)用該函數(shù)后,串中的內(nèi)容為9fdsa。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填人所編寫的若干語句。
試題程序:
#include<string.h>
#include<conio.h>
#include<stdio.h>
#defineN100
voidfun(char*str)
{
}
voidmain
{
chara[N];
FILE*out:
printf("Enterastring:");
gets(a);
printf("Theorigiralstringis:");
puts(a);
fun(a):
printf("Thestringaftermodified:");
puts(a);
strcpy(a,"Welcome!");
fun(a);
ut=fopen("outfile.dat","w");
fprintf(out,"%s".a(chǎn));
fclose(out);
}
28.請編寫函數(shù)voidproc(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)、不為1的各整數(shù),并按從大到小的順序放在PP所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。
例如,若x的值為30,則有3個數(shù)符合要求,它們是15,5,3。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
29.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:
30.四、2.程序修改題(10題)31.給定程序MODll.C中函數(shù)fun的功能是:統(tǒng)計substr所指子字符串在str所指字符串中出現(xiàn)的次數(shù)。
例如,若字符串為aaaslkaaas,子字符串為as,則應(yīng)輸出2。
請改正程序中的錯誤,使它能計算出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
32.下列給定程序中,函數(shù)fun()的功能是:應(yīng)用遞歸算法求某數(shù)a的平方根。求平方根的迭代公式如下:
例如,2的平方根為1.414214。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<math.h>
#include<stdio.h>
/*************found**************/
fun(doublea,doublex0)
{doublexl,y;
xl=(x0+a/x0)/2.0;
/*************found**************/
if(fabs(xl-x0)>0.00001)
y=fun(a,xl);
elsey=x1;
returny;
}
main()
{doublex;
printf("Enterx:");scanf("%1f",&x);
printf("Thesquarerootof%1fis%1f\n",
x,fun(x,l.O));
}
33.下列給定程序中,函數(shù)fun()的功能是:輸出M行N列整數(shù)方陣,然后求兩條對角線上的各元素之和,返回此和數(shù)。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動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));
}
34.已知一個數(shù)列從第0項開始的前三項分別為0,0,1,以后的各項都是其相鄰的前三項之和。給定程序MODll.C中函數(shù)fun的功能是:計算并輸出該數(shù)列前n項的平方根之和。n的值通過形參傳入。
例如,當(dāng)n=10時,程序的輸出結(jié)果應(yīng)為:23.197745。
請改正程序中的錯誤,使程序能輸出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
35.下列給定程序中,函數(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));
}
36.下列給定程序中,函數(shù)fun()的功能是:用選擇法對數(shù)組中的n個元素按從小到大的順序進行排序。
請改正程序中的錯誤,使它能得到正確結(jié)果。
[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdio.h>
#defineN20
voidfun(inta[],intn)
{
inti,j,t,p;
for(j=0;j<n-1;j++){
/***********found***********/
p=j
for(i=j;i<n;i++)
if(a[i]<a[p])
/***********found***********/
p=j;
t=a[P];
a[p]=a[j];
a[j]=t;
}
}
msin()
{
inta[N]=(9,6,8,3,-1),i,m=5;
printf("排序前的數(shù)據(jù):”);
for(i=0;i<m;i++)
printf("%d",a[i]);
printf("\n");
fun(a,m);
printf("排序后的數(shù)據(jù):");
for(i=0;i<m;i++)
printf("%d",a[i]);
printf("\n");
}
37.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參m的值,計算如下公式的值。
例如,若m中的值為:5,則應(yīng)輸出:0.536389。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
38.下列給定程序中,函數(shù)fun()的功能是:用遞歸算法計算斐波拉契級數(shù)列中第n項的值。從第一項起,斐波`拉契級數(shù)序列為1,1,2,3,5,8,13,21,……例如,若給n輸入7,
該項的斐波拉契級數(shù)值為13。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
longfun(intg)
{
/*************found**************/
switch(g);
{case0:return0;
switch(g)
case1;case2:return1;
}
return(fun(g-1)+fun(g-2));
}
main()
{
longfib;intn;
printf("Inputn:");scanf("%d",&n);
printf("n-%d\n",n);
fib=fun(n);
printf("fib=%d\D\n",fib);
}
39.給定程序中函數(shù)fun的功能是:將一個由八進制數(shù)字字符組成的字符串轉(zhuǎn)換為與其值相等的十進制整數(shù)。規(guī)定輸入的字符串最多只能包含5位八進制數(shù)字字符。
例如,若輸入:77777,則輸出將是:32767。
請改正程序中的錯誤,使它能得到正確結(jié)果。
[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
intfun(char*p)
{
intn;
/**********found**********/
n=*p-'o';
p++;
while(*p!=0){
/**********found**********/
n=n*8+*p-'o';
p++;
}
returnn;
}
main()
{
chars[6];inti;intn;
printf("Enterastring(Ocataldigits):");
gets(s);
if(strlen(s)>5)
{
printf("Error:Stringtoolonger!\n\n");
exit(0);
}
for(i=0;s[i];i++)
if(s[i]<'0'||s[i]>'7')
{
printf("Error:%cnotisocataldigits!\n\n",s[i]);
exit(0);
}
printf("Theoriginalstring:");
puts(s);
n=fun(s);
printf("\n%siSconveredtointegernumber:%d\n\n",s,n);
}
40.下列給定的程序中,函數(shù)fun()的功能是:判斷字符ch是否與str所指字符串中的某個字符相同;若相同,則什么也不做,若相同,則將其插在申的最后。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
/*************found**************/
voidfun(charstr,charch)
{while(*str&&*str!=ch)str++;
/*************found**************/
if(*str==ch)
{str[0]=ch;
/*************found**************/
str[1]='0';
}
}
main()
{chars[81],c;
clrscr();
printf("\nPleaseenterastrzng:");
gets(s);
printf("\nPleaseenterthecharacterto
search:");
c=getchar();
fun(s,c);
printf("\nTheresultis%s\n",s);
}
五、程序改錯題(2題)41.寫出下列程序的運行結(jié)果。
#include“stdio.h”
Main
{inta[]={1,2,3,-4,5};
intm,n,*p;p=&a[0];m=*(p+1);n=*(p+4);
printf(“%d%d%d”,*p,m,n);}
42.假如整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定的程序中,函數(shù)proc()的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中元素的個數(shù)。請修改程序中的錯誤,使它能夠得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、操作題(2題)43.請補充main()函數(shù),該函數(shù)的功能是:從鍵盤輸入一個長整數(shù),如果這個數(shù)是負(fù)數(shù),則取它的絕對值,并顯示出來。例如,輸入:-123456,結(jié)果為:123456。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在橫線上填入所編寫的若干表達(dá)式或語句。試題程序:
44.以下程序運行后的輸出結(jié)果是【】。
#include<string.h>
voidfun(char*s,intP,intk)
{inti;
for(i=p;i<k-1;i++)s[i]=s[i+2];
main()
{chars[]="abcdefg";
fun(s,3,strlen(s));puts(s)
}
參考答案
1.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個加工對應(yīng)一個處理模塊。
2.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。
3.C
4.1351\r\n3\r\n5解析:本題考查了for循環(huán)語句的使用,break語句用在本題中是結(jié)束for循環(huán)直接跳出循環(huán)體外。當(dāng)i=1時,因為if語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出1,同時i自加1;執(zhí)行第二次for循環(huán)時,i=3;同樣的if語句條件不滿足,所以直接執(zhí)行printf('%d\\n',i++);輸出3,同時i自加1;執(zhí)行第三次for循環(huán)時,i=5,if語句條件滿足,所以執(zhí)行printf('%d\\n',i),輸出5,然后break語句跳出了for循環(huán)。
5.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的管理機構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等。
6.6060解析:本題定義了一個3行2列的二維數(shù)組a,并定義了一個指向兩個元素的一維數(shù)組指針p,讓p指向二維數(shù)組a的首行。*(*(p+2)+1)是引用a[2][1],其值是60。
7.解析:fopen函數(shù)的調(diào)用方式通常為fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并且是要讀取文件中的內(nèi)容,所以空白處應(yīng)當(dāng)填入'filea.dat','r'。
8.99解析:宏替換的原則是按原樣替換,本題中遇到形參x則以實參k+1替換,其他字符不變,所以JFT(k+1)經(jīng)替換后為k+1,k+1,則a=++k+1*k+1。若k的值為3,則經(jīng)過運算為a=4+1*4+1=9。
9.內(nèi)容內(nèi)容
10.IHAVEATEST.
11.A本題考查的是格式輸)ki$i數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中,其中的格式命令可以說明最大域?qū)?。在百分?%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。因此j的值為55,y的值為566.0,字符數(shù)組nanle的值為7777123。故本題答案為A)。
12.B
13.A
14.C選項A、B的空間不夠;選項D中字符串存儲要有結(jié)束符ˊ\0ˊ,且要占用一個空間,printf用來輸出字符,不能輸入字符串。
15.D本題考查邏輯運算符的使用。當(dāng)“&&”的兩個運算對象都是邏輯1時,表達(dá)式返回值才是1;“||”的兩個運算對象至少有一個是邏輯1時,表達(dá)式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。
16.C
17.B本題是對基本知識點的理解,預(yù)處理命令行的位置沒有規(guī)定,只是習(xí)慣寫在起始位置而已,當(dāng)需要時才用#include<stdio.h>頭文件,預(yù)處理的作用就是實現(xiàn)宏定義和條件編譯。
18.C解析:C語言提供了許多輸入函數(shù),其中有:getchar(輸入字符)、scanf(格式輸入)和gets\u3000(輸入字符串)等。題目要求輸入的是字符串,所以可以排除getchar,而且要求輸入的字符串中包含空格,而scanf函數(shù)默認(rèn)將輸入的空格字符作為分割符,所以空格不會被輸入,故可排除scanf。getc的作用是從文件中輸入一個字符,故也不可取。gets函數(shù)可以輸入一整行作為一個字符串,其中也包括空格字符,故應(yīng)該選擇C。
19.C
20.B一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。
21.
【解析】由題目中所給公式,首先求出整數(shù)m的階乘,然后求出m的階乘除以n的階乘,最后再求出整個表達(dá)式的值。將整個表達(dá)式的值返回到主函數(shù)當(dāng)中。
22.
程序設(shè)計題解析:
【考點分析】
本題考查:指針型變最定義;wh丑e循環(huán)語句;語句條件
表達(dá)式;字符串結(jié)束標(biāo)識‘\0’。
【解題思路】
函數(shù)fun的功能:除了字符串前導(dǎo)的*號之外,將串中其他+號全部刪除。
【解答本題】
(1)定義一個臨時指針P,初始指向原串首地址;(2)利用循環(huán)語句把字符串前導(dǎo)*號拷貝到原串;(3)繼續(xù)移動指針,把串中和串尾的非*號字符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符‘、O’。
【解題寶典】
要刪除字符串中的指定字符,我們通常采用保留非指定字符的方法??梢詫⒎侵付ㄗ址A粼谠?,即將需要保留的字符從原串的起始位置重新賦值;也可以保留到新串,即新建一個字符串,存放要保留的字符。
23.
【解析】要計算n門課程的平均分,首先可以求得n門課程的總分,然后除以n得到其平均分,最后將其平均分返回到主函數(shù)中。
24.
【解析】使數(shù)組左下半三角元素中的值加上n,首先要找出數(shù)組中下半三角元素。數(shù)組中下半三角元素的特點是,其列下標(biāo)小于等于行下標(biāo)。根據(jù)這個特點找出所有的下半三角元素再加上n放在原來的位置上。
25.
【解析】本題考查的是for循環(huán)和指針變量。通過for循環(huán)實現(xiàn)對數(shù)組的遍歷,形參iilax和d都是指針型變量,所以引用它們指向的變量時要進行指針運算。先有*max=a[0],在遍歷中如果遇到比max大的元素,則將a[i]賦值給max,下標(biāo)i賦值給*d。循環(huán)語句用來遍歷數(shù)組元素,然后通過條件語句比較數(shù)組元素找到最大值。
26.\n#include'stdio.h'
\n#defineN3
\nstructstudent
\n{longstu_num;charsex;
\ncharname[15];intscore[4];
\nfloataverage;};
\nmain
\n{intI,j,index;floatsum,max;
\nstructstudentstuarr[N];
\nfor(I=0;I{printf('pleaseinput%dstudentinformation:\\n',I+1);
\nscanf('%ld,%c,%s',&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);
\nfor(j=0;j<4;j++)
\nscanf('%d',&stuarr[I].score[j]);}
\nfor(I=0;I{sum=0.0;
\nfor(j=0;j<4;j++)
\nsum+=stuarr[I].score[j];
\nstuarr[I].a(chǎn)verage=sum/4.0;}
\nmax=stuarr[0].a(chǎn)verage;
\nindex=0;
\nfor(I=1;Iif(stuarr[I].a(chǎn)verage>max)
\n{max=stuarr[I].a(chǎn)verage;
\nindex=I;}
\nprintf('總平均成績最高的學(xué)生信息是學(xué)號=%ld,性別=%c,姓名=%s,平均成績=%4.1f\\n',stuarr[index].stu_num,stuarr[index].sex,stuarr[index].name,stuarr[index].a(chǎn)verage);
\n}\n27.\n\tcharch;
\ninti,m,n;
\ni=0:
\nm=n=strlen(str)-1;//求字符串str長度
\nwhile(i<(n+1)/2)//循環(huán)逆置交換
\n{
\nch=str[i];
\nstr[i]=str[m];
\nstr[m]=ch:
\ni++;
\nm--;
\n}
\n【解析】在fun函數(shù)中,首先求行字符串的長度,然后通過循環(huán)進行字符交換。要注意的是,如果字符串長度是奇數(shù),則最中間的元素在逆置前后的位置是沒有改變的。\n
28.
【解析】按照題目中要求,求出能整除x且不是偶數(shù)的各整數(shù)。首先判斷小于等于整數(shù)x的所有奇數(shù)是否能被x整除,將能被x整除的奇數(shù)放入數(shù)組pp中。最后將數(shù)組pp中元素的個數(shù)返回到主函數(shù)中。
29.
【解析】此題是刪除字符串中的星號。思路是通過for循環(huán)來完成對字符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中星號前的位置,“if(a[i]!=ˊ*ˊ)”“a[j++]=a[i]”,最后返回主函數(shù)將刪除*后的字符串輸出即可。
30.
31.(1)for(i=0;str[i];i++)(2)if(substr[k+1]==‘\O’)(1)for(i=0;str[i];i++)(2)if(substr[k+1]==‘\O’)解析:本題中函數(shù)的功能是統(tǒng)計子字符串substr在字符串str中出現(xiàn)的次數(shù)。解題過程是在str中查找指定的子串,并且統(tǒng)計子串出現(xiàn)的次數(shù)。
32.(1)錯誤:fun(doubleadoublex0)正確:doublefun(doubleadoublex0)(2)錯誤:if(fabs(x1-x0)>0.00001)正確:if(fabs(x1-x0)>=0.00001)(1)錯誤:fun(doublea,doublex0)正確:doublefun(doublea,doublex0)\r\n(2)錯誤:if(fabs(x1-x0)>0.00001)正確:if(fabs(x1-x0)>=0.00001)解析:用C語言求平方根的方法一般有兩種經(jīng)典的算法,它們分別是迭代法和遞歸法,本題要求用遞歸法。該程序采用了if語句,錯誤在于if語句的判斷條件,程序的含義是當(dāng)?shù)Y(jié)果差小于誤差時進行循環(huán),故正確的應(yīng)該是if(fabs(x1-x0)>=0.00001)。
33.(1)錯誤:intfun(ihtnintxx[][])正確:intltm(ihtmintr.x[][M])(2)錯誤:printf("%4ff'xx[i]fj]);正確:printf("%4d"xx[i][j]);(1)錯誤:intfun(ihtn,intxx[][])正確:intltm(ihtmintr.x[][M])\r\n(2)錯誤:printf('%4f,f\',xx[i]fj]);正確:printf('%4d',xx[i][j]);解析:該題錯誤比較隱蔽,一般的C語言上機考試很少涉及printf順數(shù)中的錯誤,在這里,我們只要明白“d”和“f”的區(qū)別就OK了。格式字符d表示:以帶符號的十進制形式輸出整數(shù)(正整數(shù)不輸出符號);格式字符f表示;以小數(shù)形式輸出單、雙精度,隱含輸出6位小數(shù)。
34.(1)doublefun(intn)(2)returnsum;(1)doublefun(intn)(2)returnsum;解析:本題中函數(shù)的功能是計算并輸出該數(shù)列前n項的平方根之和sum。解題思路首先根據(jù)題干求得每一項的值,然后再計算數(shù)列前n項的平方根之和。
35.(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)。
36.(1)錯誤:p=j正確:p=;(2)錯誤:p=j;正確:p=i;(1)錯誤:p=j\r\n正確:p=;\r\n(2)錯誤:p=j;\r\n正確:p=i;解析:題中提到按“從小到大”的順序排序,這類題目都可以用選擇排序法,即從后N個比較過程中,選擇一個最小的與第一個元素交換,以此類推,即用第二個元素與后N-1個進行比較,并進行交換。
錯誤1:此處錯誤比較明顯,p=j后面應(yīng)加分號。
錯誤2:根據(jù)選擇排序法的思路,此處應(yīng)將i賦給p。
37.(1)for(i=2;i<=m;i++)(2)y-=1.0/(i*i);(1)for(i=2;i<=m;i++)(2)y-=1.0/(i*i);解析:該程序功能是根據(jù)題目要求計算公式。從已給定源程序的main主函數(shù)開始入手,“
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球活塞連桿套件行業(yè)調(diào)研及趨勢分析報告
- 家電維修合同協(xié)議書正規(guī)范本
- 垃圾桶項目采購合同
- 出租車租賃合同模板
- 2025居間合同協(xié)議書范本
- 產(chǎn)品全國總代理合同范本年
- 宣傳欄制作安裝合同書
- 委托合同范文年
- 2025年中圖版八年級歷史上冊階段測試試卷
- 2024年高考政治(安徽卷)真題詳細(xì)解讀及評析
- 數(shù)字經(jīng)濟學(xué)導(dǎo)論-全套課件
- 動物檢疫技術(shù)-動物檢疫的對象(動物防疫與檢疫技術(shù))
- 中考記敘文閱讀
- 《計算機應(yīng)用基礎(chǔ)》-Excel-考試復(fù)習(xí)題庫(含答案)
- 產(chǎn)科溝通模板
- 2023-2024學(xué)年四川省成都市小學(xué)數(shù)學(xué)一年級下冊期末提升試題
- GB/T 7462-1994表面活性劑發(fā)泡力的測定改進Ross-Miles法
- GB/T 2934-2007聯(lián)運通用平托盤主要尺寸及公差
- GB/T 21709.13-2013針灸技術(shù)操作規(guī)范第13部分:芒針
- 2022年青島職業(yè)技術(shù)學(xué)院單招語文考試試題及答案解析
- 急診科進修匯報課件
評論
0/150
提交評論