版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
二級C語言課本課后習(xí)題參考答案
第?章程序設(shè)計基本概念
(1)exe
(2)C,obj,exe
(3)順序,選擇,循環(huán)
***************EndofChapter1*******************
第二章C程序設(shè)計的初步知識
一、選擇題
(1)B(2)D(3)B(4)A(5)C
(6^7)B(8)I^9)A(10)C
(11)B(12)B(13)A
二、填空題
(14)11,12
(15)4.2,4.2
(16){,}說明,執(zhí)行
(17)關(guān)鍵字,用戶標識符
(18)int,float,double
(19)floatal=ka2=l;
(20)存儲單元
(21)3.5
(22)a*b/ca/c*ba*(b/c)
(23)10賦給變量s
(24)位,0或1
(25)8,255,11111111,0,0(X)00000
(26)32767,-32768,1000000000000000
(27)+,八,十六
三、上機改錯題
(28)清指出以下C程序的錯誤所在
#includestdio.h;
main();/*mainfunction*/
floatr,s;/*/*risradius*/,/*sisareaofcircular*/*/
r=5.0;
s=3.14159*r*r;
printf("%f\n",s);
※正確應(yīng)為:
#include或#include"stdio.h"
main()/*mainfunction*/
{
floatr,s;/*risradius,sisareaofcircular*/
r=5.0;
s=3.14159*r*r;
printf("%f\n',,s);
(29)請指出以下C程序的錯誤所在
#includestdio.h
main/*mainfunction*/
(
floata,b,c,v;/*a,b,caresides,visvolumeofcube*/
a=2.0;b=3.0;c=4.0
v=a*b*c;
printf("%f\n”,v);
I
※正確應(yīng)為:
#include'*stdio.h"
main()/*mainfunction*/
(
floata,b,c,v;/*a,b,caresides,visvolumeofcube*/
a=2.0;b=3.0;c=4.0;
v=a*b*c;
printf(M%f\n';v);
)
***************EndofChapter2*******************
第三章順序結(jié)構(gòu)
**************************************************
一、選擇題
⑴C⑵C⑶D(4)C⑸D
(6)B(7)C(8)D(9)A(10)B
(11)C(12)D(13)D(14)A(15)C
(16)C(17)C(18)均不對,應(yīng)為scanf("%6f”,&c)(18)C(20)B
二、填空題
(21)?-200,2500②i=-200,j=2500③i=-200,j=2500
(22)12,0,0
(23)語句塊,{:}
(24);
(25)100V空格>25.81〈空格>1.89234/*可用一個或幾個空格作為輸入時的間隔符*/
10025.811.89234/*Tab(制表符)也可以作為輸入時的間隔符*/
10025.811.89234/*CR(回車符)也可以作為輸入時的間隔符*/
(26)x=127,x=uuu127,x=uuu177,x=uuuu7f,x=uuu127。
(27)x=127,x=127uuu,x=177uuu,x=7fuuuu,x=127u口u。
(28)a=513.789215,a=uu513.79,a=uu513.78921500,a=uu513.78921500
三、上機改錯題
3.30編寫程序,把560分鐘換算成用小時和分鐘表示,然后進行輸出。
※程序如下※
#include<stdio.h>
main()
{
inthour,minute;
hour=560/60;
minute=560%60;
printf(',hour=%d,minute=%d'\hour,minute);
}
3.31編寫程序,輸入兩個整數(shù):1500和35(),求出它們的商數(shù)和余數(shù)并進行輸出。
※程序如下※
#include<stdio.h>
main()
(
intnuml,num2,ij;/*定義變量i一商,j—余數(shù)*/
printf("inputnum1andnum2:\n");
scanf("%d%du,&numl,&num2);
i=numl/num2;
j=numl%num2;
primf("商=%d\n余數(shù)=%d”,i,j);
)
3.32編寫程序,讀入三個雙精度數(shù),求它們的平均值并保留此平均值小數(shù)點后一位數(shù),對小數(shù)點后第二位
數(shù)進行四舍五入,最后輸出結(jié)果。
※程序如下※
#include<stdio.h>
niain()
(
doublea,b,c,average=0;
printf("inputa,b,c(double):\n'*);
',
scanf(%lf%lf%lf",&a,&b,&c);
average=(a+b+c)/3;
averagc=average*10;
average=average+0.5;
average=(int)avcrage;
average=average/10;
printf("average=%lf",average);
3.33編寫程序,讀入三個整數(shù)給a,b,c,然后交換它們中的數(shù),把a中原來的值給b,把b中原來的值給
c,把c中的值給a。
※程序如下※
#includc<stdio.h>
main()
inta,b,c,t=O;
printf("inputabc:\n");
scanf("%d%d%dn,&a,&b,&c);
t=c;c=b;b=a;a=t;
printf("a=%db=%dc=%d",a,b,c);
}
***************EndofChapter3*******************
第四章選擇結(jié)構(gòu)
一、選擇題
(1)A(2)A(3)A(4)D(5)C
(6)A(7)B(8)均錯(9)D(1())A
二、填空題
(II)非零,零
(12)<或<=、>或>=、==、!=
(13)邏輯非、邏輯與、邏輯或
(14)!、<或<=、>或>=、==、!=、&&、II
(15)!
(16)a==bIIa4或x>4IIx<-4
(17)1
(18)x>0?0:1,1
(19)a=3,b=2,c=2
(20)*#
三、編程題
4.21當(dāng)a>0時,請將以卜語句改寫成switch語句。
if(a<30)m=l;
elseif(a<40)m=2;
elseif(a<50)m=3;
elseif(a<60)m=4;
elsem=5;
※程序如下※
#includc<stdio.h>
main()
{
inta;
printf("Entera:\n");
scanf("%d",&a);
switch(a/10)
(
case0:
case1:
case2:printf("in=lu);break;
case3:printf("m=2n);break;
case4:printf("m=3n);break;
case5:printf("m=4n);break;
default:printf("m=5");
}
1
4.22編寫程序,輸入一位學(xué)生的生日(年:yO、月:mO、日:dO);并輸入當(dāng)前的日期(年:yl、月:ml、
日:(11);輸出該生的實足年齡。
※程序如下※
#include<stdio.h>
main()
(
intyO,yl,mO,m1,dO,d1,age=O;
printf("YourBirthday(yyyy-mm-dd):\n");
scanf(n%d-%d-%d",&yO,&mO,&dO);
printf("CuiTentDate(yyyy-mm-dd):\n");
scanf("%d-%d-%d”,&y1,&m1,&d1);
if(d1BR>if(m1BR>age=y1-yO;
printf("\nAge=%d",age);
}
4.23編寫程序,輸入一個整數(shù),打印出它是奇數(shù)還是偶數(shù)。
※程序如下※
#include<stdio.h>
niain()
(
inti;
printf("inputainteger:\n");
scanf("%dn,&i);
if(i%2=0)/*條件判斷*/
printf("%disaeven",i);
else
printf("%disaoddn,i);
4.24編寫程序,輸入a、b、c三個數(shù),打印出最大者。
※程序如下※
#include<stdio.h>
main()
(
inta,b,c,max=0;
prinlf("input(int)abandc:\n'*);
scanf(',%d%d%d",&a,&b,&c);
max=a;
if(maxBRmax=,"b;">if(maxBRmax="c;n>printf("max=%d",max);
}
4.25有?函數(shù):
編寫一程序,要求輸入x的值,輸出y的值。分別
(1)不嵌套的if語句(2)嵌套的if語句
(3)if_else語句(4)switch語句
※程序如下※
源程序一:(1)不嵌套的if語句
#include<stdio.h>
main()
(
floatx;
printfC4nputx:\n");
scanf('r%f',&x);
if(x>-5&&x<0)
printf(,,y=%f,,x);
if(x==0)
printf(',y=%f',x-l);
if(x>O&&x<IO)
pnntf("y=%f',x+l);
if(x<=-5llx>=10)
printf("inputerror");
}
源程序二:(2)嵌套的if語句
#includc<stdio.h>
main()
(
floatx;
printf("inputx:\n");
scanf(n%r,&x);
if(x>-5&&x<10)
(
if(x==0)printfC'y=%r,x-l);
if(x<0)printf(Hy=%r,x);
if(x>0)printf("y=%f',x+l);
)
if(x<=-5llx>=10)
prinlf("inpu【error");
)
源程序三:(3)if_else語句
#include<stdio.h>
main()
(
floatx;
printf(r,inputx:\n");
scanf(H%f,,&x);
if(x>-5&&x<10)
if(x<0)
printf(Hy=%r,x-l);
elseif(x==0)
printf(',y=%f,,x);
else
printf(My=%f',x+1);
else
printf("inputerror1');
)
源程序四:(4)switch語句
#include<stdio.h>
main()
(
intflag;
floatx;
printfC'Enterx:\n");
scanf(H%f,,&x);
if(x>-5&&x<0)flag=-l;
if(x==0)flag=0;
if(x>0&&x<10)flag=l;
switch(flag)
(
case-1:printf(ny=%f',x);break;
case0:printf("y=%f\x-l);break;
case1:printf("y=%f',x+l);break;
)
}
***************EndofChapter4*******************
第五章循環(huán)結(jié)構(gòu)
一、選擇題
(1)D(2)C(3)B(4)C(5)C
(6)B(7)D(8)A(9)D(10)D
二、填空題
(11)5,4,6
(12)有錯
(13)-1
(14)11
(15)d=1.0,k++.k<=n
(16)x>=0,x
三、編程題
5.17編寫程序,求1—3+5—7+...-99+101的值。
※程序如下※
#include<stdio.h>
main()
{
inti,sum=0,s=l;
for(i=l;i<=101;i+=2)
(
sum=suin+i*s;
s=-s;/*控制符號交替變換*/
)
printf(',sum=%d,,,sum);
5.18編寫程序,求e的值,e=1+1/1!+l/2!+l/3!+l/4!+...+l/n!
(1)用for循環(huán),計算前50項
(2)用while循環(huán),要求直至最后一項的值小于le-4?
※程序如下※
源程序一:(1)用for循環(huán)實現(xiàn)
#includc<stdio.h>
main()
{
inti,n;
doublesum=l,t=l;
prinlf("inputn:\n");
scanf("%d",&n);
for(i=l;i<=n;i++)
(
t=t*i;/*實現(xiàn)階乘*/
sum=sum+l/t;
}
printf("e=%lf",sum);
)
源程序二:(2)用while循環(huán)實現(xiàn)
#includc<stdio.h>
main()
inti;
doubelsum=l,t=l;
while(fabs(1.0/t)>le-4)/*****fabs求浮點型數(shù)據(jù)的絕對值*/
(
t=t*i;
sum=sum+l/t;
i++;
}
prinlf("e=%lf',sum);
)
5.19編寫程序,輸出從公元1000年至2000年所有閏年的年號每輸出3個年號換一行。判斷公元年是否
閏年的條件是:
(1)公元年數(shù)如能被4整除,而不能被100整除,則是閏年。
(2)公元年數(shù)能被400整除也是閏年。
※程序如下※
#include<stdio.h>
main()
(
inti,j=0;
for(i=1000;i<=2000;i++)
(
if((i%4==0)&&(i%100!=0)ll(i%400==0))/*判斷是否是閏年的條件*/
{
printf(H&dn,i);
j++;
if(j%3=0)/*控制換行*/
printf("\n");
5.20編寫程序,打印以卜.圖形:
*
***
*****
*******
*****
***
*
※程序如下※
#include<stdio.h>
#include<math.h>
main()
{
inti,j;
for(i=l;i<=7;i++)/*控制行數(shù)*/
(
for(j=l;jv=7;j++)/*控制星數(shù)*/
(
if((j<=abs(4-i))ll(j>7-abs(4-i)))
printf("n);
else
1
printfCAn");
)
)***************EndofChapter5*
第六章字符型數(shù)據(jù)
**************************************************
一、選擇題
(1)B(2)D(3)A(4)A(5)B
(6)D(7)D(8)B(9)A(10)A
(ll)B(c)
二、填空題
(12)-1
(13)1
(14)ctype.h
(15)0
(16)10A20B30C40D
(17)7.29101.298/ABZ(7.29/101.298/AB/)
(18)A7.29BI01.298/
(19)AUUUZBUHUZCZ
三、編程題
6.19請編寫程序,輸入一行字符(用何車結(jié)束),輸出每個字符以及與之對應(yīng)的ASCII代碼值,每行輸出
三隊.
※程序如下※
#include<stdio.h>
main()
(
inti=0;
charch;
while((ch=gelchar())!='\n')
pnnlf(H%4c%4d",ch,ch);
i++;
if(i%3=0)
printfCXn'1);
}
)
6.20請編寫程序,輸入一行數(shù)字字符(用EOF結(jié)束),每個數(shù)字字符的前后都有空格。請編程,把這一行
中的數(shù)字轉(zhuǎn)換成?個整數(shù)。例如,若輸入:
2483(代表Enter鍵)
則輸出整數(shù):2483
※程序如下※
#include<stdio.h>
main()
(
charch;
while((ch=getchar())!=EOF)
{
if(ch=='*)
continue;
else
printf(,,%c,',ch);
}
)
6.21清編寫程序統(tǒng)計輸入的行數(shù),輸入用EOF結(jié)束輸入。
※程序如下※
#includc<stdio.h>
main()
|
charch;
inti=0;
while((ch=getchar())!=EOF)
(
if(ch=='\n')i++;
)
6.22請編寫程序統(tǒng)計輸入的一行中小寫字母的個數(shù)。
※程序如下※
#includc<stdio.h>
main()
inti=0;
charch;
while((ch=getchar())!='\n')
(
if((ch>='a')&&(ch<=,z,))
i++;
}
printf("%d”,i);
I
6.23請編寫輸出以卜.圖案的程序,圖案的行數(shù)由輸入的值確定。
A
BBB
CCCCC
DDDDDDD
EEEEEEEEEEE
※程序如卜※
#include<stdio.h>
main()
inti,j,k,n;
printf("Entern(integer):\n");
scanf(n%d",&n);
for(i=l;i<=n;i++)
for(j=n;j>i;j-)
prinlf(u*');
for(k=1;k<=2*i-l;k++)
printfC%cH,64+i);
printf("\n");
1
***************EndofChapter6*******************
第七章函數(shù)
一、選擇題
(1)C(2)C(3)B(4)C(5)A
(6)Df7)A
二、填空題
(8)12
(9)9.000000
(10)4
(ll)n=l,s
(12)z=l;i<=y,z=z*x
(13)l,s*i,0,f(k)
三、程序設(shè)計和編程題
7.14以下fun函數(shù)用以判斷n是否是索數(shù),fun函數(shù)中有邏輯錯,請調(diào)試改正。
fun(intn)
(
intk,yes;
for(k=2;k<=n/2;k++)
if(n%k==O)yes=O;
yes=l;
I
※正確答案是:
fun(intn)
(
intk,yes=l;
for(k=2;k<=n/2;k++)
if(n%k==O)returnyes=O;
returnyes;
}
main()
(
intn,yes;
printf("Entern(int):\n");
scanf("%du,&n);
yes=fun(n);
if(yes==1)printf("%disaprime",n);
elseprintf('*%disnotaprime",n);
7.15編寫函數(shù)immymod(inta,intb)用以求a被b除之后的余數(shù)。
※程序如下※
#includc<stdio.h>
intmymod(inta,intb)
(
intremainder;
remaindcr=a%b;
returnremainder;
(
main()
{
inta,b;
printf("Enterab(int):\n");
scanf(,,%d%d\&a,&b);
prinlf("余數(shù)二%d",mymod(a,b));
7.16編寫程序求:1-1/2+1/3-1/4+1/5-1/6+1Z7-...1/n
※程序如下※
#include<stdio.h>
main()
(
intn:
floata;
floatsum(intn);
scanf("%dn,&n);
a=sum(n);
printf("%10.53a);
)
floatsum(intn)
(
floats=0;
int
for(i=l;i<=n;i++)
{s=s+l/i*t;
t=-t;
)
returns;
7.17編寫函數(shù),根據(jù)整型形參m的值,計算如下公式的值。
t=1—1/(2x2)-1/(3xxm)
例如:若m=5,則應(yīng)輸出0.536389。
X程序如下※
#include<stdio.h>
main()
(
floatt=1;
floatf2(int);
inti,m;
scanf("%d",&m);
for(i=2;i<=m;i++)
t=t-f2(i);
pnntf("t=%f',t);
floatf2(in(m)
floats;
s=1.0/(m*m);
returns;
)
7.18編寫函數(shù)用以求表達式x2-5x+4,x作為參數(shù)傳給函數(shù),調(diào)用此函數(shù)求:
y1=22-5*2+4
y2=(x+15)2-5*(x+l5)+4
y3=sin2x-5*sinx+4
※程序如下※
#include<stdio.h>
#include<math.h>
floatfun(floatx)
(
floaty;
y=pow(x,2)-5*x+4;
returny;
1
main()
(
floatx,yl,y2,y3;
clrscr();
printfC'Enterx:\n");
scanf(H%f,,&x);
yl=fun(2);
y2=fun((x+15));
y3=fun(sin(x));
printf("y1=%f\ny2=%f\ny3=%f\n",y1,y2,y3);
***************EndofChapter7*******************
第八章指針
**************************************************
一、選擇題
⑴A⑵B(3)B(4)C(5)B
(6)B(7)C(8)D+(9)B(10)C
(11)C(12)C
二、填空題
(13)110
(14)7,+1
(15)char*p,p=&ch,scanf("%c”,p),*p='a
printf("%o”,*p)
(16)s=p+4,s=s-2,50,*(s+1),2,10,20,30,40,50
三、編程題
8.17請編寫函數(shù),其功能是對傳送過來的兩個浮點數(shù)求出和值與差值,并通過形參傳送回調(diào)用函數(shù)。
※程序如下※
fun(*x,*y)
{floatzl,z2;
zl=*x+*y;
z2=*x-*y;
*x=zl;*y=z2;
)
inain()
{float*a,*b,A,B;
a=&A;b=&B;
printf("inputtworealnumbers:");
scanf("%f%f',a,b);
printf("a,b=%f,%f\n",*a,*b);
printf("beforccallfunction:\n");
printf(na=%fb=%f\n",*a,*b);
fun(a,b);
printf("aftercallfunction:\n");
printf("a=%fb=%f\nM,*a,*b);
getch();
(
8.18請編寫函數(shù),對傳送過來的三個數(shù)選出最大和最小數(shù),并通過形參傳回調(diào)用函數(shù)。
※程序如下※
fun(int*a,int*b,int*c)
{inimax,min;
max=*a;min=*a;
if(*b>*a)max=*b;
if(*b<*a)min=*b;
if(*c>max)max=*c;
if(*c<min)min=*c;
*a=max;*c=min;
main()
{inta,b,c;
printf("Inputa,b,c:");
scanf("%d%d%d",&a,&b,&c);
printf("beforecallfunction:\n");
printf(na=%db=%dc=%d\nH,a,b,c);
fun(&a,&b,&c);
printf(Haftercallfunction:\n");
printf("max=%dmin=%d\nn,a,c);
getch();
}***************EndofChapter8*******************
第九章數(shù)組
**************************************************
一、選擇題
(1)D(2)A(3)A(4)A(5)C
(6)A(7)B(8)D(9)C(10)C
(11)C(12)D(13)D(14)A(15)A
(16)A(17)C(18)C
二、填空題
(19)9,0
(20)6
(21)12
(22)3
(23)2721
(24)-850,2,0
(25)k=p,k
(26)(c=getchar()),'c'-65
三、編程題
9.27輸入一行數(shù)字字符,請用數(shù)組元素作為計數(shù)器來統(tǒng)計每個數(shù)字字符的個數(shù).用下標為0元素統(tǒng)計字符“1”
的個數(shù),卜標為1的元素統(tǒng)計字符”2”的個數(shù),…
※程序如下※
#include<ctype.h>
main()
{char*s,a[100];
inti,k=0,num|l0]={0};
s=a;
printf(nInputannumberstring:'*);
scanf(H%sM,s);
while(*s!=,\0')
{if(isdigit(*s)&&(*s>=(0,))
num[*s-48]++;
s++;
)
for(i=0;i<9;i++)
printf(',%2d->%3d\n",i,num[i]);
printf("0—>%3d\n,',num[9]);
9.28編寫函數(shù),對具有10個整數(shù)的數(shù)組進行如下操作:從第n個元素開始直到最后?個元素,依次向前移動
個位置.輸出移動后的結(jié)果.
※程序如下※
move(inta|l()],intn)
{inti;
for(i=n;i<10;i++)
a[i-l]=a[i];
a[9]=0;
}
main()
{intx[10],i,n;
printf("input10number:");
for(i=0;i<10;i++)
scanf(H%d",&x[i]);
printf("\ninputtheN:");
scanf(H%d",&n);
move(x,n);
printf(n\nAftermovetnememberlistis:\n");
for(i=0;i<10;i++)
printf("%dH,x[i]);
getch();
9.29編寫函數(shù)把數(shù)組中所有奇數(shù)放在另一個數(shù)組中返回.
※程序如下※
main()
{inta[100]={0),b[100]={0),i,j;
printf(M\nInputthenumberlist(endwith32767):\n");
for(i=0;i<100;i++)
{scanf(n%d",&a[i]);
if(a[i]==32767)break;
)
i-;
odd(a,b,i);
printf("\narrayB:\n");
for(i=0;i<100;i++)
if(b|i]!=O)printf(n%d",b[i]);
elsebreak;
getch();
)
odd(inta[100],intb[100],intn)
{intij=0;
for(i=0;i<=n:i++)
if(a[i]%2!=0)b[j++]=a[i];
)-------------------------------------------------------------------------------------------------------
9.30編寫函數(shù)對字符數(shù)組中的輸入字母,按由大到小的字母順序進行排序。
※程序如下※
#include<string.h>
sort(chars|]jntn)
{int
for(j=0;j<(n-l);j++)
{p=j;
for(i=j+l;i<n;i++)
if(s[p]<s[i])p=i;
{t=s[j];s[j]=s[p];s[p]=t;}
)
}
main()
{char*s;
intn;
printf(M\nInputs:");
scanf("%s'\s);
n=strlen(s);
sort(s,n);
printf("\nthesortedstringis%s\n'*,s);
getch();
9.31輸入若干有序數(shù)放在數(shù)組中。然后輸入一個數(shù),插入到此有序數(shù)列中,插入后,數(shù)組中的數(shù)仍然有
序。請對以下三種情況運行你的程序,以便驗證你的程序是否正確。
(I)插在最前(2)插在最后(3)插在中間
※程序如下※
main()
{inti[100],n,*p,i=l;
a[0]=-32768;p=a+l;
printf("\nlnputannumberlist(endwith32767):\nu);
do
{scanf("%d”,&a[i|);
if(a[i]>=a[i-l])i++;
)
while(a[i-l]!=32767);
printfC'Xnlnputinsertednumber:");
scanf("%d",&n);
P=a;
insert(p,n);
p=a+1;
printf(n\nOutputarraya:\n");
do
if(*p!=32767)printf("%dH,*p++);
while(*p!=32767);
getch();
insert(int*q,intn)
{int*k;
k=q;
while(*q!=32767)q++;
*(q+l)=*q;
while(q>k)
{if(n>*(q-l)){*q=n;break;}
else{q—;*(q+l)=*q;)
9.32編寫函數(shù)把任意十進制整數(shù)轉(zhuǎn)換成二進制數(shù).提示:把十進制數(shù)不斷除2除,余數(shù)放在一個一維數(shù)組中,
直到商數(shù)為零.在主函數(shù)中進行輸出,要求不得按逆序輸出.
※程序如下※
main()
{intn,a[16]={0},*p;
printf("\nlnputannumber:");
scanf("%d'\&n);
p=a;
change(a,n,p);
printf("n=%d\n",n);
while(p<=a+15)
printf(',%d,,,*p++);
change(x,n,p)
intx[16],n,*p;
(
p=x+15;*p=0;
if(n==O)return(O);
while(n!=O)
{*p=n%2;
P-;
n/=2;
)
)
9.33編寫函數(shù)調(diào)用隨機函數(shù)產(chǎn)生。到19之間的隨機數(shù),在數(shù)組中存入15個互不重復(fù)的整數(shù)。要求在主函
數(shù)中輸出結(jié)果。若已定義x為血類型,調(diào)用隨機函數(shù)步驟如卜:
#include<stdio.h>
niain()
{inta[15],*p,i;
p=a;
frandni(a);
printf("\nThcarrayais:");
for(i=0;i<15;i++)
printf("%d”產(chǎn)p++);
frandm(a[]);
{intk=O,i,x,*q;
for(i=0;i<15;i++)a[i]=20;
while(k<15)
{x=rand()%20;
for(i=0;i<15;i++)
if(a[i]=x)continue;
elsea[k++]=x;
9.34求任意方陣每行、每列、兩對角線上元素之和。
※程序如下※
#defineN20
main()
{inta[N][N],x[N]={0},y[N]={0},i,j,m,sum=0;
printf(n\nInputN(<20)
scanf("%d",&m);
printf("\nInputarraya[%d][%d]:\n",m,m);
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{scanf("%dn,&a[i][j]);
x[i]+=a[i]U];yU]+=a[i][jl;
if(i==^j)sum+=a[i][i|;
)
printf("\nAftercompute:\n");
for(i=0;ivm;i++)
{for(j=0;jvm;j++)
printf("%5d”,a[i皿);
printf(n%5d\n",x[i]);
)
for(i=0;ivm;i++)
printf(n%5dn,y[i]);
printf(H\n\nSum=%d\n,,,sum);
getch();
)
9.35求兩個矩陣的和
#defineN20
main()
{inta[N][N],b[N][N],c[N][N],m,n,i,j;
printf("\nInputm,n(<20)
scanf("%d%d",&m,&n);
printf("\nInputarrayA[%d][%d]:\n",m,n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{scanf(H%dn,&a[i][j]);
)
printf("\nInputarrayB[%d][%d]:\n",m,n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{scanf('*%d",&b[i][jl);c[i]U]=a[i]U]+b[i][j];
)
printf("\nAftercomputearrayC:\n");
for(i=0;i<m;i++)
{for(j=O;j<n;j++)
printf("%5d”,cmUD;
printf("\n");
)
getch();
9.36編寫函數(shù)打印出以卜.形式的乘法九九表。
**AMULTIPLICATIONTABLE**
(1)(2)(3)(4)(5)(6)(7)(8)(9)
(1)123456789
(2)24681012141618
(3)369121518212427
(4)4812162024283236
(5)51015202530354045
(6)61218243036424854
(7)71421283542495663
(8)81624325048566472
(9)91827364554637281
※程序如下※
inain()
{inti,j,k;
printf(H\n**AMULTIPLICATIONTABLE**\n");
printfC");
for(i=l;i<10;i++)printf("(%3d),,,i);
printf(H\n----------------------------------------\n'*);
for(i=l;i<10;i++)
{for(j=0;j<10;j++)
if(j==O)printf("(%d)",i);
elseprintf(u%5d",i*j);
printf("\n");
)
printf("\n----------------------------------------\nH);
getch();
)---------------------------------------------------------------------------------------------------------
9.37調(diào)用隨機函數(shù)為5x4的矩陣置100以內(nèi)的整數(shù),輸出該矩陣,求出每行元素之和并把和值最大的那
一行與第一行上的元素對調(diào)。若己定義x為int類型,調(diào)用隨機
函數(shù)步驟如F:
#inciude"stdio.h"
include"stdlib.h"
main()
{staticintm[5][5]={0},i,j;
intk=0;
printf(u\nBcfore:\nu);
for(i=0;iv5;i++)
for(j=0;j<5;j++)
{m[i][j]=rand()%100;
printf(u%4d,',m[i]|j]);
if((++k)%5==0)printf(n\n");)
printf("\nAfter:\nn);
for(i=0;i<5;i++)
for(j=0;j<i;j++)
{k=m[i][j];m[i]|j]=m[j][i];m[j][i]=k;}
k=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{printf("%4d",m[i][j]);
if((++k)%5==0)printf(,'\nn);)
printf("\nProgramend!\n");
9.38調(diào)用隨機函數(shù)為5x5的矩陣置100以內(nèi)的整數(shù),輸出該矩陣,然后逆置該矩陣。即將第一列的元素
放在第一行上、第二列的元素放在第二行上、其它依次類推。
※程序如下※
#include"stdio.h"
main()
{intm[5][5]={0),ij;
intk=0;
printf("\nBefore:\nn);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{m[i]|j]=rand()%100;
printfC%4d",m|il[j]);
if((++k)%5=0)printf(n\n");}
printf("\nAfter:\nn);
for(i=0;i<5;i++)
for(j=0;j<i;j++)
{k=m[i][j];m[i][j]=m|j][i];m[j][i]=k;
printf(,'%4d,',m[i][j]);
if((++k)%5==0)printf(u\nH);}
k=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{printf(,'%4d",m[i][j]);
if((++k)%5==0)printf("\nH);}
printf("\nProgramend!\n");
getch();
)
***************EndofChapter9*******************
第十章字符串
一、選擇題
(1)B2)B3)C4)B5)C
(6)A7)C8)A9)C10)C
二、填空題
(ll)GFEDCB
(12)YXZA
(13)SO
(14)10
(15)11iss!
(16)strlen(str),j
(17)3
(18)goodgood!
三、編程題
10.19請編寫函數(shù)mygets和myputs,其功能分別與gets和puts相同,函數(shù)中用getchar和putchar讀入和輸
出字符。
※程序如卜※
#include
voidmygets(char*p)
{
charch;
while((ch=getchar())!='\n')
*(P++)=ch;
*p=0;
(
voidmyputs(char*p)
(
charch;
while(*p!=W)
putchar(*(p++));
)
main()
(
char*s;
clrscr();
mygets(s);
myputs(s);
(
10.20請編寫函數(shù),判斷一字符串是否是回文。若是回文函數(shù)返回值為1:否則返回值為0?;匚氖琼樧x和
倒讀都一樣的字符串。
※程序如下※
#include
inain()
chara[200],*p;
inti,j,flag=l;
clrscr();
scanf(,'%s,,,a);
p=a;
j=strlen(a);
for(i=0;i<=j/2;i++,j-)
if(*(p+i)!=*(p+j-l))
(
flag=O;
break;
}
if(flag)
prinlf(“Yes");
else
printfCNo1');
10.21請編寫函數(shù),刪除字符串中指定位置上的字符。刪除成功函數(shù)返回被刪字符:否則返回空值。
※程序如下※
#include
#include
del(char*p,intn)
(
inti;
charch;
if(n<=strlen(p))
ch=*(p+n-l);
else
ch='O';
for(i=n-l;*(p+i)!=AO,;i++)
*(p+i)=*(p+i+l);
returnch;
}
main()
(
intn;
char*s;
clrscr();
printf(M****Thestringis****\nH);
gets(s);
printf("Entern(0-%d)\nM,strlen(s));
scanf("%d",&n);
printf(H****Thedeletedcharis****\nH);
printf(M%c",del(s,n));
getch();
}
**************jofChapter[0*******************
第十?章對函數(shù)的進一步討論
一、選擇題
(1)D(2)B(3)A(4)C
二、填空題
(5)IJKLEFGHABCD
(6)7
⑺8
(8)*(S+J),i+l,i
⑼17
(10)(*fun)(),(*fun)(a+i*h),mypoly
三、編程題
11.11編寫程序outch,程序讀入一行字符,根據(jù)命令行中的參數(shù)進行不同的輸出。若有以下命令行:
outch-2程序?qū)ψx入的一行字符輸出最后兩個字符。若有以卜.命令行:outch+6程序?qū)λx入的一行字符
輸出開頭6個字符。若命令行中沒有參數(shù),則隱含規(guī)定輸出最后10個字符。為簡單起見,命令行中的參數(shù)
中只包含一位數(shù)字。
※程序如下※
#include<string.h>
main(intargc,char*argv[])
{char*str,*p;
inti,k;
str=(char*)malloc(50);
printf("\nlnputatextline(>10letters):\n'*);
scanf("%s'\str);
p=argv[l];
k=strlen(str);
if(argc==2)
{if(*p==v)
for(i=0;i<(*(p+1)-'0');i++)printf(n%c",*(str+i));
elseif(*p=--')
for(i=k-*(p+l)+'O';i<=k;i++)
printf("%c'\*(str+i));}
elsefor(i=k-10;i<k;i++)printf("%cn,*(str+i));
getch();
}
11.12請寫遞歸函數(shù),把輸入的一個整數(shù)轉(zhuǎn)換成二進制數(shù)輸出。
※程序如下※
#include
dec_bin(intn,inta[])
(
staticinti=0;
if(n==0lln==l)
{
a[i]=n;
returni;
)
else
(
a[i++]=n%2;
returndec_bin(n/2,a);
main()
{
inti,j,n,a[64];
printf("Entern(integer)\n");
scanf(n%d",&n);
j=dec_bin(n,a);
fbr(i=j;i>=O;i—)
printf("%d';a[i]);
11.13請用遞歸算法,求l+2+3+...n,n由鍵盤輸入。
※程序如下※
fun(intn)
(
intsum;
if(n==l)
return1;
else
(
sum=n+fun(n-l);
returnsum;
1
}
main()
(
intn,sum;
clrscr();
printf(MEntern(1+2+3+...+n):\nn);
scanf(n%d",&n);
sum=fun(n);
printf("sum=%d",suni);
11.14請用遞歸函數(shù),求裴波拉契級數(shù),求n階裴波拉契級數(shù)的公式如卜。
※程序如下※
#include
fac(intn)
(
longt;
if(n==Olln==l)
return1;
else
(
t=fac(n-1)+fac(n-2);
returnt;
)
)
main()
{
intn;
printf("Entern:\n");
scanf(H%dn,&n);
printf(M%ld-,fac(n));
I
***************EndofChapter]]*******************
第十二章C語言中用戶標識符的作用域和存儲類
?、選擇題
(1)C(2)B(3)A(4)C(5)D
(6^7—8)C
二、選擇題
⑼2,5,13,2,-2
(10)2468
***************EndofChapter[2*******************
第十三章編譯預(yù)處理和動態(tài)存儲分配
一、選擇題
(1)A(2)C(3)B(4)C(5)D
(6)DC7)D
二、選擇題
(8)ar=9ar=9ar=l1
(9)int*,s,*b
三、選擇題
13.10編寫出一個宏定義MYALPHA(C),用以判斷C是否是字母字符,若是得1,否則得0。
※程序如下※
#include
#include
#dcfincMYALPHA(C)isalpha(C)?l:0
main()
{
charch;
clrscr();
ch=getchar();
if(MYALPHA(ch))
printf(H%cisaalpha",ch);
else
printf(M%cisnotaalpha",ch);
13.11清寫出一個宏定義swap。,x,y)用以交換t類型的兩個參數(shù)。提示:用復(fù)合語句的形式。
※程序如下※
#include
#defineswap(t,x,y){t=x;x=y;y=t;}
main()
inta,b,t;
clrscr();
printf("Enteraandb:\n");
scanf("%d%dn,&a,&b);
swap(t,a,b);
printf("a=%d\nb=%d",a,b);
}
13.12請編寫程序,利用malloc函數(shù)開辟動態(tài)存儲單元,存放輸入的三個整數(shù)。然后按從小到大的順序輸
出這三個數(shù)。
※程序如下※
#include
#include
voidmain()
(
int*pData=(int*)malloc(sizeof(int)*3);
intt;
printf("Pleaseinputthreeintegralnumber\n");
scanf("%d%d%dn,pData,pData+1,pData+2);
for(inti=0;i<2;i++)
for(intj=i+1;j<3;j++)
if(*(pData+i)>*(pData+j))
(
t=*(pData+j);
*(pData+j)=*(pData+i);
*(pData+i)=t;
prinlf("%d\t%d\t%d\n',,*pData,*(pData+l),*(pData+2));
)
***************EndofChapter[3*******************
第十四章結(jié)構(gòu)體、共用體和用戶定義類型
一、選擇題
(1)D(2)D(3)D(4)A(5)C
(6)C(7)C(8)B
二、填空題
(9)structlink*next
(10)p->next,p->data<m
(11)structlist*,list,structlist*,list,returnh
三、編程題
14.12設(shè)有以下結(jié)構(gòu)類型說明:
structstud
(
charnum[5],name[10];
ints|4|;
doubleave;
);
請編寫:
(1)函數(shù)readrec把30名學(xué)生的學(xué)號、姓名、四項成績以及平均分放在一個結(jié)構(gòu)體數(shù)組中,學(xué)生的學(xué)號、
姓名和四項成績由鍵盤輸入,然后計算平均分放在結(jié)構(gòu)體對應(yīng)的域中。
(2)函數(shù)writerec輸出30名學(xué)生的記錄。
(3)main函數(shù)調(diào)用readrec函數(shù)和writerec函數(shù),實現(xiàn)全部程序功能(注:不允許使用全局變量,函數(shù)之
間的數(shù)據(jù)全部使用參數(shù)傳遞)。
※程序如下※
#include
#defineSTUDNUM30
structstud
{
charnum|5|,name[10];
ints[4]:
doubleave;
};
voidreadrec(structstud*pStud,intnum)
(
inti;
printf("\tNum\tName\tSl\tS2\lS3\tS4\n");
for(i=0;i<=29;i++)
(
prinlf("%d:\t",i);
scanf("%s%s%d%d%d%d,,,pStud->nuni,pStud->name,&(pStud->s[O]),
&(pStud->s[1J),&(pStud->s[2]),&(pStud->s[3]));
pStud->ave=(pStud->s[0]+pStud->s[l]+pStud->s[2]+pStud->s[3])/4.0;
pStud++;
)
)
voidwritercc(structstud*pStud,intnum)
(
inti;
printf("\tNum\tName\tSl\tS2\lS3\tS4\n");
for(i=0;i<=29;i+
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生物制藥廠房租賃合同及藥品研發(fā)生產(chǎn)服務(wù)協(xié)議3篇
- 科技力量團隊榮耀
- 2025年度精密模具加工委托合同協(xié)議書4篇
- 2025年度柴油發(fā)電機租賃與環(huán)保檢測服務(wù)協(xié)議3篇
- 二零二五年度出租車租賃運營管理承包合同3篇
- 二零二五年度餐飲行業(yè)健康證照辦理服務(wù)合同樣本3篇
- 2025年度產(chǎn)學(xué)研合作知識產(chǎn)權(quán)共享合同2篇
- 專業(yè)鉆掘設(shè)備出租協(xié)議規(guī)范文本一
- 個人租車合同協(xié)議書
- 2025年度廁所清潔能源應(yīng)用與改造合同3篇
- 深圳2024-2025學(xué)年度四年級第一學(xué)期期末數(shù)學(xué)試題
- 中考語文復(fù)習(xí)說話要得體
- 《工商業(yè)儲能柜技術(shù)規(guī)范》
- 華中師范大學(xué)教育技術(shù)學(xué)碩士研究生培養(yǎng)方案
- 醫(yī)院醫(yī)學(xué)倫理委員會章程
- xx單位政務(wù)云商用密碼應(yīng)用方案V2.0
- 風(fēng)浪流耦合作用下錨泊式海上試驗平臺的水動力特性試驗
- 高考英語語法專練定語從句含答案
- 有機農(nóng)業(yè)種植技術(shù)操作手冊
- 【教案】Unit+5+Fun+Clubs+大單元整體教學(xué)設(shè)計人教版(2024)七年級英語上冊
- 2020年的中國海外工程示范營地申報材料及評分標準
評論
0/150
提交評論