




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
習(xí)題參考答案
習(xí)題1
一、選擇題
1、B2、C3、B4、D5、A6、B7C
二、填空題
1、源程序文件c2、obj3、可執(zhí)行文件exe
4、機(jī)器語言匯編語言高級語言
三、解答題
略
四、編程題
1、
main()
(
printf("Hello!WelcometoChina!");
)
2、
main()
{intx;
scanf("%d",&x);
if(x>=20&&x<1000)printf("x=%d",x)
elseprintf(uInputerror!,r);
)
習(xí)題2
一、選擇題
1、c2、A3、B4、D5、A
6、D7、B8、B9、B10、D
11、D12、B13、A14、B15、C
二、填空題
1、整型、實型、字符型
2、用戶標(biāo)識符、關(guān)鍵字標(biāo)識符
3、存儲單元、符號地址、內(nèi)存地址
4、十、十六、八
5、double(雙精度型)
6、8
7、5.500000
8、a=-32768
習(xí)題參考答案
9、+0017,021,0x11
三、寫程序運行結(jié)果
3257
3257
7.88,-345.12,7.8765,-345.1230
7.87654e+00,-3.5e+02
a,97,141,61
1234,2322,4d2
CHINESE,CHI
四、scanf函數(shù)的使用
a=3b=7
8.571.82
Aa
五、用scanf函數(shù)輸入數(shù)據(jù)
1020Aal.5-3.75123.45,67.8
注意,其中123.45可以是任意實數(shù),因為該值將被跳過,不用于賦值。
習(xí)題3
一、選擇題
1.C2.B3.D4.D
二、填空題
基本概念題
1.2
2.2
3.1
閱讀程序?qū)懗鲞\行結(jié)果題
4.1.00
5.1,0,1
6.9,11,9,10
三、寫出下面表達(dá)式運算后a的值,設(shè)原來a=12。
(I)24(2)10(3)60(4)0(5)0(6)0
習(xí)題4
一、選擇題
1、B2、D3、B4、D5、A6、C
二、填空題
1、1,0,12、1,2,3
3、chl〉='A'&&chl〈二'Z'chi=ch1-32;
三、編程題
296
1、從鍵盤輸入三個數(shù),然后按照由小到大的順序輸出。要求,設(shè)三個數(shù)放在變量a、b、
c中,最后仍然按照a、b、c的順序輸出。
^include<stdio.h>
main()
{inta,b,c,t;
scanf("%d,%d,%d“,&a,&b,&c);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(b>c){t=b;b=c;c=t;}
printf("%d,%d,%d\nw,a,b,c)
)
2、編寫程序根據(jù)以下的函數(shù)關(guān)系,對輸入的x值輸出相應(yīng)的y值。
Xy
2<x<=10x(x+2)
-l<x<=22x
X<=-1X-1
#include<stdio.h>
main()
{floatx,y;
scanf(“%f",&x);
if(x<=-l)
y=x-l;
elseif(x<=2)
y=2*x;
elseif(x<=10)
y=x*(x+2);
elseprintf("Error!\n");
printf(wy=%f\nw,y);
)
3、求一元二次方程ax2+bx+c=0的解。
^include<math.h>
main()
{floata,b,c,d,disc,xl,x2,realpart,imagpart;
scanf(%f,%f,”,&a,&b,&c);
if(fabs(a)<=le-6)
Printf(isnotaquadratic);
else
習(xí)題參考答案
{disc=b*b-4*a*c;
if(fabs(disc)<=le-6)
printf("hastwoequalroots:%8.4\nw,-b/(2*a));
elseif(disc>le-6)
{xl=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf(uhasdistinctrealroots:%8.4fand%8.4f\n”,xl,x2);
)
else
{realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("hascomplexroots:\n");
printf(u%8.4f+%8.4fi\n”,realpart,imagpart);
printf(u%8.4f-%8.4fi\n",realpart,imagpart);
)
)
}
4、假設(shè)工資稅率如下,其中s代表工資,r代表稅率:
s<500r=0%
500<=s<1000r=5%
1000<=s<2000r=8%
2000<=s<3000r=10%
3000<=sr=15%
編一程序?qū)崿F(xiàn)從鍵盤輸入一個工資數(shù),輸出實發(fā)工資數(shù)。要求使用switch語句。
main()
{intsalarly,r,g;
scanf(“%d",&salarly);
if(salary>=3000)r=0.15;
else
{g=salary/500;
switch(g)
{1:r=0.05;
2:
3:r=0.08;
4:
5:r=0.10;
)
)
298
salary=salary*。-r);
printf(<<%d\n,?,salary);
)
習(xí)題5
一、選擇題
1、A2、C3、C4、D5、A6、A
7、A8、B9、C10、B11、B12、D
二、填空題
1、continue
2、[l]n<=999或n<1000[2]n%10
3、[l]x>=0或x>=0.0[2]x<min或x<=min
4、[1]i<10[2]j%3!=0
5、[l]t=l[2]n<=i
6、[l]n[2]flag=l[3]n—
7^[1]j<i[2]1/term
8、[l]sum<k[2]j-2
三、編程題
1、
^include<stdio.h>
main()
{intm,n,p,r,temp;
printf("Pleaseinputm,n:");
do
{scanf(,&m,&n);
}while(m<=:0||n<=0);
if(n<m)
{temp=n;n二m;m=temp;}/*確保大數(shù)放到n中*/
p=n*m;/*保留n和m的乘積到p中,以便求最小公倍數(shù)*/
while(m!=0)/*求n和m的最大公約數(shù)*/
{r=n%m;n=m;m=r;}
printf("最大公約數(shù)為:%d\n",n);
printf("最小公倍數(shù)為:%d\n",p/n);
)
2、
^include<stdio.h>
main()
{charc;
intletter=0,space=0,digit=O,other=0;
printf("Pleaseinputalinecharacter:;
習(xí)題參考答案
while((c=getchar())!=,\n9)
{if(c>=,&&c<=,z9||c>=,A'&&c<=,Z')letter++;
elseif(c=='')space++;
elseif(c>=,O'&&c<=,9')digit++;
elseother++;
)
printf(^Letteris%d,Spaceis%d,Digitis%d,Other
is%d,”,letter,space,digit,other);
)
3、
main()
{intm,s,i;
for(m=2;m<1000;m++)
{s=0;
for(i=l;i<m;i++)
if((m%i)=0)s=s+i;
if(s==m)
{printf("%ditsfactorsare”,m);
for(i=l;i<m;i++)
if(m%i==0)printf(“%d,”,i);
printf("\n”);
)
)
)
4、
main()
{inti,a,min,max;
scanf(,&a);
min=a;max=a;
for(i=2;i<=100;i++)
{scanf(,&a);
if(a<min)min=a;
if(a>max)max=a;
)
printf("Max=%d,Min二%d\n”,max,min);
)
5、
^include<stdio.h>
-defineN20
main()
{inti,t;
floata-2,b=l,s=0;
for(i=l;i<=N;i++)
{s=s+a/b;
300
t=a;
a=a+b;/*將前一項的分子與分母之和作為下一項的分子*/
b=t;/*將前一項的分子作為下一項的分母*/
)
printf("Sum=%f\n”,s);
)
6、問題分析:設(shè)王先生的歲數(shù)是x,他夫人的歲數(shù)是y,可得到如下方程組:
'J+>=1053
x+y2=873
這是一個非線性方程組的求解,無法手算求解,可以用窮舉法求解??紤]到實際可能,
x、y可以在20—100范圍內(nèi)取值,逐一窮興出x、y所有可能的取值判斷是否滿足上述方程
組,若滿足,這一組解就是要求的解。程序如下:
main()
{intx,y;
for(x=20;x<=100;x++)
for(y=20;y<=100;y++)
if(x*x+y==1053&&x+y*y=873)
printf(“x=%dy=%d\nw,x,y);
main()
(
longintk,g,s=0;
printf(z,Pleaseinputaninteger:,z);
scanf&k);
do
{g=k%10;
printf("%2d”,g);
k=k/10;
}while(k!=0);
)
8、
(1)
main()
{inti,j;
for(i=l;i<=9;i++)
{for(j=i;j<=9;j++)
printf(n%d*%d=%2d
printf(,'\nn);
(2)
習(xí)題參考答案
main()
{inti,j,k;
for(i=l;i<==9;i++)
(
for(k=l;k<i;k++)
printf(〃”);
for(j=i;j<=9;j++)
printf(,,%d*%d=%2d〃,i,j,i*j);
printf(〃\n〃);
)
)
9、
^include<stdio.h>
main()
{inti=0;
longs,n,j,x;
for(j=100;j<=999;j++)
{s=0;x=j;
while(x>0)/*求原數(shù)j的反序數(shù)*/
{s=s*10+x%10;
x=x/10;
)
if(s=j)/*判斷反序數(shù)s與原數(shù)j是否相等*/
{i++;printfj);
if(i%10==0)printf(〃\n〃);/*每行輸出10個回文數(shù)*/
)
)
)
10、
#include<stdio.h>
main()
{intx,y,z;
for(x=l;x<20;x++)
for(y=l;y<33;y++)
for(z=3;z<100;z+=3)
{if((x*5+y*3+z/3)==100&&x+y+z==100)
printf("公雞有%d只,母雞有刎只,小雞有%d只\n",x,y,z);
)
)
11、
#include<stdio.h>
#include<math.h>
main()
302
{intn=l;doublex,sum=0,term=l.0;
scanf("%lf",&x);
while(fabs(term)>=le-6)
{sum+=term;
term*="x*x/(n*(n+1));
n=n+2;
)
printf(acos(%lf)=%lf,%lf\nw,x,sum,cos(x));
)
12、
問題分析:
用迭代法求平方根的算法如下:
(1)設(shè)定一個x的初值xO;
(2)用上述公式求出x的下一個值xl;
(3)再將xl代入上述公式,求出x的下一個值x2;
(4)如此繼續(xù)下去,直到前后兩次求出的X值(XM和X。滿足,用一相|<10-5。
為便于程序處理,令x的初值x0=a/2(也可以是其他值),求出XI。程序?qū)崿F(xiàn)如下:
#include<math.h>
main()
{floata,xO,xl;
printf(uPleaseinputapositivenumber:,,);
scanfC^f\&a);/*輸入a的值*/
x0=a/2;
xl=(x0+a/x0)/2;
do
{xO=xl;
xi=(x0+a/x0)/2;
}while(fabs(x1-x0)>=1e-5);
printf(4tThesquarerootof%fis%f,thetruerootis%f\n”,a,x1,sqrt(a));
)
13、
程序如下:
#include<math.h>
main()
{floatx,xO,f,fl;
x=1.5;
do
{xO=x;
f=((2*x0-4)*x0+3)*x0-6;
fl=(6*x0-8)*x0+3;
x=xO-f/fl;/*進(jìn)行牛頓迭代*/
while(fabs(x-x0)>=le-5);
習(xí)題參考答案
printfC'Therootis%f\n,,,x);
)
14、
#include<stdio.h>
^include<math.h>
#defineepsilon0.00001/*定義要求的精度*/
floatf(floatx)/*求函數(shù)值*/
{return(2*x*x*x-4*x*x+3*x-6);
)
main()
{floata,b,x;
scanf&a,&b);/*輸入求根區(qū)間*/
if(f(a)*f(b)>=0)/*判斷是否符合二分法使用的條件*/
{printf(〃不滿足二分法使用條件,退出!〃);exit(0);}
do
{x=(a+b)/2;
if(f(x)*f(b)<0)/*如果成立,則根在區(qū)間的右半部分*/
a=x;
else/*否則根在左半部分*/
b=x;}
while(fabs(b-a)>=epsilon);/*判斷是否達(dá)到精度要求,如果沒達(dá)到,繼續(xù)循環(huán)*/
x=(b+a)/2;/*取最后的小區(qū)間中點作為根的近似值*/
printf(,zx=%f\nz,,x);/*輸出函數(shù)的近似根*/
)
15、
#defineN4
main()
{inti,j,k;
for(i=0;i<N;i++)
{for(j=0;j<N-i-l;j++)printf(HM);
for(j=N;j>=N-i;j-)printf。*");
for(j=N-l;j>=N-i;j-)printf("*");
for(j=0;j<N-i-1;j++)printf("");/*本行也可以不要*/
printf(”\n”);
習(xí)題6
一、選擇題
1.B2.D3.D4.D5.A6.C
二、填空題
閱讀程序?qū)懗鲞\行結(jié)果題
1.第一行:143
304
第二行:258
2.第一行:124
第二行:357
第三行:689
三、編程題
1.#include<stdio.h>
main()
(
charstri[20],str2[10];
inti=0,j=0;
gets(strl);
gets(str2)^
while(strl[i]!=,\0,)i++;
while(str2[j]!=,\0,)strl[i++]=str2[j++];
strl[i]=,\0,;
puts(strl);
)
2.#defineM3
#defineN4
#include<stdio.h>
main()
(
inti,j,m;
inta[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},pp[N];
for(j=0;j<N;j++)
(
m=a[0]|jJ;/*將m值設(shè)為每一列的第一行元素的值*/
for(i=0;i<M;i++)/*找每一列的最小值,賦給m*/
if(a[i][j]<m)m=a[i][j];
pp[jl=m;/*將每一列的最小值m存入pp數(shù)組*/
)
for(j=0;j<N;j++)/*輸出pp數(shù)組*/
printf(4t%d2pp[j]);
3.#include<stdio.h>
voidfind(inta[5][5])
{inti,j,row,col,suml,sum2;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{suml=sum2=0;
for(col=0;col<5;col++)
suml+=a[ij[colj;
習(xí)題參考答案
for(row=0;row<5;row++)
sum2+=a[row][j];
if(suml==sum2)
printfCta[%d][%d]:%d\n,\ij,a[i][j]);
main()
{inli,j,a[5][5]={{2,81,9,4},{5,7,l,3,0},{7」,7,5,2},{3,221,5},{0,21,6,8}};
for(i=0;i<5;i++)
{forG=O;j<5;j++)
printf("%4d”,a[i][j]);
printf("\n”);
find(a);
)
4.
#include<stdio.h>
#include<stdlib.h>
main()
{inta[3][5],x,y,i,j,k,flag=0;
intmax,min;
for(i=0;i<3;i++)
for(j=0;j<5;j++)scanf(”%d”,&a[i][j]);/**/
for(i=0;i<3;i++)
{max=a[i][0];y=0;
for(k=l;k<5;k++)if(max<a[i][k]){y=k;max=a[i][k];}
min=a[i][y];x=i;
for(k=0;k<3;k++)if(min>a[k][yj){x=k;min=a[k][y];}
if(i==x){printf(,,a[%d][%d]=%disAndian\nu,x,y,a[x][y]);flag=l;}
)
if(flag==0)printf(n\nNotfoundAndian!,1);
)
5.#include<stdio.h>
#defineN10
voidcrl(inta[J)
{inti,j,max=0,min=0,temp;
for(i=l;i<N;i++)
if(a[min]>a[i])min=i;
temp=a[min];
j=min;
while(j>0)
{a[j]=a|j-l];
306
a[O]=temp;
for(i=l;i<N;i++)
if(a[max]<a[i])max=i;
temp=a[maxl;
j=max;
while(j<N-l)
{a|j]=a[j+l];
j++;
)
a[N-l]=temp;
)
main()
{inta[N]={8,5A9,4,1,-1,7,3,2);
inti;
crl(a);
for(i=0;i<N;i++)printf("%5d”,a[i]);
printf("\n”);
)
6.#include<stdio.h>
#include<string.h>
intReplace_string(charline[],charstrl[],charstr2[])
{inti=0,j,loc;
chartemp[80];
while(i<=strlen(line)-strlen(str2))
{j=0;loc=i;
while(strl[jj==line[locj&&strl[j]!=,\0,)
{loc++;j++;}
if(strl[j]==,\O,)
{strcpy(temp,&line[loc]);
strcpy(&line[i],str2);
i+=strlen(str2);
strcpy(&line[i],temp);
return1;
)
elsei++;
)
return0;
)
習(xí)題7
一、選擇題
習(xí)題參考答案
1.A2.A3.D4.C5.A
6.C7,B8.C9.B10.D
二、填空題
1.a=0,b=7
2.110
3.20
4.abc,ABC,be,BC,c,C,
5.14
6.len++p++
三、編程題
1、編寫一個程序,將字符串computer賦給一個字符數(shù)組,然后從第一個字母開始間隔
地輸出該字符串,請用指針完成。
main()
/z,,
{charch[20]=computer)*p=ch;
inti;
for(i=0;i<strlen(ch);i+=2)
printf(〃枇",*(p+i));
)
2、輸入3個字符串,按由小到大的順序輸出。
main()
{charstrl[20],str2[20],str3[20];
charcharp[20],*pl,*p2;
printf(''Inputthreelindes:\nz,);
gets(strl);gets(str2);gets(str3);
pl=strl;p2=str2;
if(strcmp(strl,str2)>0)
{strepy(p,pl);strepy(pl,p2);strepy(p2,p);}
pl=strl;p2=str3;
if(strcmp(strl,str3)>0)
{strepy(p,pl);strepy(pl,p2);strepy(p2,p);}
pl=str2;p2=str3;
if(stremp(str2,str3)>0)
{strepy(p,pl);strepy(pl,p2);strepy(p2,p);}
printf(^Now,theorderis:\n,z);
printf(,z%s\n%s\n%s\n/z,strl,str2,str3);
)
3、求一個3X3矩陣主對角線元素之和。
main()
308
{inta[3][3],*P,i,s=0;
for(i=0;i<3;i++)
scanf(zz%d%d%d/z,&a[i][0],&a[i][l],&a[i][2]);
p=&a[0][0];
for(i=0;i<3;i++)
s=s+*(p+3*i+i);
printf("%d\n”,s);
)
4、將一個3X3矩陣轉(zhuǎn)置。
main()
{inta[3][3],*p;
inti,j,t;
printf("'Inputmatrix:\nz,);
for(i=0;i<3;i++)
scanf(z,%d%d%dz,,&a[i][0],&a[i][1],&a[i][2]);
p=&a[0][0];
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{t=*(p+3*i+j);
*(p+3*i+j)=*(p+3*j+i);
*(p+3*j+i)=t;
}
printf("Now,matrix:\n,z);
for(i=0;i<3;i++)
printf(z,%d%d%d\n〃,a[i][0],a[i][1],a[i]⑵);
)
5、輸出給定的字符串中某一個字符前面的一串字符。如指定字符'a',則對字符串
Fortranprogram”,輸出〃Fortr〃。若無指定字符,則輸出相應(yīng)的提示信息。
#include<stdio.h>
main()
{inti,n=0;
char*ptr,str[10],ch;
printf("Inputastring:\nz/);
scanf(〃%s〃,str);
ptr=str;
getchar();
printf("Pleaseinputacharacter\nzz);
scanf&ch);
習(xí)題參考答案
while(ch二二'\n)
{printf("Pleaseinputacharacteragain!");
scanf(〃%c〃,&ch);
)
while(*ptr!=ch)
{ptr++;n++;}
for(i=0;i<n;i++)
printfC%c",*(str+i));
}
注意:本題中g(shù)etcharO的作用是吸收鍵入給第一個scanf函數(shù)的字符串尾部的回車符,
如果無getchar(),則將無法正確輸入字符給變量cho
6、輸入一行字符,計算其中大寫字母、小寫字母、數(shù)字、空格及其他字符的數(shù)目。
-include<stdio.h>
main()
(intupper=0,lower=0,digit=O,space=0,other=0,i=0;
char*p,s[20];
printf("Inputastring:");
while((s[i]=getchar())!=,\n)i++;
p=s;/*使p指向數(shù)組s的首地址*/
while(*p!=,\n)
{if(<>A,<=*p)&&(*p<=,Z,))
++upper;
elseif(('a'<=*p)&&(*p<='z'))
++lower;
elseif(*p='')
++space;
elseif((*p<='9')&&(*p>='O'))
++digit;
else
++other;
p++;
)
printf(/zuppercase:%dlowercase:%dz/,upper,lower);
printf(,zspace:%ddigit:%dother:%d\n,z,space,digit,other);
)
7、從一個給定的字符串中找出某一子字符串的位置(從1開始)。例如子串“efg”在
字符串“abcdefghijk”中位置為5。若字符串中沒有指定的子串,則標(biāo)記為0。
ttinclude<stdio.h>
310
main()
{inti,n=O;
charstr1[20],str2[20],str3[20];
char*pl=strl,*p3=str3,*p=strl;
printf("'Inputastring:\n,z);
gets(str1);
printf("Pleaseinputasubstring:\n");
gets(str2);
n=strlen(str2);
while(*pl!=,\0?)
{for(i=0;i<n;i++)/*本for循環(huán)用于生成與str2進(jìn)行比較的字符串*/
{*p3=*p++;
p3++;
}
*p3='\0';/*在新生成的字符串尾添加結(jié)束符*/
if(strcmp(str3,str2)==0)/*新生成的字符串存放在str3中*/
{printf("substring'spositionis:%d\n,z,pl-strl+1);
pl=\05;
else
{pl++;/*使P指向字符串strl的下一字符*/
P=pl;
p3=str3;/*使p3重新指向數(shù)組str3首地址*/
)
if(*pl='\O')printf("Substringisnotinthestring!");
)
注意:由于gets函數(shù)可以接收帶有空格的字符串,所以本題中采用gets而未采用不可
接收帶空格字符串的函數(shù)scanfo
8、編程刪除字符串中的所有空白字符。
main()
{charstrl[20],str2[20];
char*pl,*p2;
printf(,zPleaseinputastring:\nz,);
gets(strl);/*strl用于存放原始字符串*/
pl=strl;
p2=str2;/*str2用于存放去掉空格后的字符串,使p2指向str2*/
while(*pl!=\0?)
習(xí)題參考答案
{if(*pl!='')
{*p2=*pl++;/*將原始字符串中的字符依次賦值給str2*/
p2++;
else
P1++;/*遇空格符,只移動指針pl,而不把空格符賦值給str2*/
)
printf("Newstringis:\n%s\n”,str2);
)
9、有n個人圍成一圈,順序排號。從第1個人開始報數(shù)(從1到3報數(shù)),凡報到3
的人退出圈子,問最后留下的是原來第幾號的那位。
main()
{inti,num[20],*p,n=0,m,k;
printf("Inputthenumberofpeople:n=H);
scanf(H%d",&n);
for(i=0;i<n;i++)
num[i]=i+l;/*以1至n為序給每個人編號*/
p=num;
m=0;/*m為退出人數(shù)*/
i=0;/*i為每次循環(huán)時的計數(shù)變量*/
k=0;/*k為按1,2,3報數(shù)時的計數(shù)變量*/
while(m<n-l)當(dāng)退出人數(shù)比n-1少時(未退出人數(shù)大于1時)執(zhí)行循環(huán)體*/
{if(*(p+i)!=O)k++;
if(k==3)/*本if分支對退出的人的編號賦值為0*/
{*(p+i)=0;
k=0;/*重新從1到3報數(shù)*/
m++;/*退出人數(shù)加1*/
)
i++;
if(i==n)i=0;/*報數(shù)到一圈人的尾部時,i恢復(fù)為0,也即使人圍成一圈*/
while(*p==0)p++;
printf("ThelastoneisNO.%d\n'r,*p);
10、有一個字符串,包含n個字符。編程實現(xiàn):將此字符串中從第m個字符開始的全部
字符復(fù)制成為另一個字符串。
main()
{charstrl[20J,str2[20];
char*p=strl;
intn,m,i;
printf("Pleaseinputastring:\nH);
gets(strl);
312
n=strlen(strl);
printf(nWhichcharacterthatbegintocopy?,1);
scanf(u%d",&m);
if(n<m)
printf("inputerror!");
else
{for(i=0;i<n-m+1;i++)
*(str2+i)=*(p+m-1+i);
*(str2+i)='\0,;
)
printfC'Newstringis:\n%s\nu,str2);
習(xí)題8
一、選擇題
1、C2、A3、D4、D5、A6^A7、A8、C9、A10、B
11>B12、C13、B14、C15、B16、C17>B18、D19、B20、B
二、填空題
1main2、scanfgets3、24^auto5、1,26、3235
7、5,258、159、310、6,72011、912、[l]x[2]x-f(x)/fl(x)
三、改錯題
1、參考答案與分析:
分析:
第1處錯誤:題目中已經(jīng)告訴我們“函數(shù)voiddbubble(int*f,intn)的功能是“,但在程序
的第2行定義函數(shù)時頭部就與題目要求不一致,因此,第I處錯誤就在第2行,只要將第2
行改成"voiddbubble(int*f,intn)”即可。
第2處錯誤:在函數(shù)dbubble。中的第二個內(nèi)循環(huán)(反向冒泡),題目要求很清楚:“從
f[n-2]開始(i=n-2),比較f[i]與若f[i]小于則交換f[i]和兩個元素的值,”,
所以,其中的"if(f|j]>f]j-l])w應(yīng)改成<<if(fU]<f[i-l]),,o
第3處錯誤:在主函數(shù)中定義數(shù)組時使用了“inta[n]={4,7,-3,2』0』7,l,6,9,-4};”這樣的
形式,其中n是變量,而根據(jù)數(shù)組的定義我們知道,在定義數(shù)組時口中表示的是數(shù)組元素的
個數(shù),必須由“常量表達(dá)式”組成,而不能是變量。因此,只要將n改成10即可。
第4處錯誤:在主函數(shù)中,調(diào)用函數(shù)dbubble。時調(diào)用方式不對。原調(diào)用方式是“void
dbubble(n,a);",此處有兩個錯誤,一是以語句方式調(diào)用函數(shù)時,其前面不能有“void”,應(yīng)
去掉;二是實參的順序與函數(shù)dbubble()定義時的順序不一致。因此,本錯誤應(yīng)改成
“dbubble(a,n);w()
2、參考答案與分析:
分析:
第1處錯誤:在函數(shù)find。的頭部定義出錯。函數(shù)頭部定義為“voidfind(inta[5][]),\
在二維數(shù)組的名字作為形參時,必須明確第二維的大小,第--維可以省略;但不能省略第二
維中的每行的元素個數(shù)。因此,可以改成“voidfind(inta[”D”或“voidfind(inta[5]L5])\
第2處錯誤:這處錯誤應(yīng)在計算列元素之和的語句"for(row=0;row<5;row++)
sum2+=a|jJlrow];”中。由于要求的是列元素之和,則列下標(biāo)不應(yīng)該變,而變化的是行下標(biāo)。
習(xí)題參考答案
因此,可以將本處錯誤改成ufor(row=0;row<5;row++)sum2+=a[row][j];,,o
第3處錯誤:在C語言中,判斷兩個整數(shù)是否相等用的運算符是“二=",而“二”是賦
值運算符,所以這處錯誤在<<if(suml=sum2)printf(”a[%d][%d]:%d\n”,i,j,a[i皿);”語句中。
應(yīng)該改成aif(suml==sum2)printf(na[%d][%d]:%d\nu,i,j,a[i][j]);,,o
第4處錯誤:這處錯誤出現(xiàn)在主函數(shù)中,在調(diào)用find。函數(shù)時,由于定義find。函數(shù)時形
參只有一個,即二維數(shù)組的數(shù)組名,但在調(diào)用時卻有兩個實參,顯然是錯誤的。應(yīng)將語句
“find(a,5);"改成“find(a);”
四、編程題
1、參考答案:
#include<stdio.h>
#defineM10
main()
{intk;
intjiec(intk);/*聲明函數(shù)*/
floats=0;
printff4計算代數(shù)式的值\n\n");
for(k=l;k<=M;k++)
s+=1.0/jiec(k);/*函數(shù)以表達(dá)式方式調(diào)用*/
printf(“計算結(jié)果為:s=%f\n,,,s);
)
intjiec(k)/*計算階乘值的函數(shù),函數(shù)名前的int表示返回值的類型*/
intk;
{ints,i;
s=l;
for(i=l;i<=k;i++)s*=i;/*計算1*2*3*…*k,并將計算結(jié)果賦值給變量s*/
return(s);/*將計算得的階乘值返回調(diào)用函數(shù)(這里是主函數(shù))*/
)
2、參考答案:
#include<stdio.h>
#include<math.h>
intshushu(intn)
{intj,k=0;/*計數(shù)變量k清零*/
for(j=2;j<=sqrt(n);j++)
if(n%j=0)k++;
if(k!=0)retum(O);
elsereturn(l);
)
main()
{intn,k;
printfC'Pleaseinputn:");
scanf("%d",&n);
k=shushu(n);
314
if(k==O)printf("\nNO!‘‘);
elseprintfC'XnYes!");
)
3、參考答案:
intstr_len(char*str)
{intk=0;
while(*str!=,\O,){k++;str++;}
retum(k);
)
main()
{chars[80];
printfCTleaseinputastring:,,);
gets(s);
printf(tl\nThestringlengthis:%d,,,str__len(s));
)
4、參考答案:
#include<stdio.h>
#include<string.h>
voidex(intk,charstr[])
{inta,b,c,d;
a=k/1000;b=k/100%10;c=k/10%10;d=k%10;
str[0]=,0,+a;str[l]=O+b;str[2]=,0,+c;str[3]=*0,+d;
)
main()
{inti,k;
chars[4];
do{
printf("請輸入一個4位整數(shù):");
scanf(M%dM,&k);}while(!(k>=1000&&k<=9999));
ex(k,s);
for(i=0;i<4;i++)printf(H%cu,s[iJ);
)
5、參考答案:
#include<stdio.h>
voidzhuanzhi(inta[]l3J)
{inti,j,t;
for(i=0;i<3;i++)
for(j=i+l;j<3;j++)
{t=a[i]|j];
a[i]U]=aU][i];
aUWH;
習(xí)題參考答案
main()
{intb[3][3],ij;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%dr\&b[i][j]);
zhuanzhi(b);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf(H%d",b[i][j]);
printf(u\nu);
)
)
6、參考答案:
#include<stdio.h>
voidduihuan(intalJ)
{intmax,min,i,j,k,temp;
max=min=a[OJ;j=k=O;
for(i=0;i<10;i++)
{if(a[i]>max){max=a[i];j=i;}
if(a[i]<min){min=a[i];k=i;}
)
if(j!=O){temp=a[jj;a[j]=a[9];a[9]=temp;}
if(k!=9){temp=a[0J;a[0]=a[k];a[k]=temp;}
)
voidinput(inta[])
{inti;
for(i=0;i<10;i++)scanf("%dn,&a[i]);
)
voidoutput(inta[J)
{inti;
printf(n\nu);
for(i=0;i<10;i++)printf(u%dM,a[i]);
)
main()
{intb[10];
input(b);
duihuan(b);
output(b);
)
7、參考答案:
#include<stdio.h>
#defineN10
316
voidsort(chars[])
{intij;
chart;
for(i=l;i<N;i++)
for(j=0;(j<N-j)&&(s[i]!='\O1);j++)
if(sU]>sU+l])
{t=s[j];s[j]=s[j+l];s[j+l]=t;}
)
main()
{charstr[8O];
printf("請輸入一個字符串:");
gets(str);
sort(str);
printf(n\n排序后的字符串是:%s\str);
)
8、參考答案:
#include<stdio.h>
intletter,digit,space,other;
voidfunc(chars[])
{inti;
for(i=0;s[i]!=,\0';i++)
{if(s[i]>=,a'&&s[i]<=>z'||s[i]>=,A,&&s[i]<='Z,)letter++;
elseif(s[i]=-*)space++;
elseif(s[i]>='0,&&s[i]<=,9,)digit++;
elseother++;
)
)
main()
{charstr[8OJ;
printf("\nPleaseinputastring:");
gets(str);
letter=0;digit=0;space=0;other=0;
func(str);
printf("Letteris%d,Spaceis%d,Digitis%d,Otheris%d,",letter,space,digit,other);
)
9、參考答案:
#include<stdio.h>
voidconvert(intn)
{inti;
if((i=n/10)!=0)convert(i);
putchar(n%10+'0');
main()
習(xí)題參考答案
{intnumber;
printf("\nPleaseinputaninteger:");
scanf(M%dM,&number);
printf(,'\nOutput:u);
if(number<0)
{putchar(-');
number=-number;
)
convert(number);
)
習(xí)題9
一、選擇題
1、B2、C3、A4、B
二、閱讀程序題
1、575
2、第一行是H04
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)業(yè)合伙人簽訂合同范本
- 業(yè)務(wù)轉(zhuǎn)包合同范例
- 農(nóng)家樂入股合同范本
- 產(chǎn)品會展合同范本
- 不退不換合同范本
- 助聽器合同范本
- 勞務(wù)派遣合同范本6
- 借名辦證合同范本
- 倉庫租憑合同范本
- 勞動合同范本廣州
- CEO自戀及其經(jīng)濟(jì)后果研究:以格力電器為例
- 六鑫伺服刀塔說明書LS系列
- 19.骨折術(shù)后內(nèi)固定取出臨床路徑
- 腎內(nèi)科臨床診療規(guī)范(南方醫(yī)院)
- 實驗心理學(xué)課件(周愛保博士版)
- 04 第三章 環(huán)境污染物的生物轉(zhuǎn)運和生物轉(zhuǎn)化 -毒物動力學(xué)
- 珍愛生命 安全第一 中小學(xué)主題教育班會
- 殺蟲雙(單)合成反應(yīng)的研究及其工藝條件的優(yōu)化
- 膨脹螺栓選型計算_20160606
- 成套開關(guān)柜電氣員必學(xué)的電氣知識
- 小學(xué)一年級硬筆書法入門.ppt
評論
0/150
提交評論