版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《C語(yǔ)言程序設(shè)計(jì)》(邱曉紅主編)課后習(xí)題參考答案
第I章C語(yǔ)言及程序設(shè)計(jì)概述
1.單選題
(1)A(2)B(3)A(4)B(5)C
2.填空題
(1)//,/*...*/
(2)scanf()
(3)printf()
3.判斷題
(1)對(duì)(2)錯(cuò)(3)錯(cuò)(4)對(duì)
1.4簡(jiǎn)答題
①概述C語(yǔ)言和C語(yǔ)言程序的主要特點(diǎn)。
答:
1c語(yǔ)m是高級(jí)語(yǔ)言。它把而級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái).
2。c語(yǔ)言是結(jié)構(gòu)式語(yǔ)言。結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的
信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護(hù)以及調(diào)試。
①c語(yǔ)言功能齊全。具有各種各樣的數(shù)據(jù)類(lèi)型,并引入了指針概念,可使程序效率更高。
②C語(yǔ)言適用范圍大。適合于多種操作系統(tǒng),如Windows、DOS、UNIX、LINUX等等:也適用于多種機(jī)型。
②請(qǐng)編程,在計(jì)算機(jī)屏卷上顯示:“您好,歡迎進(jìn)入C語(yǔ)言世界!”
解:
#include<stdio.h>
voidmain()
{
printf(“您好,歡迎進(jìn)入c預(yù)言世界!”);
第二章:數(shù)據(jù)類(lèi)型運(yùn)算符與表達(dá)式
1.單選題
(DC(2)D(3)C(4)B(5)C(6)A(7)B(8)D(9)A(10)B
(11)C(12)C(13)D(14)A(15)B(16)C(17)A(18)A(19)B(20)C
(21)C(22)D(23)C(24)A(25)D(26)B(27)C(28)B(29)B(3D)A
2.填空題
(1)sqrt(pow(y,x)+log10(y))(2)36
(3)6(4)33
(5)6(6)36
(7)intx=8,y=8;(8)I
(9)E(10)7,968)
(11)6(12)66,96
(13)240(14)
(15)5,2,6(16)I
(17)!(18)2
(19)(a>0&&a<10l)&&(a%3==0||a%7==0)
(20)A
3.程序分析題
(1)27(VC++環(huán)境下,其它編譯環(huán)境可能有不一樣的結(jié)果)
27
49
44
1212
(2)3140
1-6
16
(3)100d68D
97a491
(4)0101
(5)2467
-0.58000007.000000
4
6.580000
7.500000
(6)3
31
21
13130
8
232
(7)6
1830
18
I
(8)1100
4.改借題
(1)①無(wú)初始賦值,不能輸H
②數(shù)據(jù)精度丟失
③少“:”號(hào)
④單字符變量不能保存字符串常量
⑤不能連續(xù)初始化
⑥非法標(biāo)識(shí)符
(2)short1=38000溢出
PI=3.1416常量不能修改值
Printf("%d”,x%y)%必須是整數(shù)
a*=(b+c)/=d復(fù)合賦值左邊不能是表達(dá)式
5、
(I)
#include<stdio.h>
intmain()
intH;
floatv.Ll,L2.L.T.sl.M;
printf("請(qǐng)輸入開(kāi)始里程教,單位為千米:W);
scanf("%f'.&LI);
prinlf("請(qǐng)輸入結(jié)束里程教,單位為千米:5”);
scanf("%r;&L2);
printfC請(qǐng)輸入時(shí)間,格式為時(shí),分,秒\n");
scanf("%d,%f,%r.&H,&M,&sl);
T=H+M/60.0+$l/3600.0;〃將時(shí)間折算成小時(shí):
L=L2-L1;〃計(jì)算出這段時(shí)間走的路程,以千米計(jì);
v=L/T;
printf("%f\n",v);
iciuui0;
(2)
#include<stdio.h>
#definePI3.14
intmain()
]
doubler=2.5,h=5.V;
V=(PI*r*r*h)/3;
prinif("%f\iT,V);
return0;
第三章:算法概念與順序結(jié)構(gòu)程序設(shè)計(jì)
I.選擇題
(1)D(2)D(3)D(4)B(5)C(6)A[在16位機(jī)答案為D)(7)B(8)C
(9)B(10)D
2.填空題.
(1)一條語(yǔ)句:
(2)小于左右
(3)%%
(4)輸出項(xiàng)列表輸出控制符
(5)取地址取a的地址
(6)從盤(pán)獲取一個(gè)字符
(7)大括號(hào)
(8)f=68.00()000
(9)nl=%d\nn2=%d
(10)7,5,c=3
3.程序分析題.
(1)i=100,c=a,f=1.234000
(2)i=65535J=65536
(10)1234,123.5,12345.5
3.4編程題
①編寫(xiě)一個(gè)程序,交換兩個(gè)數(shù)的值。
ttinclude<stdio.h>
intmain()
(
c2=getchar();getchar();
printf("%d\t%d\n"zcl,c2);
return0;
}
第四章:選擇結(jié)構(gòu)程序設(shè)沖
1.選擇題
(DC(2)B(3)B(4)B(5)D(6)D(7)D(8)A(9)D(有一語(yǔ)句缺
了;,若補(bǔ)齊則答案為B(13)A(IDB(12)B(13)D(14)A(15)C(16)A(17)
C(18)C(19)B(20)D(21)A(22)C(23)A(24)A
2.填空題.
(1)1(2)588
(3)4599(4)2
(5)10200(6)2I
(7)-4(8)3
(9)No(10)25
(11)4545(12)0
(13)5.5(14)13
(15)3
3、
(I)參考代碼如下:
#include<stdio.h>
intrnain()
(
intx;
prinif("請(qǐng)輸入一個(gè)整數(shù)
scanf("%d".&x);
if(x%7==0)printf("Yes");
elseprintfC'No");
return0;
)
(2)參考代碼如下:
#includc<stdio.h>
#includc<math.h>
intmain()
(
floata.b,c,s.m;
printf("請(qǐng)輸入三個(gè)數(shù):\n");
scanf(M%f%f%f'.&a.&b,&c);
if((a+b>c)&&(a+c>b)&&(b+c>a))
(
s=(a+b+c)/2;
m=sqrt(s*(s-a)*(s-b)*(s-c));
printf("Thearea
)
elseprinif("輸入的三個(gè)數(shù)不能構(gòu)成三角形)
return0;
)
(3)會(huì)發(fā)現(xiàn)程序1輸出“優(yōu)秀”,程序2輸出“優(yōu)秀”“良好”“中等”“及格”四個(gè),因?yàn)槌绦?使用的是多
分支條件句,運(yùn)行時(shí)只執(zhí)行其中一個(gè),而程序2是多個(gè)條件語(yǔ)句,可以被多次判斷并且執(zhí)行。
(4)參考代碼如下:
#include<stdio.h>
intmain()
intm:
scanf("%d",&m);
switch(m)
caseI:printf("Monday");brcak;
ease2:printf("Tucsday");brcak;
case3:prin【f("Wednesday");break;
case4:printf(MThursday");break;
case5:printf("Friday"):break;
case6:printf("Saturday"):break;
case7:prin(f("Sunday");break;
default:printf("Error*);
}
return0;
)
(5)參考代碼如下:
#include<stdio.h>
intmain()
(
intm.n;
scanf("%d",&m);
switch(m/10)
(
caseLease2:n=l;break;
case3:n=2;break;
case4:n=3;break:
case5:n=4;break;
default:n=3;
}
printf("%d\n",n);
return0;
)
(6)參考代碼如下:
不嵌套的if語(yǔ)句:
#include<stdio.h>
intmain()
(
intx,y;
prinlf("請(qǐng)輸入x的值:”);
scanf("%d",&x);
if(x<0)
(
y=x;
printf("y=%d",y);
)
if(x>=O&&x<IO)
(
y=x-10;
prinlf("y=%d>\y);
)
if(x>=10)
(
y=x+10;
printf("y=%d".y);
)
return0;
}
嵌套的if語(yǔ)句:
#include<stdio.h>
intmain()
(
intx.y;
prinlf("請(qǐng)輸入x的值:”);
scanf("%d",&x);
if(x>=0)
if(x>-10)
y=x+10;
printf("y=%d".y);
)
else
{
y=x-10;
printf("y=%d".y);
I
}
else
(
y=x;
printf("y=%d",y);
}
return0:
)
多分支的if語(yǔ)句:
#include<stdio.h>
in(main()
(
intx,y;
prinlf(“請(qǐng)輸入x的值:”);
scanf("%d",&x);
if(x<0)
(
y=x;
printf("y=%d".y);
I
elseif(x>=O&&x<10)
{
y=x-10:
printf("y=%d",y);
I
else
(
y=x+10;
prinlf("y=%d",y);
}
return0;
}
(7)參考代碼如下:
使用多分支if語(yǔ)句:
#include<stdio.h>
intmain()
I
intx;
prinlfC'請(qǐng)輸入x的值:”);
scanf("%d",&x);
if(x<60)
printfC'E");
elseif(x>=60&&x<70)
piimf("D");
elseif(x>=70&&x<80)
prinlfC'C");
elseif(x>=80&&x<90)
prinif("B");
elseif(x>=90&&x<=100)
printf("A");
else
prinif("輸入有誤)
return0;
I
使用switch語(yǔ)句:
#inchide<stdio.h>
intmain()
intx;
prinif("請(qǐng)輸入x的值:”);
scanf("%d",&x);
swi(ch(x/10)
{
case1:case2:case3:case4:case5:printf("E");break;
case6:printf("D");break;
case7:printf("C"):break;
case8:printf("B"):break;
case9:case10:printf("A"):break;
default:printf("輸入有誤");
)
return0;
)
(8)參考代碼如下:
#include<stdio.h>
intmain()
(
intx;
scanf("%d",&x);
prinlf("請(qǐng)輸入x的值:”);
swi(ch(x)
(
caseLease3:printf(,高等數(shù)學(xué)課");hreak;
case2:case4:printf('程序設(shè)計(jì)課)break:
case5:printf("外語(yǔ)諛');break:
case6:printf("政治課》break:
caseO:printf("無(wú)課程安排");break;
default:printf("輸入有誤");
}
return0;
第五章:循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
1.選擇題
(DC(2)A(3)D(4)C(5)D(6)B(7)A(8)A(輸出4444)(9)
B(10)A(II)B(12)C(13)B(缺了循環(huán)體,不完整)(14)C
2.填空題.
(1)r=m;m=n;n=r
m%n
(2)3
(3)-5
(4)i%3==2&&i%5==3&&i%7==2
j%5==0
(5)i==j
j!=k
(6)ints=8j=i+2
k+i+j==8
(7)8
(8)k&&i<=500k/10continue
①編程實(shí)現(xiàn)對(duì)鍵盤(pán)輸入的英文名句子進(jìn)行加密。用加密方法為,當(dāng)內(nèi)容為英文字母時(shí)其在26字母中的其后
三個(gè)字母代替該字母,若為其它字符時(shí)不變。
②年include<stdio.h>
③#include<ctype.h>
④#include〈string.h>
⑤#defineMAX1000
⑥intmain()
⑧charstr[MAX];
(9)gets(str);
⑩inti,len=strlen(s^r);
?for(i=0;i<len;i++)
?{
@if(isupper(str[i])IIislower(str[i]))
?{
?if(str[i]>=*x,&&str[i]<=,z')
?str[i]='z';
?elseif(str[i]>='X'&&str[i]<=,Z*)
?str[i]='Z';
?else
?str[i]+=3;
21)
22)
n
23printf(%s\n"fstr);
24return0;
25}
26編程實(shí)現(xiàn)將任意的十進(jìn)制整數(shù)轉(zhuǎn)換成R進(jìn)制數(shù)(R在2-16之間)。
#include<stdio.h>
intmainO
(
intx,r,ans[100],i=0;
printf("請(qǐng)?輸?入?十?進(jìn)?制?數(shù)籥x,進(jìn)?制?R:");
scanf&x,&r);
while(x)
(
ans[i++]=x%r;
x/=r:
)
while(i-)
printfans[i]);
printf(*\n*);
return0;
)
27
288鍵盤(pán)輸入一指g金額1以元為單位,如345.78),然后顯示支付該金額的各種面額人民幣數(shù)量,要求
顯示100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各多少?gòu)垺?輸出面額最大值:
比如345.78=100*3+10*4+5*1+0.5*1+0.1*2+0.01*8)
#include<sldio.h>
intmain()
(
longx,y,f;
doublen;
inix100,x50,x10,x5,x2,xl,y5,yl.f5,f1;
x_100=x_50=x_10=x_5=x_2=x_l=y_5=y_l=f_5=f_l=0;
scanf(飛If",&n);
x=int(n);
x_100=x/100:x%=100:
x_50=x/50;x%=50;
x_10=x/10;x%=10;
x_5=x/5;x%=5;
x_2=x/2;x%=2;
x_l=x/l;
u*-10,y-iiiL(u)%10,
y_5=y/5;y%=5;
y_l=y/l;
n*=10:f=int(n)%10;
f_5=f/5;f%=5;
f_l=f/l;
printfC100元a\t:%d\n50元a\t:%d\nlO元a\t:%d\n5元a\t:%d\n2元a\t:%d\nl元a\t:%d\n5
角?角?\t:%d\n5分?分?\t:%d\n”,x」OO,x50,x_5,x_2,xl,y5,y_l,f5,fI);
return0;
)
29
30隨機(jī)產(chǎn)生20個(gè)[10,50]的正整數(shù)存放到數(shù)組中,并求數(shù)組中的所有元素最大值、最小值、平均值及各
元素之和。
#include<stdio.h>
#include<stdlib.h>
/defineINF10000
intmain()
{
inti,arr[20J,sum=O,max=-INF,min=INF;
doubleaver;
for(i=0;i<20;i++)
(
arr[i]=rand():
5um,=ttrr[i];
if(arr[i]>max)max=arr[i];
if(arr[i]<min)min=arr[i];
}
aver=(double)sum/20;
printfC,max=%d\nmin=%d\nsum=%<l\navcr=%lf\n//,max,min,sum,aver);
return0;
)
31
32試編程判斷輸入的正整數(shù)是否既是5又是7的整倍數(shù)。若是,則輸出yes,否則輸出no.
#include<stdio.h>
intmainO
{
intx;
scanf&x);
if(!(x%5)&&!(x%7))
printfCyes\nM);
else
printf(z,no\n*);
return0;
)
33
34編寫(xiě)程序?qū)崿F(xiàn)功能:用戶從鍵盤(pán)輸入一行字符,分別統(tǒng)il出其英文字母和數(shù)字字符的個(gè)數(shù)(不記回車(chē)符號(hào)3
★include<stdio.h>
*include<ctype.h>
/include<string.h>
intmain()
{
charstr[lOO];
gels(str);
inti,len=strlen(str),a=0,x=0;
for(i=0;i<lcn;i++)
(
if(isalpha(str[i]))
a++;
if(isdigit(str[i]))
x++;
}
printf("alpha:%d\nnumber:%d\n”,a,x):
return0:
}
35
36編程在一個(gè)已知的字符串中查找最長(zhǎng)單詞,假定字符串中只含字母和空格,空格用來(lái)分隔不同單詞。
#include<stdio.h>
#include<ctype.h>
tiinclude<string.h>
intmain()
{
charstr[100];
gets(str);
inti,len=strlen(str),a=0,max=0;
for(i=0;i<len;i++)
(
if(isalpha(str[i]))
(
a++;
if(a>max)ma>:=a:
}
if(isspace(str[i]))
a=0;
)
printf(wmaxlenghlmax);
return0:
)
37
38模擬n個(gè)人參加選舉的過(guò)程,并輸出選舉結(jié)果:假設(shè)候選人有四人,分別用A、B、C、D表示,當(dāng)選某候
選人時(shí)直接輸入其編號(hào)(編號(hào)由計(jì)算機(jī)隨機(jī)產(chǎn)生),若輸入的不是A、B、C、D則視為無(wú)效票,選舉結(jié)束后按
得票數(shù)從高到低輸出候選人編號(hào)和所得票數(shù)。
#include<stdio.h>
#include<stdlib.h>
★include<ctype.h>
^include<string.h>
intmain()
(
intn,a=0,b=0,c=0,d=0;
charx;
scant&n);
while(n--)
(
x-rand();
swilch(x)
(
case'a':
case1A>:a++;break;
case'b’:
case'B':b++;break;
case'c’:
case'C':c++;break;
case'd':
case'D':d++;break;
default:break;
for(n=0;n<4;n++)
(
if(a>b&&a>c&&a>d)
(
prinifa);
a=0;
)
elseif(b>a&&a>c&&a>d)
(
prinifb);
b-0;
}
elseif(c>b&&c>a&&c>d)
(
prinlf("C:$d'n”,c);
c=0;
}
elseif(d>b&&d>c&&d>a)
(
printf(*D:%d\n*,d):
d=0;
}
)
if(a)
printf("A:%d\n”,a);
if(b)
printf("B:%d\n”,b);
if(c)
printf(z,C:%d\nw,c);
if(d)
printf("D:"d\n”,d);
return0;
)
(9)任何個(gè)自然數(shù)m的立方均可寫(xiě)成m個(gè)連續(xù)奇數(shù)之和。例如:
17=1
2A3=3+5
37=7+9+11
4A3=13+15+17+19
編程實(shí)現(xiàn):輸入一自然數(shù)n,求組成n3的n個(gè)連續(xù)奇數(shù)。
#include<stdio.h>
intmainO
(
inti;
intn;
printf("愉?入?一?個(gè)?自?然?數(shù)籥:");
scanf(飛d”,&n);
if(n<0)
(
printf("輸?入?數(shù)筋據(jù)Y有曲錯(cuò)洙?誤6");
}
else
(
printf(*%d-3=*,n);
for(i=0;i<n;i++)
if(i!=n-l)
printf("%di”,n*(n1)1112*i);
else
printf("%d\n”,n*(n-l)+l+2*i);
)
}
return0:
)
(9)分別編寫(xiě)程序,打印以下各圖案。
/、(b)
(a)
1
a
234
ab
56789
abc
0123456
…789012345
ab..z
6789012345
(a)#include<stdio.h>
intmainO
(
inti,j;
for(i=l;i<=26;i++)
(
for(j=0:j<i;j++)
printf(*%c'a'+j);
printf(*\n*);
)
return0;
}
(b)#include<stdio.h>
intmainO
(
inti,j,x=0;
for(i=l;i<=10;i++)
(
for(j=0;j<i;j++)
(
if(++x>9)x-=10:
printf(*%d",x);
)
printf(*\n*);
}
return0;
)
第六章:數(shù)組
1.選擇題
(1)B(2)C(3)D(4)D(5)B(6)C(7)B(8)A(9)A(10)D
2.填空題.
<1)按行序優(yōu)先的原則
(2)09
(3)0
(4)12
(5)6
(6)前者以回車(chē)后者以空格或回車(chē)作為間隔符
(7)strcpy(gets。函數(shù)是鍵盤(pán)輸入字符串)
(8)&a[i++]
(9)k)/2+1
(10)98
3.程序分析題.
(I)I3715
(2)123
056
009
(3)讀取輸入字符串中數(shù)字孑符
(4)①if(strl==str2)(slrcmp(strl,str2)==0)
②&cl|O|
6.4編程題
編寫(xiě)程序,查找數(shù)組中的最大元素和最小元素。
#include<stdio.h>
#defineMAX1000
voidmain(){
inta[MAX]={100,2,3,4,5,6};//假定數(shù)組為整數(shù),
intlenght=6;〃用于確定數(shù)組的長(zhǎng)度:
intmax,min;〃用于保存最大值和最小值;
inti;
max=a[0]”/開(kāi)始的參考數(shù)
min=a[0];〃同上
for(i=l;i<lenght;i++)//(1)
(
if(max<a[i])
max=a[i];
if(min>a[i])
min=a[i];
)
printf("themaxis:%d\n",max);//輸出最大值
printf("theminis:%d\n",min);〃輸出最小值
)
//為了尋找最大值和最小值,我對(duì)整個(gè)數(shù)組進(jìn)行判斷(1):當(dāng)當(dāng)前數(shù)組元素值比max的數(shù)值大時(shí),就把
max的值更新為當(dāng)前數(shù)組元素的值,
//
有15個(gè)整數(shù)按升序提排列,現(xiàn)輸入一個(gè)數(shù),請(qǐng)寫(xiě)程序,用折半查找法判斷該數(shù)在序列中是否存在,若存
在則指出是第幾個(gè)。
#include<stdio.h>
voidmain()
(
inta[15];〃用于存15個(gè)整數(shù):
inti;
intmid;
intkey;
intok=0;
intnum;
printf(”請(qǐng)輸入15個(gè)數(shù)《數(shù)與數(shù)用空格隔開(kāi))\n");
for(i=0;i<15;i++)
scanf("%d",&a[i]);
printf(”請(qǐng)輸入需要判斷的數(shù)\n”);
scanf("%d",&key);
mid=a[6];
if(mid<=key)
for(i=6;i<15;i++)
(
if(a[i]=key)
(
ok=l;
num=i+l;
}
}
elsefor(i=0;i<mid;i++)
(
if(a[i]==key)
(
ok=l;
num=i+l;
)
}
if(ok==l)
printf("存在,是第%d個(gè)\11",num);
elseprintf("不存在\n");
〃因?yàn)檎麄€(gè)數(shù)組是升序數(shù)組所以需要判斷的數(shù)要是比中間的數(shù)大,就〃在數(shù)組的右邊,否則就在數(shù)組的左
邊,只需循環(huán)左邊或右邊就能判〃斷出需要判斷數(shù)的位置和是否存在整個(gè)數(shù)組中,
(3)尋找一個(gè)整型二維數(shù)組的“鞍點(diǎn)”,所謂“鞍點(diǎn)”就是這樣一個(gè)元素,該元素在所在行中值是最小,
在所在列中值是最大。如果存在,則輸出“鞍點(diǎn)”所在的行、列及其“鞍點(diǎn)”得值。
#include<stdio.h>
intmain()
(
inta[3][3]={1,3,1,1,1,4,12,7,11};//用于存二維數(shù)組:
intline=3;〃行
intlinel;
intlist=3;〃列
intlistl;
inti,j,k,p;
intok=0;
intokl=0;
intmaxzmin;
for(i=0;Kline;i++)
(
for(p=0;p<list;p++)
(
listl=p;
for(j=0;j<list;j++)
if(a[i][p]<=a[i][j])
okl=l;
else
okl=0;
if(okl==l)
(
linel=i;
ok=l;
for(k=0;k<line;k++)
if(a[i][p]<a[k][listl])
ok=0;
if(ok==l)
break;
|
)
}
if(ok=l)
print£(”存在“鞍點(diǎn)”,“鞍點(diǎn)”在第%d行第%(1列\(zhòng):1“,1±=1+1,78班+1);
elseprintf("不存在\n");
return0;
〃先尋找行中最小值,在這基礎(chǔ)上,判斷這個(gè)最小值是否是列中最小值。
第七章:函數(shù)的調(diào)用
1.選擇題
(I)B(2)C(3)C(4)A(5)A(6)D(7)D(8)D(9)B(10)D(IDA
(12)A(13)B(14)B
2.填空題.
(i)標(biāo)準(zhǔn)庫(kù)函數(shù)自定義函數(shù)(若從函數(shù)的形式上,有參無(wú)參
(2)順序類(lèi)型
(3)定義調(diào)用
(4)①fmax(a.N)②k=p(注意非s[k]=s[p])
(5)(Dage(n-1)+2②age(n)
(6)①prt(c,n-l)②prt('',n-i)③prt('*',2*i-l)
3.程序分析題.
(I)hIo
(2)3
(3)26
(4)21
(4)525
7.4編程題
①編寫(xiě)一遞歸函數(shù)求斐波納奧數(shù)列的前40項(xiàng)。
1.#include<stdio.h>
intfib(intn)
(
if(n==l||n==2)
return1;
returnfib(n-1)+fib(n-2);
)
intmain()
(
intn;
scanf("%d”,&n);
printffib(n));
return0;
)
①編寫(xiě)程序,輸入長(zhǎng)方體E勺長(zhǎng)寬高1,IV,h。求體積及三個(gè)面的面積。
#include<stdio.h>
voiduboid(float1,floatw,floathi
(
printf("體積=%.2所”,1*0小);
printf("l*w=%.2f\n",l*w);
printf("l*h=%.2f\n",l*h);
printf("h*w=%.2f\n".h*w);
}
intmain()
(
floatl),ww,hh;
scanf("%f%f%f,&ll,&ww,&hh);
uboid(ll,ww,hh);
return0;
①編寫(xiě)程序,使給定的?個(gè)5x5的二維整型數(shù)組轉(zhuǎn)置,即行列互換。
#include<stdio.h>
intmain()
(
inta[5][5],b[5][5],ij;
fbr(i=0;i<5;i++)
(
for(j=0;j<5;j++)
(
scanf("%d'\&a[i](j]);
bU][i]=a[i)U);
for(i=0:i<5;i++)
(
for(j=0;j<5;j++)
{
printf("%d
printf("\n");
I
return0;
①編寫(xiě)程序,輸入一個(gè)十六進(jìn)制數(shù),輸出相應(yīng)的十進(jìn)制數(shù)。
#include<stdio.h>
intmain()
(
longintfunc(chars[]);
charstr[100];
charc;
inti=0;
intflag,flagl;
flag=0;
flagl=l;
printf('*inputahexnumber:;
while((c=getchar()i!=*\0*&&i<100&&flagl)
(
if((c<=,9,&&c>='0,)||(c<='F‘&&c>='A')||(c<='f'&&c>='a
(
flag=l;
str[i++]=c;
}
elseif(flag)
(
str[i]='\0';
printf("decimalnumber%ld:\n"zfunc(str));//
printf("Continueornot?");
c=getchar();
if(c=='n*|Ic==')
flagl=0;
elseif(c=='y1IIc==,Y')
(
flag=0;
i=0;
printf("Vnpleaseinputahexnumber:");
)
}
)
}
longintfunc(chars[])
(
longintnum=0;
inti=0;
for(i=0;s[i]!-,\0';i++)
(
1£(§0=,0,&&§[1.]<=,9,)〃字符串?。。。?!!
num=num*16+s[i]-'01;
elseif(s[i]>='a,&&s[i]<='f,)
num=num*16+s[i]-'a1+10;
elseif(s(i]>='A*&&s(i]<='F*)
num-num*1GIs[i]-1A*I10;
)
returnnum;
}
①編寫(xiě)程序,使輸入的一個(gè)字符串按反序存放。
#include<stdio.h>
#include<string.h>
intmain()
(
chara[100];
gets(a);
intl=strlen(a);
inti;
for(i=l-l;i>=0;i一)
printf(*'%€",a[i]);
return0;
)
習(xí)題八
8.1選擇題
(DC(2)B(3)A(4)C(5)A(6)C(7)B(8)D(9)A(1O)B(11)C(12)D(13)C(14)A(15)D
8.2填空題
①返回值為指針的函數(shù)f指向一個(gè)函數(shù)的指針
②地址變量
③0
④int*z
⑤*(p+5)
⑥a+i&a|i]*(a+i)
⑦*(a+i)+j&a[i][j]
指向數(shù)組的指針數(shù)組開(kāi)頭的集合
⑨指針的數(shù)組
(10)指針的數(shù)組指向數(shù)組4元素的指針
8.3程序設(shè)計(jì)
①編寫(xiě)一個(gè)程序計(jì)算一個(gè)字符串的長(zhǎng)度。
#include<stdio.h>
intcompute(char*p)
(
intsum=0;
while(1)
if(*p!='\0')
{
sum++;
p=p+l;
I
elsebreak;
}
returnsum:
}
voidmain()
(
chara|10001;
intlenght;
scanf("%s",&a);
lenght=compute(a);
prinlf("字符串的長(zhǎng)度是:%d\n';lenght);
〃在儲(chǔ)存字符數(shù)組時(shí),以\0為結(jié)尾標(biāo)志,可以利用這個(gè)特點(diǎn)。
②編寫(xiě)?個(gè)程序,當(dāng)鍵盤(pán)輸入整數(shù)為1到12時(shí),解釋顯示相應(yīng)的英文月份名,鍵入其它整數(shù)時(shí)顯示錯(cuò)誤信
息。
#include<s(dio.h>
voidmain()
(
intnum:
scanf("%d",&num);
switch(num)
(
caseI:printf("Januar)f\n");break;
case2:printf("February\n");break;
case3:printf("lMarch\n");break;
case4:prin(f("April\n");break:
case5:printf(MMay\n");break;
case6:printf("June\n"):break;
case7:prin(f("July\n,');brcak;
case8;printf("August\n");brcak;
case9:prin(f("September\n");break;
case10:printf("0ctober\n");break;
case11:printf("Noveinber\n"):break:
case12:printf("Dcccnbcr\n,');brcak;
defaulcprintfC'ERRO^n");
}
}
〃簡(jiǎn)單swilch用法
③編一程序,將字符申software賦給一個(gè)字符數(shù)組,然后從第一個(gè)字母開(kāi)始間隔地輸出該串。請(qǐng)用指針完
成。
#include<stdio.h>
voidmain()
(
chara[]="software";
inti;
for(i=0;i<8;i=i+2)
printf("%c",*a+i);
printfCVn");
}
④編一程序,將字符串中的第m個(gè)字符開(kāi)始的字符子串復(fù)制成另一個(gè)字符串。要求在主函數(shù)中輸入字符串
及m的值并輸出復(fù)制結(jié)果,在被調(diào)函數(shù)中完成復(fù)制。
#include<stdio.h>
#include<string.h>
voidcopy(char*lenght.inin,char*p2)
(
inti;
fbr(i=O;i<=lcnght;i++)
*(p2+i)=*(p+i+m-l);
)
voidmain()
(
char1000];
chara2[10001;
char*p3;
intlen:
intin;
inti;
gets(a);
scanf("%d",&m);
len=strlen(a);
copy(a,lcn,m,a2);
puts(a2);
)
〃利用指針傳遞數(shù)組給函數(shù).函數(shù)中指針指向值發(fā)生變化,也會(huì)影響、〃主函數(shù)
⑤設(shè)有一數(shù)列,包含10個(gè)數(shù),現(xiàn)要求編一程序首先按升序排好,然后從指定位置開(kāi)始的n個(gè)數(shù)按逆序重新
排列并輸出新的完整數(shù)列。進(jìn)行逆序處理時(shí)要求使用指針?lè)椒?。試編程?/p>
#include<stdio.h>
voidmain()
(
inta[10]={l,2,345,6,7,8,9,10);〃用于存儲(chǔ)10個(gè)數(shù)。
inti,j,tem;
intweizi;〃從多少位開(kāi)始序。
intn;〃需要倒序的個(gè)數(shù)。
in(sun;
scanf("%d".&weizi);
scanf("%d",&n);
for(i=0;i<10;i++)〃冒泡排序法
for(j=i+l;j<10;j++)
if(a[i)>aUD
(
lem=ali];
a|i]=a[j];
aU]=a[i];
)
for(i=0;i<IO;i++)
printf("%d",a[i]);〃展示升序數(shù)組
printf("\n");
sun=wcizi+n-2;
fbr(i=weizi-l;i<(weizi-l+(n/2));i++)
tem=a(i];
a[i]=a[sun];
a[sun]=tem;
sun—;
I
for(i=0:i<10;i++)
printf("%d二展示變化后的數(shù)組。
print-);
)
〃本題中使用冒泡排序法,在冒泡排序法中小的會(huì)一次一次的與大交換,然后小一點(diǎn)點(diǎn)左
〃移,大一點(diǎn)點(diǎn)右移動(dòng)。要想降序排序,只需把改成就行。
⑥通過(guò)指針數(shù)組p和一維數(shù)組a構(gòu)成一個(gè)3X2的二維數(shù)組,并為a數(shù)組賦初值2、4、6、8、…。要求先
按行的順序輸出此“二維數(shù)組”,然后再按列的順序輸出它。試編程。
#include<stdio.h>
voidmain()
(
int*p(2);
inta(6];
inti;
for(i=0:i<6:i++)
scaniT%d”,&a[i]);
p|O]=&a|O];
p[l]=&a[3];
for(i=0;i<3;i++)〃第-行輸出
printf("%d",*(p[O]+i));
prmtfC\n-);
for(i=0;i<3;i++)〃第二行輸出
printf("%d",*(pll]+i));
printf("\n");
for(i=0:i<3;i++)〃列方式,輸出
(
printf("%dM,*(p[O]+i));
printf("%d\n",*(pllj+i));
}
)
⑦編寫(xiě)?一程序,從鍵盤(pán)輸入10個(gè)數(shù)存入數(shù)組data[10]中,同時(shí)設(shè)置?個(gè)指針變量p指向數(shù)組data,然后通過(guò)
指針變量p對(duì)數(shù)組按照從小到大的順序排序,最后輸出其排序結(jié)果,
#include<stdio.h>
voidmain()
intdate[10];
int*p;
inttem:
inii,j;
fbr(i=0;i<10;i++)
scanf("%d",&date[i]);
for(i=0;i<10;i++)
for(j=i+l;j<10;j++)
{
if(date[il>date(j]){
tcm=<laic[i];
p=&date[i);
*p=date|j];
date[j]=tem;
)
)
for(i=0;i<10;i++)
printf("%d,,,date[i]);
}
⑧編一程序,從存儲(chǔ)10名同學(xué)5門(mén)課程成績(jī)的二維數(shù)組中找出最好成績(jī)所在的行和列,并將最大值及所在
行列值打印出束。要求將查找和打印的功能編?個(gè)函數(shù),二維數(shù)組的輸入在主函數(shù)中進(jìn)行,并將二維數(shù)組
通過(guò)指針參數(shù)傳遞的方式由主函數(shù)傳遞到子函數(shù)中。
#include<stdio.h>
intline;
intlist;
intchazhao(int*p)
(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個(gè)人藝術(shù)品運(yùn)輸私人借款合同
- 2025年度服裝紡織行業(yè)試用期勞動(dòng)合同范本
- 二零二五年度離職人員保密責(zé)任及企業(yè)秘密保護(hù)合同
- 二零二五年度住宅小區(qū)門(mén)窗安全檢測(cè)與維修合同
- 二零二五年度運(yùn)輸裝卸與物流金融合作合同
- 2025年度足療技師就業(yè)保障與服務(wù)合同
- 二零二五年度汽車(chē)修理店品牌加盟與特許經(jīng)營(yíng)權(quán)轉(zhuǎn)讓合同
- 二零二五年度旅游度假村總經(jīng)理聘用合同范本
- 二零二五年度肉牛品種改良項(xiàng)目購(gòu)銷(xiāo)合同
- 幼兒園區(qū)域創(chuàng)設(shè)培訓(xùn)
- 小學(xué)二年級(jí)100以內(nèi)進(jìn)退位加減法800道題
- 2025年1月普通高等學(xué)校招生全國(guó)統(tǒng)一考試適應(yīng)性測(cè)試(八省聯(lián)考)語(yǔ)文試題
- 《立式輥磨機(jī)用陶瓷金屬?gòu)?fù)合磨輥輥套及磨盤(pán)襯板》編制說(shuō)明
- 保險(xiǎn)公司2025年工作總結(jié)與2025年工作計(jì)劃
- 育肥牛購(gòu)銷(xiāo)合同范例
- 暨南大學(xué)珠海校區(qū)財(cái)務(wù)辦招考財(cái)務(wù)工作人員管理單位遴選500模擬題附帶答案詳解
- DB51-T 2944-2022 四川省社會(huì)組織建設(shè)治理規(guī)范
- 2024北京初三(上)期末英語(yǔ)匯編:材料作文
- 市委組織部副部長(zhǎng)任職表態(tài)發(fā)言
- HXD1D客運(yùn)電力機(jī)車(chē)轉(zhuǎn)向架培訓(xùn)教材
- 超星爾雅學(xué)習(xí)通【西方文論原典導(dǎo)讀(吉林大學(xué))】章節(jié)測(cè)試附答案
評(píng)論
0/150
提交評(píng)論