版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2022年安徽省蕪湖市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(12題)1.下面程序的輸出結(jié)果是main(){charstr[10],c='a';inti=0;for(;i<5;i++)str[i]=c++;printf("%s",str);}
A.abcdeB.aC.不確定D.bcdef
2.以下程序中,while循環(huán)的循環(huán)次數(shù)是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}
A.1B.10C.6D.死循環(huán),不能確定次數(shù)
3.設(shè)x、Y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。
A.xYB.x<=YC.x‖y+zy-zD.!((x
4.在具有n個結(jié)點的單鏈表中,實現(xiàn)()的操作,其算法的時間復(fù)雜度是O。
A.求鏈表的第i個結(jié)點B.在地址為P的結(jié)點之后插入一個結(jié)點C.刪除表頭結(jié)點D.刪除地址為P的結(jié)點的后繼結(jié)點
5.若某線性表最常用的操作是存取任一指定序號的元素和在最后進行插入和刪除運算,則利用()存儲方式最節(jié)省時間。
A.順序表B.雙鏈表C.帶頭結(jié)點的雙循環(huán)鏈表D.單循環(huán)鏈表
6.下述程序執(zhí)行的輸出結(jié)果是()。#includemain{chara[2][4];strcpy(a,"are");strcpy(a[1],"you");a[0][3]='&';printf("%s\n",a);}A.A.are&youB.youC.areD.&7.以下程序段運行后x的值為()。inti,j,x=0;for(i=3;i>=1;i--)for(j=1;j<=i;j++)x=x+2A.8B.14C.10D.12
8.設(shè)x和y均為bool量,則x&&y為真的條件是()。
A.它們均為真B.其中一個為真C.它們均為假D.其中一個
9.當(dāng)輸入為"hello?"時,下面程序的執(zhí)行結(jié)果是()。#include<stdio.h>main{charc;c=getchar;while(c!=?){putehar(e);break;}}A.RvfsuB.hC.?D.hello
10.有以下程序段chareh;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結(jié)果是
A.因變量類型與格式描述符的類型不匹配輸出無定值
B.輸出項與格式描述符個數(shù)不符,輸出為零值或不定值
C.a,97,12k=12
D.a,97,k=12
11.有如下程序段
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
程序運行后輸出的結(jié)果是A.A.63
B.36
C.編譯出錯
D.00
12.兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度稱為()。
A.耦合度B.內(nèi)聚度C.復(fù)雜度D.數(shù)據(jù)傳輸特性
二、2.填空題(12題)13.解題方案的準確而完整的描述稱為______。
14.以下程序的運行結(jié)果是【】。
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6,j=8,k;
printf("%d\n",MAX(i,j));
}
15.在關(guān)系數(shù)據(jù)庫中,用來表示實體之間聯(lián)系的是【】。
16.函數(shù)pi的功能是根據(jù)以下公式近似求得的:
pi*pi/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)
請在下面的函數(shù)中填空,完成求pi的功能。
#include<math.h>
doublepi(longn)
{doubles=0.0,longi;
for(i=1;i<=n;i++)s=s+【】。
return(sqrt(6*s));
}
17.設(shè)inta=5,b=6,表達式(++a==b--)?++a:--b的值是【】。
18.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。
19.下面程序的功能是:將字符數(shù)組a中下標值為偶數(shù)的元素從小到大排列,其他元素不變。請?zhí)羁铡?/p>
#include<stdio.h>
#include<string.h>
main()
{chara[]="clanguage",t;
inti,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j<=k;j+=2;)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);printf("\n");
}
20.下面程序把從終端讀入的10個整數(shù)以二進制的方式寫到一個名為bi.dat的新文件中。請?zhí)羁铡?/p>
#include<stdio.h>
FILE*fp;
main()
{inti,j;
if((fp=fopen(【】,"wb"));=NULL)exit(0);
for(i=0;i<10;i++)
{scanf("%d",&j);
fwrite(&j,sizeof(int),1,【】);
}
fclose(fp);
}
21.棧中允許進行插入和刪除的一端叫做______。
22.有以下語句段
intnl=10,n2=20;
printf("______",n1,n2);
要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?/p>
n1=10
n2=20
23.下面程序的運行結(jié)果:【】。
intf(inta[],intn)
{if(n>1)returna[0]+f(&a[1],n-1);
elsereturna[o];
}
main()
{intaa[3]={1,2,3},s;
s=f(&aa[0],3);printf("%d\n",s);
}
24.若由以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是【】。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
三、3.程序設(shè)計題(10題)25.編寫函數(shù)fun(),函數(shù)的功能是:根據(jù)以下公式計算s,計算結(jié)果作為函數(shù)值返回;n通過形參傳入。
S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)
例如:若n的值為11時,函數(shù)的值為1.833333。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
floatfun(intn)
{
}
main()
{
intn;
floats;
clrscr();
printf("\nPleaseenterN:");
scanf("%d",&n);
s=fun(n);
printf("Theresultis:%f\n",s);
}
26.請編寫函數(shù)fun(),該函數(shù)的功能是:將兩個兩位數(shù)的正整數(shù)a,b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上。
例如,當(dāng)a=45時,b=12,調(diào)用到該函數(shù)后,c=5142。
注意:部分源程序給出如下.
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(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);
}
27.請編寫函數(shù)fun(),該函數(shù)的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。
例如,若一維數(shù)組中的數(shù)據(jù)是:
2223445666677899101010
刪除后,數(shù)組中的內(nèi)容應(yīng)該是:
2345678910。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN80
intfun(inta[],intn)
{
}
main()
{
inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,
8,9,9,10,10,10,10},i,n=20;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
n=fun(a,n);
printf("\n\nThedataafterdeleted
:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
28.請編寫函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被7或11整除、但不能同時被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(int*a,int*n)
{
}
main()
{
intaa[1000],n,k;
clrscr();
fun(aa,&n);
for(k=0;kif((k+1)%10==0)
{printf("%5d",aa[k]);
printf("\n");}/*一行寫9個數(shù)*/
else
printf("%5d",aa[k]);
}
29.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun(),它的功能是按分數(shù)的高低排列學(xué)生的記錄,低分在前。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charmum[10);
ints;
}STREC;
intfun(STRECa[])
{
}
main()
{
STRECs[N]={{“GA005”,88},{“GA003”,64},
{“CA002”,77},{“GA004”,89},{“GA001”,54},
{“GA007”,72},{“GA008”,72},{“GA006”,65},
{“GA015”,83},{“GA013”,95},{“GA012”,55},
{“GA014”,68},{“GA01l”,78},{“GA017”,53},
{“GA018”,92},{“GA016”,82}};
inti;
FILE*out;
fun(s);
printf(“Thedataaftersorted:\n”);
for(i=0;i<N;i++)
{
if((i)%4==0)
/*每行輸出4個學(xué)生記錄*/
printf(“\n”);
printf(“%s%4d”,s[i].num,s[i].s);
}
printf(“\n”);
ut=fopen(“out21.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,則調(diào)用該函數(shù)后的結(jié)果為word。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(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ù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。
例如:二維數(shù)組中的值為:
13579
29994
69998
13570
則函數(shù)值為61。
注意:部分源程序存在文件PROGl.C文件中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
32.N名學(xué)生的成績已在主函數(shù)中放入一個帶頭節(jié)點的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點。請編寫函數(shù)fun(),它的功能是:找出學(xué)生的最低分,由函數(shù)值返回。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#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個節(jié)點的鏈表,各分數(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;}
/*輸/出各分數(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);
}
33.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。
例如,若字符串中的內(nèi)容為****A*BC*DEF*G*******刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是****A*BC*DEF*G。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)6ln的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio,h>
#include<conio.h>
voidfun(char*a)
{
}
main()
{
chars[81];
printf("Enterastring:\n");
gets(s);
fun(s);
printf("Thestringafterdeleted:\n");
puts(s);
}
34.編寫函數(shù)fun(),它的功能是求n以內(nèi)(不包括n)同時能被5與11整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。
例如:n為1000時,函數(shù)值應(yīng)為s=96.979379。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<math.h>
#include
doublefun(intn)
{
}
main()
{
clrscr();
printf("s=%f\n",fun(1000));
}
四、單選題(0題)35.p指向線性鏈表中某一結(jié)點,則在線性鏈表的表尾插入結(jié)點s的語句序列是()。
A.while(p->next!=NULL)p=p->next;p->next=s;s->next=NULL;
B.while(p!=NULL)p=p->next;p->next=s;s->next=NULL;
C.while(p->next!=NULL)p=p->next;s->next=p;p->next=NULL;
D.while(p!=NULL)p=p->next->next;p->next=s;s->next=p->next;
五、單選題(0題)36.有下列函數(shù)定義:fun(floath){printf("%f,%f\n",h,h*h);)該函數(shù)的類型是()。A.int類型B.float類型C.void類型D.函數(shù)無類型說明,定義有錯
六、單選題(0題)37.下面敘述中錯誤的是()。
A.軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤
B.對被調(diào)試的程序進行“錯誤定位”是程序調(diào)試的必要步驟
C.程序調(diào)試通常也稱為Debug
D.軟件測試應(yīng)嚴格執(zhí)行測試計劃,排除測試的隨意性
參考答案
1.C解析:字符串少一個結(jié)束標志,所以輸出的結(jié)果不確定。
2.D解析:break語句只能在循環(huán)體和switch語句體內(nèi)使用,當(dāng)break出現(xiàn)在switch語句體內(nèi)時,其作用只是跳出該switch語句體。當(dāng)break出現(xiàn)在循環(huán)體中,但不在switch語句體內(nèi)時,則在執(zhí)行break后,跳出本層循環(huán)體.而continue語句的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判定。本程序中,變量i的初始值為0,判斷while后面括號內(nèi)表達式的值為真,執(zhí)行循環(huán)體內(nèi)的if語句,判斷if后面括號內(nèi)表達式的值為真,執(zhí)行“continue;”語句.因continue的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)的條件判斷,所以i的值未發(fā)生變化,循環(huán)條件仍然為真,if語句也仍然成立,因此循環(huán)將無止境地進行下去。所以,4個選項中D為所選。
3.D本題考查邏輯運算符的使用。當(dāng)“”的兩個運算對象都是邏輯l時,表達式返回值才是1;“‖”的兩個運算對象至少有一個是邏輯1時,表達式返回值也是l,x<y為1,!z為0,10為1,0‖為1,因此,!l為0。
4.A
5.A
6.Astrcpy實現(xiàn)的功能是復(fù)制,該操作把are復(fù)制到a中,a[0][3]='&',且strcpy(a[1],"you")把you復(fù)制到a[1]中,故輸出a為“are&you”。
7.D
8.A
9.A本題考查getchar函數(shù)與putchar函數(shù),通過9etchar函數(shù)讀入字符,并通過putchar函數(shù)將字符逐個輸出,當(dāng)用戶輸入“?”時停止輸出,且c是一個字符變量只占一個字節(jié)。
10.D解析:輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表示將變量以帶符號的十進制整型數(shù)輸出,所以第一個輸出語句輸出的結(jié)果為a,97;第二個輸出語句輸出的結(jié)果為k=12。
11.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實參指向的變量的值,不能使實參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。
在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。
12.A解析:本題考核模塊獨立性的評價。評價模塊獨立性的主要標準有兩個;一是模塊之間的耦合,它表明兩個模塊之間互相獨立的程度,也可以說是兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度(所以,本題的正確答案為選項A);二是模塊內(nèi)部之間的關(guān)系是否緊密,稱為內(nèi)聚。一般來說,要求模塊之間的耦合盡可能地弱,即模塊盡可能獨立,而要求模塊的內(nèi)聚程度盡量地高。
13.算法算法解析:算法是指對解題方案的準確而完整的描述。
14.99解析:本題考查宏定義與三目運算符的綜合用法,宏定義是原樣替換,本題中,如果a>b成立,則a+1的值為整個表達式的值,否則為b+1的值為整個表達式的值,(應(yīng)注意后面的加1)。
15.關(guān)系關(guān)系解析:在關(guān)系數(shù)據(jù)庫中,用關(guān)系也就是二維表來表示實體之間的聯(lián)系。
16.0/i/i或1.0/(i*i)0/i/i或1.0/(i*i)解析:由題面中提供的計算pi的公式可知;在第i項其值為1/(i*i),考慮到運算結(jié)果為浮點數(shù),故必須要將1轉(zhuǎn)化為浮點數(shù)或采用1.0/(i*i)的形式。故本題應(yīng)填1.0/(i*i)或其等效形式。
17.77解析:此表達式為三目運算符,++a的值為6,b--的值為6,則整個表達式的值為++a的值,++a的值為7。請注意前綴++,--和后綴++,--的區(qū)別。
18.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)解析:Jackson方法是—‘種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化方法。
19.a[I]>a[j]a[I]>a[j]解析:本題中的嵌套的循環(huán)結(jié)構(gòu)用在了數(shù)組元素的排序上。本題需要注意的一點是:由于題目只要求出下標值為偶數(shù)的元素從小到大排序,所以內(nèi)外層for循環(huán)的條件變量變更條件都是+=2,最后通過條件a[i]>a[j]對元素大小進行判斷并交換。
20."bi.dat"fp
21.棧頂棧頂解析:棧是限定在表的一端進行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。
22.n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或n1=%2d×nn2=%2dn1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d×nn2=%2d解析:printf函數(shù)有兩種參數(shù):格式控制參數(shù)和輸出項參數(shù),其中格式控制參數(shù)由兩種成分組成;格式說明和普通字符,普通字符將被簡單地復(fù)制顯示,格式說明項將引起一個輸出參數(shù)項的轉(zhuǎn)換與顯示,它是由“%”引出并以一個類型描述符結(jié)束的字符串。本題中,n1=和n2=就是普通字符,可以直接顯示,又因為n1,n2為整數(shù),所以格式說明項為%d,也可以在%與d之間加上域?qū)?,另外還要在每行輸出結(jié)束時加轉(zhuǎn)義字符\\n進行換行。所以,應(yīng)填寫n1=%d\\nn2=%d\\n,n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d\\nn2=%2d。
23.66解析:s=f(&aa[0],3)=aa[0]+aa[1]+aa[2]=1+2+3=6。
24.*(p+5)或p[5]*(p+5)或p[5]解析:本題的考查點是通過指針引用數(shù)組元素。98是數(shù)組w的第5個元素(最開始的為第0個),而通過*p=w已經(jīng)將p指向了數(shù)組w,要想不移動指針p而引用98,可以有以下兩種方法:p[5]、*(p+5)。
25.floatfun(intn){intis1=0;floats=0.0;for(i=1;i<=n;i++){s1=s1+i;/*求每一項的分母*/s=s+1.0/s1;/*求多項式的值*/}returns;}floatfun(intn)\r\n{\r\ninti,s1=0;\r\nfloats=0.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1+i;/*求每一項的分母*/\r\ns=s+1.0/s1;/*求多項式的值*/\r\n}\r\nreturns;\r\n}解析:本題中用s1來表示式中每一項的分母,而每一項的分母都是其前一項分母加項數(shù)。注意由于s1定義成一個整型,所以在s=s+1.0/s1中不能把1.0寫成1。
26.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中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對它們除10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。如45/10結(jié)果為4而不是4.5(這是由于兩個數(shù)都為整型,所以結(jié)果出為整型),45%10結(jié)果為5。若a為45,則a/10*10的結(jié)果為40而非45。乘1000,乘100和乘10的作用是分別使其膠面的數(shù)成為*c的千位數(shù)、百位數(shù)。注意要使用c時要注意進行指針運算,即*c,不能少了*號。
27.intfun(inta[]intn){intij=l;for(i=1;i<n;i++)if(a[j-1]!=a[i])/*若該數(shù)與前一個數(shù)不相同則要保留*/a[j++]=a[i];returnj;/*返回不同數(shù)的個數(shù)*/}intfun(inta[],intn)\r\n{\r\ninti,j=l;\r\nfor(i=1;i<n;i++)\r\nif(a[j-1]!=a[i])/*若該數(shù)與前一個數(shù)不相同,則要保留*/\r\na[j++]=a[i];\r\nreturnj;/*返回不同數(shù)的個數(shù)*/\r\n}解析:本題程序的流程是:讓i,j都從1開始,其中j用于控制刪除后剩下的數(shù)中的下標,i用于搜索原數(shù)組中的元素。j始終是新數(shù)組已有元素中最后一個元素的下一個元素的下標,所以if()中的條件是a[j-1]!=a[i],其中a[j-1]就是新數(shù)組中的最后一個元素,若條件成立,則表示出現(xiàn)了不同的值,所以a[i]要留下到新數(shù)組中。注意本題中i,j的初值都要從1開始,該算法只能用于數(shù)組已排序的題目中。
28.voidfun(int*aint*n){intij=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被7或11整除、但不能同時被7和11整除的所有整數(shù)并放入數(shù)組a中*/if((i%7==0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/}voidfun(int*a,int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被7或11整除、但不能同時被7和11整除的所有整數(shù),并放入數(shù)組a中*/\r\nif((i%7==0||i%11==0)&&i%77!=0)\r\na[j++]=i;\r\n*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/\r\n}解析:注意本題題目應(yīng)是找出能被7或11整除但不能同時被7和11整除的所有整數(shù)。能同時被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除的數(shù)。所以可得出程序中的if()。按運算優(yōu)先級可知(i%7==0||i%11==0),注意,兩邊必須要有小括號。
29.intfun(STRECa[]){intij;STRECt;for(i=l;i<N;i++)/*用冒泡法進行排序進行N-1次比較*/for(j=0;j<N-1;j++)/*在每—次比較中要進行N-1次兩兩比較*/if(a[j].s>a[j+1].s)/*按分數(shù)的高低排列學(xué)生的記錄低分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;}}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=l;i<N;i++)/*用冒泡法進行排序,進行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每—次比較中要進行N-1次兩兩比較*/\r\nif(a[j].s>a[j+1].s)/*按分數(shù)的高低排列學(xué)生的記錄,低分在前*/\r\n{\r\nt=a[j];\r\na[j]=a[j+1];\r\na[j+1]=t;\r\n}\r\n}解析:冒泡法算法思路:如果有N個數(shù),則要進行N-1次比較,在每—次比較中要進行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個數(shù)進行比較并將其中大的數(shù)放在前或在后(若要求從小到大排序,則大的數(shù)要放在后。反之則對調(diào)),即兩兩比較后這兩個數(shù)要形成題中所要求的順序。由于總是從頭到尾進行比較,所以第1次比較結(jié)束后,最大(或最小)數(shù)肯定在最后,第2次比較結(jié)束后,次最大(或次最小)數(shù)肯定在倒數(shù)的第2個數(shù),依次類推,所以進行第一次比較時必須比較到最后一個數(shù),而進行第2次比較時只要比較到倒數(shù)的第2個數(shù)即可,所以進行第i次比較I時只需比較N-i次即可(這種算法較難理解,但它是最好的)。
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’;/*在字符串最后加上結(jié)束標記*/}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’;/*在字符串最后加上結(jié)束標記*/\r\n}解析:本題要求刪除字符串中指定下標的字符,即相當(dāng)于把不是指定下標的字符留下。所以要用if(i!=n),注意不能寫成“=”運算。
31.
解析:該程序功能是求出二維數(shù)組周邊元素之和。其中周邊元素是指數(shù)組的最上和最下的兩行,最左和最右的兩列。數(shù)組第一行元素的行下標為0,最后一行元素的行下標為M-1,第一列的列下標為0,最后一列的列下標為N-1。
32.doublefun(
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度供暖服務(wù)續(xù)約協(xié)議
- 2024年度建筑材料研發(fā)與技術(shù)轉(zhuǎn)讓合同
- 2024年城市廢棄物處理設(shè)施租賃合同
- 2024創(chuàng)意拓展訓(xùn)練服務(wù)合同
- 2024年廉潔購銷合同范本
- 2024年度安徽省某縣高速公路路基施工合同
- 2024年度企業(yè)級云存儲服務(wù)合同
- 2024大型活動場地土方平整合同
- 2024年度果皮箱批量采購合同
- 2024年度國際教育培訓(xùn)項目合作合同
- GB/T 22796-2021床上用品
- 中國聯(lián)通LAN工程施工及驗收規(guī)范
- 中間表模式接口相關(guān)-住院與his-adt方案
- 臨床PCR檢驗的室內(nèi)質(zhì)控方法課件
- 計算機解決問題的過程-優(yōu)質(zhì)課課件
- 作文講評-“忘不了……”課件
- 深基坑安全管理(安全培訓(xùn))課件
- 12月4日全國法制宣傳日憲法日憲法知識科普宣教PPT教學(xué)課件
- 血液透析營養(yǎng)管理課件
- 神經(jīng)內(nèi)科醫(yī)療質(zhì)量評價體系考核標準
- 綠化監(jiān)理實施細則
評論
0/150
提交評論