版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022年甘肅省白銀市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(12題)1.有以下程序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i+=2)for(j=i+2;j<n;j+=2)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)printf("%d.",aa[i]);printf("\n");}其輸出結果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.9,2,7,4,5,6,3,8,1,10,
D.1,10,3,8,5,6,7,4,9,2,
2.若已包括頭文件且已有定義charsl[18],s2={"ABCDE")和inti,現(xiàn)要將字符串”ABCDE”賦給sl,下列語句錯誤的是()。
A.strcpy(s1,s2)
B.strcpy(s1,"ABCDE");
C.sl="ABCDE";
D.for(i=0;i<6;i++)sl[i]=s2[i]
3.在有序表(12,24,36,48,60,72,84)中二分查找關鍵字72時所需進行的關鍵字比較次數(shù)是()
A.1B.2C.3D.4
4.在JavaScript語言中,要定義局部變量則可以()。
A.由關鍵字private在函數(shù)內定義
B.由關鍵字private在函數(shù)外定義
C.由var在函數(shù)內定義
D.由關鍵字var在函數(shù)外定義
5.
6.函數(shù)原形中,下列()是不必要的。
A.函數(shù)的類型B.形式參數(shù)名C.函數(shù)名D.形式參數(shù)類型
7.
8.在深度為5的滿二叉樹葉中,葉子結點的個數(shù)為()。
A.32B.31C.16D.15
9.在C語言中,只有在使用時才占用內存單元的變量,其存儲類型是()。
A.auto和register
B.extern和register
C.auto和static
D.static和register
10.已知廣義表的表頭為A,表尾為(B,C),則此廣義表為________
A.(A,(B,C))B.(A,B,C)C.(A,B,C)D.((A,B,C))
11.面向對象方法中,繼承是指()。
A.一組對象所具有的相似性質B.一個對象具有另一個對象的性質C.各對象之間的共同性質D.類之間共享屬性和操作的機制
12.在學生管理的關系數(shù)據(jù)庫中,存取一個學生信息的數(shù)據(jù)單位是()。
A.文件B.數(shù)據(jù)庫C.字段D.記錄
二、2.填空題(12題)13.若a=1,b=2,則表達式!(x=A)‖(y=B)&&0的值是______。
14.數(shù)據(jù)結構分為邏輯結構與存儲結構,線性鏈表屬于【】。
15.以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當字符串是回文時,函數(shù)數(shù)返回字符串:yes!否則函數(shù)返回這符串:no!并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請?zhí)羁?/p>
#include<string.h>
char*huiwen(char*str)
{char*p1,*p2;inti,t=0;
pl=str;p2=______;
for(i=0;i<=strlen(str)/2;i+*)
if(*p1++!=*p2--){t=1;break;}
if(______)return("yes!");
elsereturn(*no!");
}
main()
{charstr[50];
printf("Input:");scanf("%s",str);
printf("%s\n",______);
}
16.軟件維護活動包括以下幾類:改正性維護、適應性維護、【】維護和預防性維護o
17.以下程序運行后的輸出結果是【】。
main()
{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)a[j][i]=0;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)printf("%d",a[i][j]);
printf("\n");
}
}
18.棧中允許進行插入和刪除的一端叫做______。
19.若有以下程序:
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(3,4),f(3,5));
printf("%d\n",d);
}
執(zhí)行后輸出結果是【】。
20.數(shù)據(jù)庫保護分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復。
21.下面程序輸出的結果是()。intm=17;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=5,b=7;printf("%d\n”,fun(a,B)/m);}
22.下列程序執(zhí)行后輸出的結果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
23.執(zhí)行以下程序的輸出結果是()。
#include<stdio.h>
#defineM5
#defineNM+M
main()
{intk;
k=N*N*5;printf(”%d\n",k);
}
24.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。
三、3.程序設計題(10題)25.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已存放在主函數(shù)的結構體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把低于平均分的學生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。
[注意]部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在fun函數(shù)的花括號中填入所編寫的若干語句。
[試題源程序]
#include<stdio.h>
#defineN8
typedefstruct
{
charnum[10];
doubles;
}STREC;
doublefun(STREC*a,STREC*b,int*n)
{
}
voidmain()
{
STRECs[N]={{"GA05",85},
{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},
{"GA06",87}};
STRECh[N],t;FILE*out;
inti,j,n;
doubleave;
ave=fun(s,h,&n);
printf("The%dstudentdatawhichislowerthan%7.3f:\n",n,ave);
for(i=0;i<n;i++)
printf("%s%4.1f\n",h[i].num,h[i].s);
printf("\n");
ut=fopen("out.dat","W");
fprintf(out,"%d\n%7.3f\n",n,ave);
for(i=0;2<n-1;i++)
for(j=i+1;j<n;j++)
if(h[i].s>h[j].s)
{
t=h[i];
h[i]=h[j];
h[j]=t;
}
for(i=0;2<n;i++)
fprintf(out,"%4.1f\n",h[i].s);
fclose(out);
}
26.請編寫一個函數(shù)fun,它的功能是:比較兩個字符串的長度,(不得調用C語言提供的求字符串長度的函數(shù)),函數(shù)返回較長的字符串。若兩個字符串長度相同,則返回第一個字符串。
例如,輸入beijingshah曲aj(為回車鍵),函數(shù)將返回shanghai。
注意:部分源程序存在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
27.請編寫函數(shù)fun(),該函數(shù)的功能是:移動字符串中的內容,移動的規(guī)則是把第1到第m個字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
例如,字符串中原有的內容為ABCDEFGHIJK,m的值為3,移動后,字符串中的內容應該是DEFGHIJKABC。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
#defineN80
voidfun(char*w,intm)
{
}
main()
{
chara[N]="ABCDEFGHIJK";
intm;
printf("Theoriginastring:\n");
puts(a);
printf("\n\nEnterm:");
scanf("%d",&m);
fun(a,m);
printf("\nThestringaftermoving:\n");
puts(a);
printf("\n\n");
}
28.程序定義了NxN的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun,函數(shù)的功能是:求出數(shù)組周邊元素的平均值并作為函數(shù)值返給主函數(shù)中的s。
例如:a數(shù)組中的值為:
則返回主程序后s的值應為:3.375。
注意:部分源程序存在文件PROGl.C文件中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
29.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結構體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:按分數(shù)的高低排列學生的記錄,高分在前。
注意:部分源程序給出如下.
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fum的花括號中填入所編寫的若啡:語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STRECa[])
{
}
main()
{
STRECsIN]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",91},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},
{"GA014",91},{"GA011",66},{"GA017",64},
{"GA018",64},{"GA016",72}};
inti;
FILE*out;
fun(s);
printf("Thedataaftersorted:In");
for(i=0;i<N;i++)
{if((i)%4=-0)
/*每行輸出4個學生記錄*/
printf("\n");
printf("%s%4d",s[i].num,s[i].s);
}
printf("\n");
out=fopen("out16.dat","w");
for(i=0;i<N;i++);
{if((i)%4==0&&i)
fprintf(out,"\n");
fprintf(out,"%4d",s[i].s);
}
fprintf(out,"\n");
fclose(out);
}
30.請編寫一個函數(shù)voidfun(cbara[],charb[],intn),其功能是:刪除一個字符申中指定下標的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標。
例如,輸入一個字符串world,然后輸入3,則調用該函數(shù)后的結果為word。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineLEN20
voidfun(chara[],charb[],intn)
{
}
main()
{
charstr1[LEN],str2[LEN];
intn;
clrscr();
printf("Enterthestring:\n");
gets(str1);
printf("Enterthepositionofthestring
deleted:");
scanf("%d",&n);
fun(str1,str2,n);
printf("Thenewstringis:%s\n",
str2);
}
31.請編寫函數(shù)fun(),該函數(shù)的功能是:將兩個兩位數(shù)的正整數(shù)a,b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上。
例如,當a=45時,b=12,調用到該函數(shù)后,c=5142。
注意:部分源程序給出如下.
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(inta,intb,long*c)
{
}
main()
{
inta,b;
longc;
clrscr();
printf("Inputa,b:");
scanf(,%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:%ld\n",c);
}
32.請編寫一個函數(shù)fun,它的功能是:根據(jù)以下公式求π的值(要求滿足精度0.0005,即某項小于0.0005時停止迭代):
程序運行后,如果輸入精度0.0005,則程序輸出為3.140578。
注意:部分源程序存在文件PROGl.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
33.m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將高于平均分的人數(shù)作為函數(shù)值返回,將高于平均分的分數(shù)放在叩所指的數(shù)組中。
例如,當score數(shù)組中的數(shù)據(jù)為24,35,88,76,90,54,59,66,96時,函數(shù)返回的人數(shù)應該是5,up中的數(shù)據(jù)應為88,76,90,66,96。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(intscore[],intm,intup[])
{
}
main()
{
inti,n,up[9];
intscore[9]={24,35,88,76,90,54,
59,66,96};
clrscr();
n=fun(score,9,up);
printf("\nuptotheaveragescoreare:");
for(i=0;i<n;i++)
printf("%d",up[i]);
}
34.請編寫函數(shù)fun(),它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。
S=1-x+x2(上標)/2!-x3(上標)/3!+…+(-1*x)n(上標)/n!
例如,當n=15,x=0.5時,函數(shù)值為0.606531。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
doublefun(doublex,intn)
{
}
main()
{
clrscr();
printf("%f",fun(0.5,15));
}
四、單選題(0題)35.以下正確的字符串常量是()。
A."\\\"B.abcC.OlympicGamesD.""
五、單選題(0題)36.設有以下說明語句structnum{inta;floatb;}numl;則下面的敘述不正確的是______。
A.struct是結構體類型的關鍵字
B.structnum是用戶定義的結構體類型
C.numl是用戶定義的結構體類型名
D.a和b都是結構體成員名
六、單選題(0題)37.在具有n個結點的單鏈表中,實現(xiàn)()的操作,其算法的時間復雜度是O。
A.求鏈表的第i個結點B.在地址為P的結點之后插入一個結點C.刪除表頭結點D.刪除地址為P的結點的后繼結點
參考答案
1.C解析:sort函數(shù)的功能實際上是對數(shù)組中奇數(shù)位置上的數(shù)進行從大到小排序。排序后的結果應該為9,2,7,4,5,6,3,8,1,10。
2.C數(shù)組名sl是代表sl數(shù)組首地址的地址常量,因為“=”左邊不能出現(xiàn)常量,所以s1="ABCDE"的方法是錯誤的。
3.B
4.C
5.B
6.A
7.B
8.C根據(jù)二叉樹的性質及定義,一棵深度為k且有2k-1個結點的二叉樹為滿二叉樹。滿二叉樹的葉子結點為最后一層的結點數(shù),又根據(jù)滿二叉樹的性質,在滿二叉樹的第i層上至多有2i-1個結點。因此深度為5的滿二叉樹的葉子結點數(shù)為25-1=16個。
9.A解析:在C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時才分配內存空間,函數(shù)調用時返回的地址和自動類局部變量等存放在動態(tài)存儲區(qū)域中。auto變量和register變量都屬于自動類局部變量,因此選項A正確。static說明的變量為靜態(tài)變量,靜態(tài)變量在內存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運行結束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個程序運行期間都占用內存空間。
10.B
11.D繼承是面向對象的方法的一個主要特征,是使用已有的類的定義作為基礎建立新類的定義技術。廣義的說,繼承是指能夠直接獲得已有的性質和特征,而不必重復定義它們,所以說繼承是指類之間共享屬性和操作的機制。
12.D解析:在關系數(shù)據(jù)表中,行稱為元組,對應存儲文件中的記錄,列稱為屬性,對應存儲文件中的字段,所以本題答案為D。
13.00解析:根據(jù)運算符的運算順序可知,該表達式最后運算的是與(&&)運算,而任何表達式與“0”進行“與”運算,結果都為0。
14.存儲結構
15.str+strlen(p1)-1或str+strlen(str)-1殘str-1+strlen(str)或3tr-1+strlen(p1)t==0或!t或t=='\0'huiwen(str)str+strlen(p1)-1或str+strlen(str)-1殘str-1+strlen(str)或3tr-1+strlen(p1)\r\nt==0或!t或t=='\\0'\r\nhuiwen(str)解析:判斷回文教一般使用兩個指針或下標變量分別從檢查串的第1個字符和最后一個字符開始相向移動,并比較兩者內容是否相同,直到中間相遇一直相同則是回文數(shù),否則不是。函數(shù)huiwen中開始定義了兩個字符指針p1和p2,并讓p1指向str的開始位置,所以p2應該指向str的尾部,即&str[strlen(sir)-1]或寫成str+strlen(str)-1或者其他等價形式。然后使用一個循環(huán),循環(huán)str的長度的一半次數(shù),比較p1和p2的內容,并分別遞增和遞減這兩個指針。若有不同,則讓標志t為1,并跳出循環(huán)。所以最后一個if語句應該為判斷標志t是否為1,即應該填t==0或者其他等價形式。在主函數(shù)中,應該輸出huiwen()函數(shù)的返回結果,印最后一空應該填huiwen(str)。
16.完善性完善性解析:軟件維護活動包括以下幾類:改正性維護、適應性維護、完善性維護和預防性維護。完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。
17.123056009123\r\n056\r\n009解析:數(shù)組a中元素的初值為:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。執(zhí)行第1個for循環(huán)后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2個for循環(huán)的功能是將數(shù)組元素按照3行3列的格式輸出。
18.棧頂棧頂解析:棧是限定在表的一端進行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。
19.99解析:在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給d。函數(shù)的第一個參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)×3=3,f(3,5)返回值為(5-3)×3=6,那么函數(shù)f(f(3,4),f(3,5))等價于函數(shù)f(3,6)其返回值為(6-3)×3=9。因此d被賦值為9;所以輸出9。
20.完整性控制完整性控制
21.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作甩域在函數(shù)級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。
22.1212解析:本題的第—個for循環(huán)用于紿數(shù)組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結果為12。
23.5555解析:本題考查的重點是對宏定義的理解。#define指令定義一個標識符和一個串,編譯程序在對C源程序處理時.發(fā)現(xiàn)該標識符都用該串替換,因此,在語句k=N*N*5將替換成k=M+M*M+M*5后,M被替換成5,從而k=5+5*5+5*5=55。
24.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。
25.intfun(STREC*aSTREC*bint*n){doubleave=0.0;intij=0;*n=0;for(i=0;i<N;i++)ave+=a[i].s;ave/=N;for(i=0;i<N;i++)if(a[i].s<ave){b[j]=a[i];(*n)++;j++;}returnave;}intfun(STREC*a,STREC*b,int*n)\r\n{\r\ndoubleave=0.0;\r\ninti,j=0;\r\n*n=0;\r\nfor(i=0;i<N;i++)\r\nave+=a[i].s;\r\nave/=N;\r\nfor(i=0;i<N;i++)\r\nif(a[i].s<ave)\r\n{\r\nb[j]=a[i];\r\n(*n)++;\r\nj++;\r\n}\r\nreturnave;\r\n}解析:本題的設計思路是:(1)定義兩個變量,分別用于保存總分和平均值,定義循環(huán)變量并賦初值:(2)利用循環(huán)語句遍歷所有學生的分數(shù),累加求和并計算初值;(3)再次遍歷結構體數(shù)組,找出低于平均分的分數(shù),把該學生的記錄保存在形參數(shù)組b中,并記錄其個數(shù);(4)用return語句返回平均值。
26.
解析:該程序功能是比較兩個字符串的長度。解題過程是首先分別求得兩個字符串的長度,然后對這兩個值進行判斷,實現(xiàn)兩個字符串長度的比較。
27.voidfun(char*wintm){intij;chart;for(i=1;i<=m;i++)/*進行m次的循環(huán)左移*/{t=w[0];for(j=1/w[j]!='\0';j++)/*從第2個字符開始以后的每個字符都依次前移一個字符*/w[j-1]=w[j];w[j-1]=t;/*將第1個字符放到最后一個字符中*/}}voidfun(char*w,intm)\r\n{\r\ninti,j;\r\nchart;\r\nfor(i=1;i<=m;i++)/*進行m次的循環(huán)左移*/\r\n{t=w[0];\r\nfor(j=1/w[j]!='\\0';j++)/*從第2個字符開始以后的每個字符都依次前移一個字符*/\r\nw[j-1]=w[j];\r\nw[j-1]=t;/*將第1個字符放到最后一個字符中*/\r\n}\r\n}解析:我們在學習C語言的時候,應該廣泛地應用到循環(huán)的方法,本題應采用“循環(huán)左移”的算法。即從第2個字符開始以后的每個字符都依次前移一個字符,而原來的第1個字符放在串中的最后一個字符。當要平移m個字符時,則要進行m次的循環(huán)左移。內嵌的循環(huán)的作用是完成從第2個字符開始以后的每個字符都依次前移一個字符,w[j-1]=t的作用是將第1個字符放到最后一個字符中。
28.
解析:該程序功能是求出數(shù)組周邊元素的平均值。其中周邊元素是指第一行的元素的行下標為0,或者第n行的元素行下標為n-1,或者第一列元素的元素列下標為0,或者第n列的元素的列下標為n-1。
29.intfun(STRECa[]){intij;STRECt;for(i=1;i<N;i++)/*用冒泡法進行排序進行N-1次比較*/for(j=0;j<N-1;j++)/*在每一次比較中要進行N-1次兩兩比較*/if(a[j].s<a[j+1].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分數(shù)的高低排列學生的記錄高分在前*/}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=1;i<N;i++)/*用冒泡法進行排序,進行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每一次比較中要進行N-1次兩兩比較*/\r\nif(a[j].s<a[j+1].s)\r\n{t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分數(shù)的高低排列學生的記錄,高分在前*/\r\n}解析:冒泡法算法思路:如果有N個數(shù),則要進行N-1次比較,在每一次比較中要進行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個數(shù)進行比較并將其中大的數(shù)放在前或在后(若要求從小到大排序,則大的數(shù)要放在后。反之則對調),即兩兩比較后這兩個數(shù)要形成題中所要求的順序。由于總是從頭到尾進行比較,所以第1次比較結束后,最大(或最小)數(shù)肯定在最后,第2次比較結束后,次最大(或次最小)數(shù)肯定在倒數(shù)的第2個數(shù),依次類推,所以進行第一次比較時必須比較到最后一個數(shù),而進行第2次比較時只要比較到倒數(shù)的第2個數(shù)即可,所以進行第i次比較時只需比較N-i次即可(這種算法較難理解,但它是最好的)。
選擇法算法思路:如果有N個數(shù)則從頭到倒數(shù)的第2個數(shù)一個一個往后走動,每走動1個數(shù)總是將這個數(shù)與其后的所有數(shù)進行比較并找出它們的最大(或最小)數(shù),找出最大(或最小)數(shù)后再將所得的最大(或最小)數(shù)與該數(shù)進行交換,交換后再走到下一個數(shù)依次交換到結束。此外,選擇法還可用如下思路:如果有N個數(shù),則從頭到倒數(shù)的第2個數(shù)—個一個往后走動,每走動一個數(shù)總是將這個數(shù)與其后的所有數(shù)進行兩兩比較,在比較時按順序將進行比較的這兩個數(shù)排序(即交換)。
插入法算法思路:先對頭兩個數(shù)進行排序。然后把第3個數(shù)插入到前兩個數(shù)中,插入后前3個數(shù)依然有序;再把第4個數(shù)插入到前3個數(shù)中,插入后前4個數(shù)依然有序;依次插完所有的數(shù)。具體執(zhí)行方式(假設從小到大排序):從第2個數(shù)開始往后一個一個走動直到最后。每走到1個數(shù)總是將該數(shù)(先將其存到1個臨時變量中)與其前面的數(shù)進行比較(比較的順序總是從后往前進行),在比較時只要發(fā)現(xiàn)該數(shù)比被比較的數(shù)小,就將被比較的數(shù)往后移1位,然后該數(shù)還要冉與前1個數(shù)進行比較,亢到發(fā)現(xiàn)該數(shù)比被比較的數(shù)大或己比較到頭(即第1個數(shù)的前面),并將該數(shù)存入當前被比較數(shù)的后1位(存儲空間)。
如果有整型一維數(shù)組a其有N個元素,要求將其按從小到大排序。注意元素下標是從0始的。
冒泡法:
for(i=1;i<N;i++)
for(j=0;N-1;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=a[j];}
選擇法
for(i=0i<N-1;i++)
{p=i;
for(ji+1;j<N;j++)
if(a[p]>a[j])p=j;
if{p!=i)
t=a[i];a[i]=a[p];a[p]=t;
}
插入法
for{i=1;i<N;i++}
{t=a[i];
for{j=i-1;a[j]>t&&j>=0;j--)
a[j+1]=a[j];
a[j+1]=t;
}
30.voidfun{chara[]charb[]intn){intik=0;for(i=0;a[i]!=‘\0’;i++)if(i!=n)/*將不是指定下標的字符存入數(shù)組b中*/b[k++]=a[i];b[k]=‘\0’;/*在字符串最后加上結束標記*/}voidfun{chara[],charb[],intn)\r\n{\r\ninti,k=0;\r\nfor(i=0;a[i]!=‘\\0’;i++)\r\nif(i!=n)/*將不是指定下標的字符存入數(shù)組b中*/\r\nb[k++]=a[i];\r\nb[k]=‘\\0’;/*在字符串最后加上結束標記*/\r\n}解析:本題要求刪除字符串中指定下標的字符,即相當于把不是指定下標的字符留下。所以要用if(i!=n),注意不能寫成“=”運算。
31.voidfun(intaihtblong*c){*c=a%10*i000+b/10*l00+a/10*10+b%10;/*將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上*/}voidfun(inta,ihtb,long*c)\r\n{\r\n*c=a%10*i000+b/10*l00+a/10*10+b%10;/*將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和\r\n個位數(shù)依次放在c數(shù)的百位和個位上*/\r\n}解析:本題中主要的問題是怎么取出a和b的個位數(shù)和十位數(shù),取出后怎么表示成c中相應的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對它們除10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。如45/10結果為4而不是4.5(這是由于兩個數(shù)都為整型,所以結果出為整型),45%10結果為5。若a為45,則a/10*10的結果為40而非45。乘1000,乘100和乘10的作用是分別使其膠面的數(shù)成為*c的千位數(shù)、百位數(shù)。注意要使用c時要注意進行指針運算,即*c,不能少了*號。
32.
解析:進入fun函數(shù),根據(jù)前面的分析:(1)根據(jù)題意,需要把每一項累加起來;若每一累加項的值放在t中,后一項等于前一項累加項的值乘以n/(2*n+1)來求得。
(2)根據(jù)公式將求到的π/2的值放到變量pi中,每累加一次,n的值就增加1,以便求下一個累加項,不斷重復,直到滿足題目中的精度要求。
33.intfun(intscore[]intmintup[]){intij=0;floatav=0.0for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]>av)/*如果分數(shù)高于平均分則將此分數(shù)放入up數(shù)組中*/up[j++]=score[i];returnj;/*返回高于平均分的人數(shù)*/}intfun(intscore[],intm,intup[])\r\n{\r\ninti,j=0;\r\nfloatav=0.0\r\nfor(i=0;i<m;i++)\r\nav=av+score[i]/m;/*求平均值*/\r\nfor(i=0;i<m;i++)\r\nif(score[i]>av)/*如果分數(shù)高于平均分,則將此分數(shù)放入up數(shù)組中*/\r\nup[j++]=score[i];\r\nreturnj;/*返回高于平均分的人數(shù)*/\r\n}解析:該題第1個循環(huán)的作用是求出平均分av,第2個循環(huán)的作用是找出高于平均分的成績并存入up數(shù)組中。
34.doublefun(doublexintn){intij=1;doubles=1.0s1=1.0;for(i=1;i<=n;i++){j=-1*j;s1=s1*i/*各項中的階乘*/s=s+j*pow(xi)/s1;/*按公式求出*/}returns;}doublefun(doublex,intn)\r\n{\r\ninti,j=1;\r\ndoubles=1.0,s1=1.0;\r\nfor(i=1;i<=n;i++)\r\n{\r\nj=-1*j;\r\ns1=s1*i/*各項中的階乘*/\r\ns=s+j*pow(x,i)/s1;/*按公式求出*/\r\n}\r\nreturns;\r\n}解析:本程序中用s1來表示每項的分母(即各項中的階乘),要注意本程序中s和s1的初值都為1。注意到本題的公式中是加減相間的,這里要學會使用語句j=-1*j來實現(xiàn)。
35.D選項A中“\\\”為轉義字符,故選項A錯誤,選項B和C顯然不是字符串常量。選項D是一個字符串常量,稱為空串。
36.C
37.A2022年甘肅省白銀市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(12題)1.有以下程序:#include<stdio.h>voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i+=2)for(j=i+2;j<n;j+=2)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)printf("%d.",aa[i]);printf("\n");}其輸出結果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.9,2,7,4,5,6,3,8,1,10,
D.1,10,3,8,5,6,7,4,9,2,
2.若已包括頭文件且已有定義charsl[18],s2={"ABCDE")和inti,現(xiàn)要將字符串”ABCDE”賦給sl,下列語句錯誤的是()。
A.strcpy(s1,s2)
B.strcpy(s1,"ABCDE");
C.sl="ABCDE";
D.for(i=0;i<6;i++)sl[i]=s2[i]
3.在有序表(12,24,36,48,60,72,84)中二分查找關鍵字72時所需進行的關鍵字比較次數(shù)是()
A.1B.2C.3D.4
4.在JavaScript語言中,要定義局部變量則可以()。
A.由關鍵字private在函數(shù)內定義
B.由關鍵字private在函數(shù)外定義
C.由var在函數(shù)內定義
D.由關鍵字var在函數(shù)外定義
5.
6.函數(shù)原形中,下列()是不必要的。
A.函數(shù)的類型B.形式參數(shù)名C.函數(shù)名D.形式參數(shù)類型
7.
8.在深度為5的滿二叉樹葉中,葉子結點的個數(shù)為()。
A.32B.31C.16D.15
9.在C語言中,只有在使用時才占用內存單元的變量,其存儲類型是()。
A.auto和register
B.extern和register
C.auto和static
D.static和register
10.已知廣義表的表頭為A,表尾為(B,C),則此廣義表為________
A.(A,(B,C))B.(A,B,C)C.(A,B,C)D.((A,B,C))
11.面向對象方法中,繼承是指()。
A.一組對象所具有的相似性質B.一個對象具有另一個對象的性質C.各對象之間的共同性質D.類之間共享屬性和操作的機制
12.在學生管理的關系數(shù)據(jù)庫中,存取一個學生信息的數(shù)據(jù)單位是()。
A.文件B.數(shù)據(jù)庫C.字段D.記錄
二、2.填空題(12題)13.若a=1,b=2,則表達式!(x=A)‖(y=B)&&0的值是______。
14.數(shù)據(jù)結構分為邏輯結構與存儲結構,線性鏈表屬于【】。
15.以下程序中函數(shù)huiwen的功能是檢查一個字符串是否是回文,當字符串是回文時,函數(shù)數(shù)返回字符串:yes!否則函數(shù)返回這符串:no!并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請?zhí)羁?/p>
#include<string.h>
char*huiwen(char*str)
{char*p1,*p2;inti,t=0;
pl=str;p2=______;
for(i=0;i<=strlen(str)/2;i+*)
if(*p1++!=*p2--){t=1;break;}
if(______)return("yes!");
elsereturn(*no!");
}
main()
{charstr[50];
printf("Input:");scanf("%s",str);
printf("%s\n",______);
}
16.軟件維護活動包括以下幾類:改正性維護、適應性維護、【】維護和預防性維護o
17.以下程序運行后的輸出結果是【】。
main()
{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)a[j][i]=0;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)printf("%d",a[i][j]);
printf("\n");
}
}
18.棧中允許進行插入和刪除的一端叫做______。
19.若有以下程序:
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(3,4),f(3,5));
printf("%d\n",d);
}
執(zhí)行后輸出結果是【】。
20.數(shù)據(jù)庫保護分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復。
21.下面程序輸出的結果是()。intm=17;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=5,b=7;printf("%d\n”,fun(a,B)/m);}
22.下列程序執(zhí)行后輸出的結果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
23.執(zhí)行以下程序的輸出結果是()。
#include<stdio.h>
#defineM5
#defineNM+M
main()
{intk;
k=N*N*5;printf(”%d\n",k);
}
24.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。
三、3.程序設計題(10題)25.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已存放在主函數(shù)的結構體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把低于平均分的學生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。
[注意]部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在fun函數(shù)的花括號中填入所編寫的若干語句。
[試題源程序]
#include<stdio.h>
#defineN8
typedefstruct
{
charnum[10];
doubles;
}STREC;
doublefun(STREC*a,STREC*b,int*n)
{
}
voidmain()
{
STRECs[N]={{"GA05",85},
{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},
{"GA06",87}};
STRECh[N],t;FILE*out;
inti,j,n;
doubleave;
ave=fun(s,h,&n);
printf("The%dstudentdatawhichislowerthan%7.3f:\n",n,ave);
for(i=0;i<n;i++)
printf("%s%4.1f\n",h[i].num,h[i].s);
printf("\n");
ut=fopen("out.dat","W");
fprintf(out,"%d\n%7.3f\n",n,ave);
for(i=0;2<n-1;i++)
for(j=i+1;j<n;j++)
if(h[i].s>h[j].s)
{
t=h[i];
h[i]=h[j];
h[j]=t;
}
for(i=0;2<n;i++)
fprintf(out,"%4.1f\n",h[i].s);
fclose(out);
}
26.請編寫一個函數(shù)fun,它的功能是:比較兩個字符串的長度,(不得調用C語言提供的求字符串長度的函數(shù)),函數(shù)返回較長的字符串。若兩個字符串長度相同,則返回第一個字符串。
例如,輸入beijingshah曲aj(為回車鍵),函數(shù)將返回shanghai。
注意:部分源程序存在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
27.請編寫函數(shù)fun(),該函數(shù)的功能是:移動字符串中的內容,移動的規(guī)則是把第1到第m個字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
例如,字符串中原有的內容為ABCDEFGHIJK,m的值為3,移動后,字符串中的內容應該是DEFGHIJKABC。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
#defineN80
voidfun(char*w,intm)
{
}
main()
{
chara[N]="ABCDEFGHIJK";
intm;
printf("Theoriginastring:\n");
puts(a);
printf("\n\nEnterm:");
scanf("%d",&m);
fun(a,m);
printf("\nThestringaftermoving:\n");
puts(a);
printf("\n\n");
}
28.程序定義了NxN的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun,函數(shù)的功能是:求出數(shù)組周邊元素的平均值并作為函數(shù)值返給主函數(shù)中的s。
例如:a數(shù)組中的值為:
則返回主程序后s的值應為:3.375。
注意:部分源程序存在文件PROGl.C文件中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
29.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結構體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:按分數(shù)的高低排列學生的記錄,高分在前。
注意:部分源程序給出如下.
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fum的花括號中填入所編寫的若啡:語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STRECa[])
{
}
main()
{
STRECsIN]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",91},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},
{"GA014",91},{"GA011",66},{"GA017",64},
{"GA018",64},{"GA016",72}};
inti;
FILE*out;
fun(s);
printf("Thedataaftersorted:In");
for(i=0;i<N;i++)
{if((i)%4=-0)
/*每行輸出4個學生記錄*/
printf("\n");
printf("%s%4d",s[i].num,s[i].s);
}
printf("\n");
out=fopen("out16.dat","w");
for(i=0;i<N;i++);
{if((i)%4==0&&i)
fprintf(out,"\n");
fprintf(out,"%4d",s[i].s);
}
fprintf(out,"\n");
fclose(out);
}
30.請編寫一個函數(shù)voidfun(cbara[],charb[],intn),其功能是:刪除一個字符申中指定下標的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數(shù)組中,n中存放指定的下標。
例如,輸入一個字符串world,然后輸入3,則調用該函數(shù)后的結果為word。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineLEN20
voidfun(chara[],charb[],intn)
{
}
main()
{
charstr1[LEN],str2[LEN];
intn;
clrscr();
printf("Enterthestring:\n");
gets(str1);
printf("Enterthepositionofthestring
deleted:");
scanf("%d",&n);
fun(str1,str2,n);
printf("Thenewstringis:%s\n",
str2);
}
31.請編寫函數(shù)fun(),該函數(shù)的功能是:將兩個兩位數(shù)的正整數(shù)a,b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上。
例如,當a=45時,b=12,調用到該函數(shù)后,c=5142。
注意:部分源程序給出如下.
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(inta,intb,long*c)
{
}
main()
{
inta,b;
longc;
clrscr();
printf("Inputa,b:");
scanf(,%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:%ld\n",c);
}
32.請編寫一個函數(shù)fun,它的功能是:根據(jù)以下公式求π的值(要求滿足精度0.0005,即某項小于0.0005時停止迭代):
程序運行后,如果輸入精度0.0005,則程序輸出為3.140578。
注意:部分源程序存在文件PROGl.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
33.m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將高于平均分的人數(shù)作為函數(shù)值返回,將高于平均分的分數(shù)放在叩所指的數(shù)組中。
例如,當score數(shù)組中的數(shù)據(jù)為24,35,88,76,90,54,59,66,96時,函數(shù)返回的人數(shù)應該是5,up中的數(shù)據(jù)應為88,76,90,66,96。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(intscore[],intm,intup[])
{
}
main()
{
inti,n,up[9];
intscore[9]={24,35,88,76,90,54,
59,66,96};
clrscr();
n=fun(score,9,up);
printf("\nuptotheaveragescoreare:");
for(i=0;i<n;i++)
printf("%d",up[i]);
}
34.請編寫函數(shù)fun(),它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。
S=1-x+x2(上標)/2!-x3(上標)/3!+…+(-1*x)n(上標)/n!
例如,當n=15,x=0.5時,函數(shù)值為0.606531。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
doublefun(doublex,intn)
{
}
main()
{
clrscr();
printf("%f",fun(0.5,15));
}
四、單選題(0題)35.以下正確的字符串常量是()。
A."\\\"B.abcC.OlympicGamesD.""
五、單選題(0題)36.設有以下說明語句structnum{inta;floatb;}numl;則下面的敘述不正確的是______。
A.struct是結構體類型的關鍵字
B.structnum是用戶定義的結構體類型
C.numl是用戶定義的結構體類型名
D.a和b都是結構體成員名
六、單選題(0題)37.在具有n個結點的單鏈表中,實現(xiàn)()的操作,其算法的時間復雜度是O。
A.求鏈表的第i個結點B.在地址為P的結點之后插入一個結點C.刪除表頭結點D.刪除地址為P的結點的后繼結點
參考答案
1.C解析:sort函數(shù)的功能實際上是對數(shù)組中奇數(shù)位置上的數(shù)進行從大到小排序。排序后的結果應該為9,2,7,4,5,6,3,8,1,10。
2.C數(shù)組名sl是代表sl數(shù)組首地址的地址常量,因為“=”左邊不能出現(xiàn)常量,所以s1="ABCDE"的方法是錯誤的。
3.B
4.C
5.B
6.A
7.B
8.C根據(jù)二叉樹的性質及定義,一棵深度為k且有2k-1個結點的二叉樹為滿二叉樹。滿二叉樹的葉子結點為最后一層的結點數(shù),又根據(jù)滿二叉樹的性質,在滿二叉樹的第i層上至多有2i-1個結點。因此深度為5的滿二叉樹的葉子結點數(shù)為25-1=16個。
9.A解析:在C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時才分配內存空間,函數(shù)調用時返回的地址和自動類局部變量等存放在動態(tài)存儲區(qū)域中。auto變量和register變量都屬于自動類局部變量,因此選項A正確。static說明的變量為靜態(tài)變量,靜態(tài)變量在內存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運行結束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個程序運行期間都占用內存空間。
10.B
11.D繼承是面向對象的方法的一個主要特征,是使用已有的類的定義作為基礎建立新類的定義技術。廣義的說,繼承是指能夠直接獲得已有的性質和特征,而不必重復定義它們,所以說繼承是指類之間共享屬性和操作的機制。
12.D解析:在關系數(shù)據(jù)表中,行稱為元組,對應存儲文件中的記錄,列稱為屬性,對應存儲文件中的字段,所以本題答案為D。
13.00解析:根據(jù)運算符的運算順序可知,該表達式最后運算的是與(&&)運算,而任何表達式與“0”進行“與”運算,結果都為0。
14.存儲結構
15.str+strlen(p1)-1或str+strlen(str)-1殘str-1+strlen(str)或3tr-1+strlen(p1)t==0或!t或t=='\0'huiwen(str)str+strlen(p1)-1或str+strlen(str)-1殘str-1+strlen(str)或3tr-1+strlen(p1)\r\nt==0或!t或t=='\\0'\r\nhuiwen(str)解析:判斷回文教一般使用兩個指針或下標變量分別從檢查串的第1個字符和最后一個字符開始相向移動,并比較兩者內容是否相同,直到中間相遇一直相同則是回文數(shù),否則不是。函數(shù)huiwen中開始定義了兩個字符指針p1和p2,并讓p1指向str的開始位置,所以p2應該指向str的尾部,即&str[strlen(sir)-1]或寫成str+strlen(str)-1或者其他等價形式。然后使用一個循環(huán),循環(huán)str的長度的一半次數(shù),比較p1和p2的內容,并分別遞增和遞減這兩個指針。若有不同,則讓標志t為1,并跳出循環(huán)。所以最后一個if語句應該為判斷標志t是否為1,即應該填t==0或者其他等價形式。在主函數(shù)中,應該輸出huiwen()函數(shù)的返回結果,印最后一空應該填huiwen(str)。
16.完善性完善性解析:軟件維護活動包括以下幾類:改正性維護、適應性維護、完善性維護和預防性維護。完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。
17.123056009123\r\n056\r\n009解析:數(shù)組a中元素的初值為:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。執(zhí)行第1個for循環(huán)后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2個for循環(huán)的功能是將數(shù)組元素按照3行3列的格式輸出。
18.棧頂棧頂解析:棧是限定在表的一端進行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。
19.99解析:在主函數(shù)中函數(shù)f(f(3,4),f(3,5))的返回值賦給d。函數(shù)的第一個參數(shù)為f(3,4)的返回值,函數(shù)f(3,4)返回值為(4-3)×3=3,f(3,5)返回值為(5-3)×3=6,那么函數(shù)f(f(3,4),f(3,5))等價于函數(shù)f(3,6)其返回值為(6-3)×3=9。因此d被賦值為9;所以輸出9。
20.完整性控制完整性控制
21.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作甩域在函數(shù)級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。
22.1212解析:本題的第—個for循環(huán)用于紿數(shù)組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結果為12。
23.5555解析:本題考查的重點是對宏定義的理解。#define指令定義一個標識符和一個串,編譯程序在對C源程序處理時.發(fā)現(xiàn)該標識符都用該串替換,因此,在語句k=N*N*5將替換成k=M+M*M+M*5后,M被替換成5,從而k=5+5*5+5*5=55。
24.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。
25.intfun(STREC*aSTREC*bint*n){doubleave=0.0;intij=0;*n=0;for(i=0;i<N;i++)ave+=a[i].s;ave/=N;for(i=0;i<N;i++)if(a[i].s<ave){b[j]=a[i];(*n)++;j++;}returnave;}intfun(STREC*a,STREC*b,int*n)\r\n{\r\ndoubleave=0.0;\r\ninti,j=0;\r\n*n=0;\r\nfor(i=0;i<N;i++)\r\nave+=a[i].s;\r\nave/=N;\r\nfor(i=0;i<N;i++)\r\nif(a[i].s<ave)\r\n{\r\nb[j]=a[i];\r\n(*n)++;\r\nj++;\r\n}\r\nreturnave;\r\n}解析:本題的設計思路是:(1)定義兩個變量,分別用于保存總分和平均值,定義循環(huán)變量并賦初值:(2)利用循環(huán)語句遍歷所有學生的分數(shù),累加求和并計算初值;(3)再次遍歷結構體數(shù)組,找出低于平均分的分數(shù),把該學生的記錄保存在形參數(shù)組b中,并記錄其個數(shù);(4)用return語句返回平均值。
26.
解析:該程序功能是比較兩個字符串的長度。解題過程是首先分別求得兩個字符串的長度,然后對這兩個值進行判斷,實現(xiàn)兩個字符串長度的比較。
27.voidfun(char*wintm){intij;chart;for(i=1;i<=m;i++)/*進行m次的循環(huán)左移*/{t=w[0];for(j=1/w[j]!='\0';j++)/*從第2個字符開始以后的每個字符都依次前移一個字符*/w[j-1]=w[j];w[j-1]=t;/*將第1個字符放到最后一個字符中*/}}voidfun(char*w,intm)\r\n{\r\ninti,j;\r\nchart;\r\nfor(i=1;i<=m;i++)/*進行m次的循環(huán)左移*/\r\n{t=w[0];\r\nfor(j=1/w[j]!='\\0';j++)/*從第2個字符開始以后的每個字符都依次前移一個字符*/\r\nw[j-1]=w[j];\r\nw[j-1]=t;/*將第1個字符放到最后一個字符中*/\r\n}\r\n}解析:我們在學習C語言的時候,應該廣泛地應用到循環(huán)的方法,本題應采用“循環(huán)左移”的算法。即從第2個字符開始以后的每個字符都依次前移一個字符,而原來的第1個字符放在串中的最后一個字符。當要平移m個字符時,則要進行m次的循環(huán)左移。內嵌的循環(huán)的作用是完成從第2個字符開始以后的每個字符都依次前移一個字符,w[j-1]=t的作用是將第1個字符放到最后一個字符中。
28.
解析:該程序功能是求出數(shù)組周邊元素的平均值。其中周邊元素是指第一行的元素的行下標為0,或者第n行的元素行下標為n-1,或者第一列元素的元素列下標為0,或者第n列的元素的列下標為n-1。
29.intfun(STRECa[]){intij;STRECt;for(i=1;i<N;i++)/*用冒泡法進行排序進行N-1次比較*/for(j=0;j<N-1;j++)/*在每一次比較中要進行N-1次兩兩比較*/if(a[j].s<a[j+1].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分數(shù)的高低排列學生的記錄高分在前*/}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=1;i<N;i++)/*用冒泡法進行排序,進行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每一次比較中要進行N-1次兩兩比較*/\r\nif(a[j].s<a[j+1].s)\r\n{t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分數(shù)的高低排列學生的記錄,高分在前*/\r\n}解析:冒泡法算法思路:如果有N個數(shù),則要進行N-1次比較,在每一次比較中要進行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個數(shù)進行比較并將其中大的數(shù)放在前或在后(若要求從小到大排序,則大的數(shù)要放在后。反之則對調),即兩兩比較后這兩個數(shù)要形成題中所要求的順序。由于總是從頭到尾進行比較,所以第1次比較結束后,最大(或最小)數(shù)肯定在最后,第2次比較結束后,次最大(或次最小)數(shù)肯定在倒數(shù)的第2個數(shù),依次類推,所以進行第一次比較時必須比較到最后一個數(shù),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年合肥濱湖職業(yè)技術學院單招職業(yè)傾向性測試模擬測試卷附答案
- 2026年技師電工考試題庫附答案
- 2026年安徽省池州市單招職業(yè)適應性測試題庫附答案
- 2026年廣西高職單招測試題附答案
- 2026年宜春職業(yè)技術學院單招職業(yè)適應性測試模擬測試卷附答案
- 2026云南西雙版納州勐??h城鄉(xiāng)居民社會養(yǎng)老保險中心招聘城鎮(zhèn)公益性崗位人員2人筆試備考試題及答案解析
- 2026黑龍江農業(yè)職業(yè)技術學院公開招聘博士3人筆試參考題庫及答案解析
- 2025年四平市總工會公開招聘工會社會工作者筆試備考題庫附答案
- 2025廣西梧州市遴選公務員11人備考題庫附答案
- 2025廣東茂名市信宜市供銷合作聯(lián)社選聘事業(yè)編制工作人員1人備考題庫附答案
- 甘肅省酒泉市普通高中2025~2026學年度第一學期期末考試物理(含答案)
- 政治●天津卷丨2024年天津市普通高中學業(yè)水平選擇性考試政治試卷及答案
- GB 30254-2024高壓三相籠型異步電動機能效限定值及能效等級
- 鹽酸、硫酸產品包裝說明和使用說明書
- GB/T 43731-2024生物樣本庫中生物樣本處理方法的確認和驗證通用要求
- 2024年部門業(yè)務主管自查自糾問題總結及整改措施
- 汽車線束DFMEA設計失效模式和影響分析
- 烏魯木齊地區(qū)2024年高三年級第一次質量監(jiān)測(一模)英語試卷(含答案)
- plc電梯設計的參考文獻
- 中偉西部基地液氨制氨水項目環(huán)評報告
- 地下室消防安全制度
評論
0/150
提交評論