




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2021年山西省陽(yáng)泉市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷一(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(12題)1.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k);}執(zhí)行后的輸出結(jié)果是()。
A.5,5B.5,11C.11,11D.11,5
2.有如下程序:
main
{inta=2,b=-1.c=2;
if(a<b)if(b<0)c=0;
elsec++;
printf("%d\n",c);
}
該程序的輸出結(jié)果是()。A.A.0B.1C.2D.3
3.若已包括頭文件<string.h>且已有定義chars1[18],s2={"ABCDE"}和inti,現(xiàn)要將字符串"ABCDE"賦給s1,下列語(yǔ)句錯(cuò)誤的是()。
A.strcpy(s1,s2)
B.strcpy(s1,"ABCDE");
C.s1="ABCDE";
D.for(i=0;i<6;i++)s1[i]=s2[i];
4.若文件指針fp已正確指向文件,ch為字符型變量,以下不能把字符輸出到文件中的語(yǔ)句是()。
A.fget(f0,ch);
B.foutc(ch,fo);
C.fprinff(fp,”%c”,ch);
D.fwrite(&ch,sizeof(ch),1,fp);
5.若有定義“inta=3,*p=&a,**q=&p;”,則以下敘述中錯(cuò)誤的是()。
A.q是指針變量,*q就是變量a
B.p是指針變量,p指向變量a
C.q指向變量p,所以*q指向變量a
D.*p與**q都代表變量a
6.以下選項(xiàng)中表示空函數(shù)的是()。
A.intfun(){return0;}
B.intfun();
C.intfun(){}
D.intfun(inta,intB){return1;}
7.設(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||18.下列代碼的復(fù)雜度是多少?如果多于1個(gè)答案正確,選擇最小的那個(gè)。()A.O(n*m*m)B.O(n*log(m)*m)C.O(n+m+m)D.O(n*m)
9.以下選項(xiàng)中非法的表達(dá)式是()。
A.a+1=a+1
B.a=b==0
C.(Char.(100+100.
D.7<=X<60
10.面向?qū)ο蟮脑O(shè)計(jì)方法與傳統(tǒng)的面向過(guò)程的方法有本質(zhì)不同,它的基本原理是()。
A.模擬現(xiàn)實(shí)世界中不同事物之間的聯(lián)系
B.強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而不強(qiáng)調(diào)概念
C.使用現(xiàn)實(shí)世界的概念抽象地思考問(wèn)題從而自然地解決問(wèn)題
D.不強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而強(qiáng)調(diào)概念
11.為了避免在嵌套的條件語(yǔ)句ifelse中產(chǎn)生二義性,C語(yǔ)言規(guī)定,else子句總是與()配對(duì)。
A.縮排位置相同ifB.其前面最近的ifC.其后面最近的ifD.同一行上的if
12.
二、2.填空題(12題)13.數(shù)據(jù)流圖的類型有【】和事務(wù)型。
14.下列程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z+0;
elseZ+=1;
primf(“%d\n",z);
}
15.若x=3,y=2,z=1,表達(dá)式z-=x<y?x++:++y的值為_(kāi)_____。
16.算法的工作量大小和實(shí)現(xiàn)算法所需的存儲(chǔ)單元多少分別稱為算法的【】。
17.有以下程序:
#include<stdio.h>
intsub(intn)
{return(n/10+n%10);}
main()
{intx,y;
seanf("%d",&x);y=sub(sub(sub(x)));
printf("%d\n";,y);
}
若運(yùn)行時(shí)輸入:1234<回車(chē)>,程序的輸出結(jié)果是【】。
18.若已定義inta[10],i;以下fun函數(shù)的功能是,在第一個(gè)循環(huán)中給前10個(gè)數(shù)組元素依次賦1,2,3,4,5,6,7,8,9,10;在第二個(gè)循環(huán)中使a數(shù)組前10個(gè)元素中的值對(duì)稱拆疊,變成1,2,3,4,5,5,4,3,2,1。請(qǐng)?zhí)羁铡?/p>
fun(inta[])
{inti;
for(i=1;i<=10;i++)【】=i;
for(i=0;i<5;i++)【】=a[i];
}
19.下面程序的功能是:輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的所有整數(shù),請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,j;
for(i=0【】;i++)
{j=i*10+6;
if(【】)continue;
printf("%d",j);
}
}
20.以下程序的輸出結(jié)果是【】。
main()
{char*p=“abodefgh”,*r;
long*q;
q=(long*)p;
q++;
r=(char*)q;
printf(“%s\n”,r);
}
21.設(shè)二進(jìn)制數(shù)A是00101101,若想通過(guò)異或運(yùn)算ab使A的高4位取反,低4位不變,則二進(jìn)制數(shù)B應(yīng)是【】。
22.下面的函數(shù)fun的功能是將形參x的值轉(zhuǎn)換成二進(jìn)制數(shù),所得二進(jìn)制數(shù)的每一位放在一維數(shù)組中返回,二進(jìn)制的最低位放在下標(biāo)為0的元素中,其他依次類推,請(qǐng)?zhí)羁铡?/p>
fun(intx,intb[])
{intk=0,r;
do{
r=x%【】;
b[k++]=r;
x/=【】;
}while(x);}
23.函數(shù)delete(s,i,n)是作用是從字符串s中刪除從第i個(gè)字符開(kāi)始的n個(gè)字符,請(qǐng)?zhí)羁铡?/p>
voiddelete(chars[],inti,intn)
{intj,k,length=0;
while(s[length])
【】;
-i;
j=i;
}
if(【】)
{k=i+n;
if(i+n<=length)
while(k<length)
s[j++]=s[k++];
s[j]\'\0';
}
24.以下程序的運(yùn)行結(jié)果是______。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
三、3.程序設(shè)計(jì)題(10題)25.已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是:找出成績(jī)最低的學(xué)生記錄,通過(guò)形參返回主函數(shù)(規(guī)定只有一個(gè)最低分)。己給出函數(shù)的首部,請(qǐng)完成該函數(shù)。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<string.h>
#include<aonio.h>
#defineN10
typedefstructss
{charnum[10];
ihts;
}STU;
fun(STUail,STU*s)
{
}
main()
{
STUa[N]={{"A01",81},{"A02",89},
{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},
{"A09",80),{"Al0",71}},m;
inti;
clrscr0;
printf("*****Theoriginaldata*****");
for(i=0;i<N;i++)
printf("No=%sMark=%d\n",ail].num,
a[i].s);
fun(a,&m);
printf("*****THERESULT*****\n");
printf("Thelowest:%s,%d\n",m.num,
m.s);
}
26.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不得調(diào)用C語(yǔ)言提供的求字符串長(zhǎng)度的函數(shù)),函數(shù)返回較K的字符串。若兩個(gè)字符串長(zhǎng)度相等,則返回第1個(gè)字符串。
例如,輸入beijing<CR>shanghai<CR>(<CR>為回車(chē)鍵),函數(shù)將返回shanghai。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
char*fun(char*s,char*t)
{
}
main()
{
chara[20],b[10],*p,*q;
inti;
printf("Input1thstring:");
gets(a);
printf{"Input2thstring:");
gets(b);
printf("%s",fun(a,b));
}
27.請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是求Fibonacci數(shù)列中小于t的最大的一個(gè)數(shù),結(jié)果由函數(shù)返回。其中Fibonacci數(shù)列F(n)的定義為
F(0)=0,F(xiàn)(1)=1
F(n)=F(n-1)+F(n-2)
例如:t=1000時(shí),函數(shù)值為987。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<math.h>
#include<stdio.h>
intfun(intt)
{
}
main()
{
intn;
clrscr();
n=1000;
printf("n=%d,f=%d\n",n,fun(n));
}
28.請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是:求出1到m(含m)之內(nèi)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。
例如,若傳給m的值為50,則程序輸出:
7111421X283335424449
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
#defineM100
voidfun(intm,int*a,int*n)
{
}
main()
{
intaa[M],n,k;
clrscr();
fun(50,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)/*每行輸出20個(gè)數(shù)*/
{printf("%4d",aa[k]);
printf("\n");
}
else
printf("%4d",aa[k]);
printf("\n");
}
29.編寫(xiě)一個(gè)函數(shù)fun(),它的功能是:實(shí)現(xiàn)兩個(gè)字符串的連接(不使用庫(kù)函數(shù)strcat,即把p2所指的字符串連接到p1所指的字符串后。
例如,分別輸入下面兩個(gè)字符串:
FirstString
SecondString
則程序輸出:
FirstStringSecondString
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)小填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(charpi[],charp2[])
{
}
main()
{
chars1[80],s2[40];
clrscr();
printf("Enters1ands2:\n");
scanf("%s%s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("Invokefun(s1,s2):\n");
fun(s1,s2);
printf("Afterinvoking:\n");
printf("%s\n",s1);
}
30.編寫(xiě)函數(shù)fun(),它的功能是;根據(jù)以下公式求p的值,結(jié)果由函數(shù)值帶回。m與n為兩個(gè)正數(shù)且要求m>n。
P=m!/n!(m-n)!),例如:m=12,n=8時(shí),運(yùn)行結(jié)果為495.000000。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
floatfun(intm,intn)
{
}
main()
{
clrscr();
printf("p=%f\n",fun(12,8));
}
31.N名學(xué)生的成績(jī)已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:找出學(xué)生的最低分,由函數(shù)值返回。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<Stdlib.h>
#defineN8
StructSlist
{doubles;
StructSlist*next;
};
tyPedefStructSlistSTREC;
doublefun(STREC*h)
{
}
STREC*Creat(double*S)
{
STREC*h,*p,*q;
inti=0;
h=p={STREC*)malloc(sizeof(STREC));
p->S=0;
while(i<N)
/*產(chǎn)生8個(gè)節(jié)點(diǎn)的鏈表,各分?jǐn)?shù)存入鏈表中*/
{q=(STREC*)malloc(sizeOf(STREC));
p->S=S[i];i++;p->next=q;p=q;
}
p->next=NULL;
returnh;
/*返回鏈表的首地址*/
}
outlist(STREC*h)
{
STREC*p;
p=h;
printf("head");
do
{printf("->%2.of",p->s);p=p->next;}
/*輸/出各分?jǐn)?shù)*/
while(p!=NULL);
printf("\n\n");
}
main()
{
doubles[N]={56,89,76,95,91,68,75,
85},min;
STREC*h;
h=creat(S);
outlist(h);
min=fun(h);
printf("min=%6.If\n",min);
}
32.函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的十位和千位上,b中的十位和個(gè)位數(shù)依次放在變量c的個(gè)位和百位上。
例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=5241。
注意:部分源程序存在文件.PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
33.請(qǐng)編寫(xiě)一個(gè)函數(shù)unsignedfun(unsignedw),w是一個(gè)大于10的無(wú)符號(hào)整數(shù),若w是n(n≥2)位的整數(shù),則函數(shù)求出w的后n-1位的數(shù)作為函數(shù)值返回。
例如:w值為5923,則函數(shù)返回923;若w值為923,則函數(shù)返回23。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<conio.h>
#include<stdio.h>
unsignedfun(unsignedw)
{
}
main()
{
unsignedx;
clrscr();
printf("Enteraunsignedinteger
number:");
scanf("%u",&x);
printf("Theoriginaldatais:%u\n",x);
if(x<10)
printf("Dataerror!");
else
printf("Theresult:%u\n",fun(x));
}
34.請(qǐng)編寫(xiě)函數(shù)fun,函數(shù)的功能是:移動(dòng)字符串中的內(nèi)容,移動(dòng)的規(guī)則如下:把第1到第m個(gè)字符,平移到字符串的最后,把第m+l到最后的字符移到字符串的前部。
例如,字符串中原有的內(nèi)容為:ABCDEFGHIJK,m的值為3,則移動(dòng)后,字符串中的內(nèi)容應(yīng)該是:DEFGHIJKABC。
注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
四、單選題(0題)35.定義int*swap()指的是______。
A.—個(gè)返回整型值的函數(shù)swap()
B.一個(gè)返回指向整型值指針的函swap()
C.一個(gè)指向函數(shù)swap()的指針,函數(shù)返回一個(gè)整型值
D.以上說(shuō)法均錯(cuò)
五、單選題(0題)36.以下關(guān)于C語(yǔ)言的敘述中正確的是()。
A.C語(yǔ)言中的注釋不可以?shī)A在變量名或關(guān)鍵字的中間
B.C語(yǔ)言中的變量可以在使用之前的任何位置進(jìn)行定義
C.在C語(yǔ)言算術(shù)表達(dá)式的書(shū)寫(xiě)中,運(yùn)算符兩側(cè)的運(yùn)算數(shù)類型必須一致
D.C語(yǔ)言的數(shù)值常量中夾帶空格不影響常量值的正確表示
六、單選題(0題)37.已有定義:chara[]="xyz",b[]={'x','y','z'};,以下敘述中正確的是()。
A.數(shù)組a和b的長(zhǎng)度相同B.a數(shù)組長(zhǎng)度小于b數(shù)組長(zhǎng)度C.a數(shù)組長(zhǎng)度大于b數(shù)組長(zhǎng)度D.以述說(shuō)法都不對(duì)
參考答案
1.B解析:子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第1次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第1次函數(shù)調(diào)用結(jié)束時(shí),它們的值不釋放保持不變,所以第2次調(diào)用時(shí),局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時(shí),i的值為9,因此最終m的值為11。
2.Celse與離它最近的if構(gòu)成if…else語(yǔ)句,而當(dāng)a為2時(shí),第一個(gè)if語(yǔ)句不成立,因此什么也不做,即c的值仍然為2,故選擇C選項(xiàng)。
3.C解析:數(shù)組名s1是代表s1數(shù)組首地址的地址常量,而不是變量,因?yàn)椤?”左邊不能出現(xiàn)常量,因此sl='ABCDE'的方法是錯(cuò)誤的。
4.A函數(shù)fgete()從文件讀入一個(gè)字符到指定變量。函數(shù)fputc()將指定字符寫(xiě)入審文件中,函數(shù)fprinff(),fwrite()均是寫(xiě)入文件操作函數(shù)。因此選項(xiàng)B,c。D錯(cuò)誤。答案為A選項(xiàng)。
5.A由題意可知:指針變量p指向變量a,p的值是a的地址;指針變量q指向變量p,q的值是P的地址。q是指針變量,q指向p,*q是變量P,選項(xiàng)A錯(cuò)誤;p是指針變量,p指向變量a,選項(xiàng)B正確;由于q指向P,因此*q指向a,選項(xiàng)C正確;*p和**q都代表變量a,選項(xiàng)D正確。故本題答案為A選項(xiàng)。
6.C空函數(shù)是函數(shù)體沒(méi)有執(zhí)行語(yǔ)句的函數(shù)。選項(xiàng)A、D不是空函數(shù);選項(xiàng)B是函數(shù)的聲明;只有選項(xiàng)C是空函數(shù)。故本題答案為C選項(xiàng)。
7.D本題考查邏輯運(yùn)算符的使用。當(dāng)“&&”的兩個(gè)運(yùn)算對(duì)象都是邏輯1時(shí),表達(dá)式返回值才是1;“||”的兩個(gè)運(yùn)算對(duì)象至少有一個(gè)是邏輯1時(shí),表達(dá)式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。
8.D
9.A賦值運(yùn)算符的左邊只能是變量,而不能是常量或表達(dá)式。
10.C\n面向?qū)ο蟮脑O(shè)計(jì)方法的基本原理是:使用現(xiàn)實(shí)世界的概念抽象地思考問(wèn)題從而自然地解決問(wèn)題。它雖強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的概念而不強(qiáng)調(diào)算法,但是它鼓勵(lì)開(kāi)發(fā)者在軟件開(kāi)發(fā)的過(guò)程中從應(yīng)用領(lǐng)域的概念角度去思考。
\n
11.B解析:本題考查ifelse語(yǔ)句。C語(yǔ)言規(guī)定,else總是與它前面的最近的if配對(duì)。
12.D
13.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型是指信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過(guò)變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開(kāi)軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。
14.11解析:ifelse語(yǔ)句的功能:若表達(dá)式的值為真,執(zhí)行語(yǔ)句1,并跳過(guò)其他語(yǔ)句,執(zhí)行ifelse語(yǔ)句的下一條語(yǔ)句,若表達(dá)式的值為假,跳過(guò)語(yǔ)句1,執(zhí)行語(yǔ)句2,依次往下判斷。題中,x=3,y=2,第一個(gè)if語(yǔ)句的控制條件x<y就不滿足,又沒(méi)有與之配對(duì)的else語(yǔ)句,所以直接執(zhí)行printf語(yǔ)句,在整個(gè)過(guò)程中變量z的值都沒(méi)發(fā)生變化。
15.-2。-2。解析:表達(dá)式z-=x<y?x++:++y相當(dāng)于先執(zhí)行++y,再執(zhí)行z-=x<y?x:y,最后執(zhí)行x++,其中z-=x<y?x:y等價(jià)于z=z-(x<y?x:y),由于x值為3,y值為3,x<y不成立,返回y的值,z-y的值為-2,賦給z。
16.時(shí)間復(fù)雜度和空間復(fù)雜度時(shí)間復(fù)雜度和空間復(fù)雜度
17.1010解析:函數(shù)sub遞歸調(diào)用的返回值被作為再次調(diào)用sub函數(shù)的實(shí)參傳給函數(shù)sub的形參,共進(jìn)行3次遞歸調(diào)用。第1次調(diào)用sub(1234)的返回值為1234/10+1234%10=127;第2次調(diào)用sub(127)的返回值為127/10+127%10=19;第3次調(diào)用sub(19)的返回值為19/10+19%10=10。所以程序的輸出為10。
18.a[i-1]或a[-1+i]a[9-i]或a[-i+9]a[i-1]或a[-1+i]\r\na[9-i]或a[-i+9]
19.i<=9或i<10或9>=i或10>ij%3!=0或j%3i<=9或i<10或9>=i或10>i\r\nj%3!=0或j%3
20.efghefgh解析:本題定義了一個(gè)字符型指針變量p并通過(guò)賦初值讓它指向了一個(gè)字符串,定義了另一個(gè)字符型指針變量r和一個(gè)長(zhǎng)整型指針變量q。首先通過(guò)語(yǔ)句“q=(long*)p;”把P的地址值強(qiáng)制轉(zhuǎn)換為長(zhǎng)整型地址值并賦值給q,然后執(zhí)行“q++;”,地址值增加了4,執(zhí)行語(yǔ)句“r=(char*)q;”,把長(zhǎng)整型指針變量q的值再?gòu)?qiáng)制轉(zhuǎn)換成字符型地址值并賦給r,r的值應(yīng)為字符串中字符“e”的地址,最后輸出,指向的字符中,是“efgh”。
21.1111000011110000解析:按位異或運(yùn)算的一個(gè)重要應(yīng)用是讓某個(gè)整型變量的二進(jìn)制位取反,0變成1,而1變成0。這只要設(shè)計(jì)這樣一個(gè)位串信息,讓要變反的位為1,不要改變的位為0,用這個(gè)位串信息與整型變量按位加就能得到希望的結(jié)果。要使字節(jié)的高4位取反,低4位不變,則需要位串信息是11110000。
22.222\r\n2解析:深刻理解+進(jìn)制轉(zhuǎn)化為二進(jìn)制的方法,即取余法;數(shù)組名作為實(shí)參,在函數(shù)內(nèi)部可以直接修改調(diào)用函數(shù)中定義的數(shù)組的值。注意:掌握兩個(gè)數(shù)據(jù)進(jìn)行交換的算法原理。
23.length++i<lengthlength++\r\ni<length解析:第一個(gè)循環(huán)極有可能是計(jì)算串的長(zhǎng)度,在i<=length時(shí)字符才被刪除,被刪除的是第i個(gè)到第i+n或最后一個(gè)間的所有字符。刪除前,應(yīng)判斷i<=length。由于已經(jīng)進(jìn)行了-i運(yùn)算,故實(shí)際應(yīng)填入i<length。
24.12300123001,2,3,0,0,1,2,3,0,0,解析:本題考查文件讀寫(xiě)函數(shù)fread和fwrite的用法。fwrite函數(shù)將數(shù)組a的前5個(gè)元素輸出到文件fp中兩次,共10個(gè)字節(jié),再調(diào)用fread函數(shù)從文件fp中讀取這10個(gè)字節(jié)的數(shù)據(jù)到數(shù)組a中,此時(shí)數(shù)組a的內(nèi)容就變?yōu)閧1,2,3,0,0,1,2,3,0,0},最后的輸出結(jié)果為“1,2,3,0,0,1,2,3,0,0”。
25.fun(STUa[]STU*s){inti;*s=a[0];for(i=0;i<N;i++)/*先認(rèn)為第1個(gè)值最小*/if(s->s>aIi].s)/*如果在循環(huán)的過(guò)程中再發(fā)現(xiàn)比第1個(gè)值更小的則賦給*s*/*s=a[i];}fun(STUa[],STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*先認(rèn)為第1個(gè)值最小*/\r\nif(s->s>aIi].s)/*如果在循環(huán)的過(guò)程中再發(fā)現(xiàn)比第1個(gè)值更小的則賦給*s*/\r\n*s=a[i];\r\n}解析:我們先認(rèn)為第1個(gè)值最小,即*s=a[0]語(yǔ)句,如果在循環(huán)的過(guò)程中再發(fā)現(xiàn)比第1個(gè)值更小的隨即賦給該*s就可以了。另外,還涉及到結(jié)構(gòu)體中的指向運(yùn)算符,請(qǐng)學(xué)習(xí)者注意。若要找出最高成績(jī)則if()中的條件改成s->s<a[i].s即可。
26.char*fun(char*schar*t){intii;for(i=0;s[i]!='\0';i++);/*求字符串的長(zhǎng)度*/for(j=0;t[i]!='\0';j++);if(i>=j)/*比較兩個(gè)字符串的長(zhǎng)度*/returns;/*函數(shù)返回較長(zhǎng)的字符串若兩個(gè)字符串長(zhǎng)度相等則返回第1個(gè)字符串*/elsereturnt;}char*fun(char*s,char*t)\r\n{\r\ninti,i;\r\nfor(i=0;s[i]!='\\0';i++);/*求字符串的長(zhǎng)度*/\r\nfor(j=0;t[i]!='\\0';j++);\r\nif(i>=j)/*比較兩個(gè)字符串的長(zhǎng)度*/\r\nreturns;/*函數(shù)返回較長(zhǎng)的字符串,若兩個(gè)字符串長(zhǎng)度相等,則返回第1個(gè)字符串*/\r\nelse\r\nreturnt;\r\n}解析:本題中,第1個(gè)for循環(huán)的作用是求出s的字符個(gè)數(shù)i,第2個(gè)for循環(huán)的作用是求出t的字符個(gè)數(shù)j,因?yàn)槿魏窝h(huán)都要控制一條語(yǔ)句,所以在每一個(gè)for循環(huán)條件后面必須要有一個(gè)分號(hào)。
本題也可用如下技巧:
char*fun(char*s,char*t)
{if(strlen(s)>=strlen(t)returns;
elsereturnt;
}
27.intfun(intt){inta=1b=1c=0i;/*a代表第n-2項(xiàng)b代表第n-1項(xiàng)c代表第n項(xiàng)*//*如果求得的數(shù)。比指定比較的數(shù)小則計(jì)算下一個(gè)Fibonacci數(shù)對(duì)ab得新置數(shù)*/do{c=a+b;a=b;b=c;}while(c<t);/*如果求得的數(shù)c比指定比較的數(shù)大時(shí)退出循環(huán)*/c=a;/*此時(shí)數(shù)c的前一個(gè)Fibonacci數(shù)為小于指定比較的數(shù)的最大的數(shù)*/returnc;}intfun(intt)\r\n{\r\ninta=1,b=1,c=0,i;/*a代表第n-2項(xiàng),b代表第n-1項(xiàng),c代表第n項(xiàng)*/\r\n/*如果求得的數(shù)。比指定比較的數(shù)小,則計(jì)算下一個(gè)Fibonacci數(shù),對(duì)a,b得新置數(shù)*/\r\ndo\r\n{\r\nc=a+b;\r\na=b;\r\nb=c;\r\n}\r\nwhile(c<t);/*如果求得的數(shù)c比指定比較的數(shù)大時(shí),退出循環(huán)*/\r\nc=a;/*此時(shí)數(shù)c的前一個(gè)Fibonacci數(shù)為小于指定比較的數(shù)的最大的數(shù)*/\r\nreturnc;\r\n}解析:根據(jù)所給數(shù)列定義不難發(fā)現(xiàn),該數(shù)列最終的結(jié)果是由兩個(gè)數(shù)列之和組成,所以可以在循環(huán)內(nèi)部始終把c看成是前兩項(xiàng)之和(即第n項(xiàng)),而a始終代表第n-2項(xiàng),b始終代表第n-1項(xiàng)(通過(guò)不斷地重新賦值來(lái)實(shí)現(xiàn))。應(yīng)注意,退出循環(huán)時(shí)得到的數(shù)c是大于指定比較的數(shù)的最小的數(shù),而它的前一個(gè)數(shù)就是小于指定比較的數(shù)的最大的數(shù)。
28.voidfun(intmint*aint*n){intij=0;for(i=1;i<=m;i++)if(i%7==0||i%11==0)/*求出1到m(含m)之內(nèi)能被7或11整除的所有整數(shù)放在數(shù)組a中*/a[j++]=i;*n=j;/*返回這些數(shù)的個(gè)數(shù)*/}voidfun(intm,int*a,int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<=m;i++)\r\nif(i%7==0||i%11==0)/*求出1到m(含m)之內(nèi)能被7或11整除的所有整數(shù)放在數(shù)組a中*/\r\na[j++]=i;\r\n*n=j;/*返回這些數(shù)的個(gè)數(shù)*/\r\n}解析:本題要找出能被7或11整除的所有整數(shù),注意數(shù)學(xué)中的“或”和C語(yǔ)言中的“或”的區(qū)別,但在此處,if條件語(yǔ)句中用了“||”運(yùn)算符,若要找能同時(shí)被7和11整除的所有整數(shù)則在if()中應(yīng)用“&&”運(yùn)算符。
29.voidfun(charp1[]charp2[]){intij;for(i=0;p1[i]!='\0';i++);/*求出的i為p1字符的總長(zhǎng)度包括結(jié)束標(biāo)記位*/for(j=0;p2[j]!='\0';j++)p1[i++]=p2[j];/*將p2字符串連在p1字符串的后面*/p1[i]='\0';/*在字符串最后加上結(jié)束標(biāo)記符*/}voidfun(charp1[],charp2[])\r\n{\r\ninti,j;\r\nfor(i=0;p1[i]!='\\0';i++);/*求出的i為p1字符的總長(zhǎng)度,包括結(jié)束標(biāo)記位*/\r\nfor(j=0;p2[j]!='\\0';j++)\r\np1[i++]=p2[j];/*將p2字符串連在p1字符串的后面*/\r\np1[i]='\\0';/*在字符串最后加上結(jié)束標(biāo)記符*/\r\n}解析:本題用兩個(gè)循環(huán),第1個(gè)循環(huán)的作用是將i走到第1個(gè)字符串的末尾。第2個(gè)循環(huán)的作用是將第2個(gè)字符串的字符連到第1個(gè)字符串的末尾。
30.floatfun(intmintn){inti;doublep=1.0;for(i=1;i<=m;i++)p=p*i;/*求m!*/for(i=1;i<=n;i++)p=p/i;/*求m!/n!*/for(i=1;i<=m-n;i++)p=p/i;/*求m!/(n!(m-n)!)*/returnp;}floatfun(intm,intn)\r\n{\r\ninti;\r\ndoublep=1.0;\r\nfor(i=1;i<=m;i++)p=p*i;/*求m!*/\r\nfor(i=1;i<=n;i++)p=p/i;/*求m!/n!*/\r\nfor(i=1;i<=m-n;i++)p=p/i;/*求m!/(n!(m-n)!)*/\r\nreturnp;\r\n}解析:本
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 溶液的形成(解析版)-2024年九年級(jí)化學(xué)寒假提升學(xué)與練(人教版)
- 完形填空30題【考題猜想】(解析版)-2023-2024學(xué)年九年級(jí)英語(yǔ)上學(xué)期(牛津譯林版)
- 陜西省榆林市靖邊縣2023-2024學(xué)年六年級(jí)上學(xué)期期末科學(xué)試題
- 山西省晉中市祁縣2024-2025學(xué)年八年級(jí)下學(xué)期期中歷史試題(含答案)
- 貿(mào)易便利化與企業(yè)出口績(jī)效
- 山東省濟(jì)南市市中區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末生物試題(原卷版)
- 員工內(nèi)訓(xùn)課件
- 農(nóng)商銀行筆試題庫(kù)及答案解析
- 2023-2025年語(yǔ)文全國(guó)中考真題分類匯編 專題13 課內(nèi)文言文閱讀
- 工地紅帽測(cè)試題及答案
- 2025年危險(xiǎn)化學(xué)品經(jīng)營(yíng)單位主要負(fù)責(zé)人考試試題附答案
- 2025年機(jī)關(guān)事業(yè)單位工人招聘《機(jī)動(dòng)車(chē)駕駛員》技師-考試題庫(kù)與參考答案
- 2025年機(jī)械設(shè)備安裝工試卷及答案
- 基孔肯雅熱防控培訓(xùn)課件
- 病人護(hù)工協(xié)議書(shū)
- 招投標(biāo)風(fēng)險(xiǎn)管理辦法
- 2025年廣東省工業(yè)和信息化廳下屬事業(yè)單位招聘考試筆試試題(含答案)
- 《教育強(qiáng)國(guó)建設(shè)規(guī)劃綱要(2024-2035年)》解讀講座
- 四川省成都市青羊區(qū)石室聯(lián)中學(xué)2023-2024學(xué)年八下物理期末監(jiān)測(cè)模擬試題及答案解析
- 幼兒園管理?xiàng)l例doc-幼兒園管理?xiàng)l例
- (完整版)中美會(huì)計(jì)準(zhǔn)則具體差異
評(píng)論
0/150
提交評(píng)論