C語言程序設(shè)計課后習(xí)題1-8參考答案解析_第1頁
C語言程序設(shè)計課后習(xí)題1-8參考答案解析_第2頁
C語言程序設(shè)計課后習(xí)題1-8參考答案解析_第3頁
C語言程序設(shè)計課后習(xí)題1-8參考答案解析_第4頁
C語言程序設(shè)計課后習(xí)題1-8參考答案解析_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

..C語言程序設(shè)計課后習(xí)題1-8參考答案習(xí)題1參考答案一、簡答題1、馮諾依曼計算機(jī)模型有哪幾個基本組成部分?各部分的主要功能是什么?

答:馮諾依曼計算機(jī)模型是由運(yùn)算器、控制器、存儲器、輸入設(shè)備、輸出設(shè)備五大功能部件組成的。

運(yùn)算器又稱算術(shù)邏輯部件,簡稱ALU,是計算機(jī)用來進(jìn)行數(shù)據(jù)運(yùn)算的部件。數(shù)據(jù)運(yùn)算包括算術(shù)運(yùn)算和邏輯運(yùn)算。

控制器是計算機(jī)的指揮系統(tǒng),計算機(jī)就是在控制器的控制下有條不紊地協(xié)調(diào)工作的。

存儲器是計算機(jī)中具有記憶能力的部件,用來存放程序和數(shù)據(jù)。

輸入設(shè)備是用來輸入程序和數(shù)據(jù)的部件。輸出設(shè)備正好與輸入設(shè)備相反,是用來輸出結(jié)果的部件。2、簡述計算機(jī)的工作原理。答:計算機(jī)的工作原理可簡單地概括為:各種各樣的信息,通過輸入設(shè)備,進(jìn)入計算機(jī)的存儲器,然后送到運(yùn)算器,運(yùn)算完畢把結(jié)果送到存儲器存儲,最后通過輸出設(shè)備顯示出來。整個過程由控制器進(jìn)行控制。3、計算機(jī)軟件系統(tǒng)分為哪幾類?答:軟件內(nèi)容豐富,種類繁多,通常根據(jù)軟件用途將其分為兩大類:系統(tǒng)軟件和應(yīng)用軟件。

系統(tǒng)軟件是指管理、監(jiān)控、維護(hù)計算機(jī)正常工作和供用戶操作使用計算機(jī)的軟件。這類軟件一般與具體應(yīng)用無關(guān),是在系統(tǒng)一級上提供的服務(wù)。系統(tǒng)軟件主要包括以下兩類:一類是面向計算機(jī)本身的軟件,如操作系統(tǒng)、診斷程序等。另一類是面向用戶的軟件,如各種語言處理程序〔像BC、VC等、實(shí)用程序、字處理程序等。

應(yīng)用程序是指某特定領(lǐng)域中的某種具體應(yīng)用,供最終用戶使用的軟件,它必須在操作系統(tǒng)的基礎(chǔ)上運(yùn)行。4、什么叫軟件?說明軟件與硬件之間的相互關(guān)系。答:軟件是指計算機(jī)程序及有關(guān)程序的技術(shù)文檔資料。兩者中更為重要的是程序,它是計算機(jī)進(jìn)行數(shù)據(jù)處理的指令集,也是計算機(jī)正常工作最重要的因素。在不太嚴(yán)格的情況下,認(rèn)為程序就是軟件。硬件與軟件是相互依存的,軟件依賴于硬件的物質(zhì)條件,而硬件則需在軟件支配下才能有效地工作。在現(xiàn)代,軟件技術(shù)變得越來越重要,有了軟件,用戶面對的將不再是物理計算機(jī),而是一臺抽象的邏輯計算機(jī),人們可以不必了解計算機(jī)本身,可以采用更加方便、更加有效地手段使用計算機(jī)。從這個意義上說,軟件是用戶與機(jī)器的接口。二、填空題1、算術(shù)邏輯

2、鍵盤鼠標(biāo)

3、控制器運(yùn)算器

4、102

5、00x

6、原碼反碼補(bǔ)碼

7、0001011111101001

8、127-128三、選擇題1、C2、A3、B4、A5、B6、B7、D8、A9、A10、B11、A12、B習(xí)題2參考答案一、簡答題1、C語言有哪些特點(diǎn)?答:〔1簡潔緊湊、靈活方便;〔2運(yùn)算符豐富;〔3數(shù)據(jù)結(jié)構(gòu)豐富;〔4C語言是結(jié)構(gòu)式語言;〔5C語言的語法限制不太嚴(yán)格、程序設(shè)計自由度大;〔6C語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作;〔7C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高;〔8C語言使用范圍大,可移至性好;〔9具有預(yù)處理功能;〔10具有遞歸功能。2、C語言的主要應(yīng)用有哪些?答:〔1許多系統(tǒng)軟件和大型應(yīng)用軟件都是用C語言編寫的,如UNIX、Linux等操作系統(tǒng)?!?在軟件需要對硬件進(jìn)行操作的場合,用C語言明顯優(yōu)于其他高級語言。例如,各種硬件設(shè)備的驅(qū)動程序〔像顯卡驅(qū)動程序、打印機(jī)驅(qū)動程序等一般都是用C語言編寫的。〔3在圖形、圖像及動畫處理方面,C語言具有絕對優(yōu)勢,特別是游戲軟件的開發(fā)主要就是使用C語言?!?隨著計算機(jī)網(wǎng)絡(luò)飛速發(fā)展,特別是Internet的出現(xiàn),計算機(jī)通信就顯得尤其重要,而通信程序的編制首選就是C語言。〔5C語言適用于多種操作系統(tǒng),像Windows、UNIX、Linux等絕大多數(shù)操作系統(tǒng)都支持C語言,其他高級語言未必能得到支持,所以在某個特定操作系統(tǒng)下運(yùn)行的軟件用C語言編制是最佳選擇。3、列舉幾種程序設(shè)計語言。答:C語言、Java語言、Pascal語言、BASIC語言、LOGO語言等。二、填空題1、機(jī)器語言匯編語言高級語言

2、機(jī)器語言

3、ALGOL60

4、多個函數(shù)

5、main

6、#include

7、定義使用

8、聲明部分執(zhí)行部分聲明部分執(zhí)行部分三、選擇題1、D2、B3、B4、C5、C6、C7、D8、C9、D10、A11、B12、A13、B14、C15、A習(xí)題3參考答案一、填空題1、整型字符型實(shí)型

2、字母數(shù)字下劃線字母下劃線

3、直接符號符號

4、00x

5、12

6、48

7、-32768~32767

8、-16

9、x+=1;

10、26

11、<m/10>%10*100+m/100<100*10>+m%10二、選擇題1、D2、C3、A4、B5、B6、D7、B8、C9、A10、A11、C12、B13、B14、D15、B16、D17、B18、D19、C20、A21、B22、D23、D24、D25、D26、D27、C28、A29、C30、B習(xí)題4參考答案一、填空題1、scanfprintf

2、按指定的輸出格式將信息輸出到屏幕上常規(guī)字符格式控制符

3、X、E、G

4、getche輸入的字符回顯,而getch輸入的字符不回顯

5、fflush

6、解決某個問題的具體的方法和步驟

7、自然語言描述偽代碼流程圖N-S圖

8、順序分支循環(huán)二、選擇題1、B2、C3、D4、C5、B6、C7、D8、C9、B10、B11、D12、C13、D14、D15、A三、編程題1、編寫一程序要求任意輸入四位十六進(jìn)制整數(shù),以反序的方式輸出該十六進(jìn)制數(shù)。例如:輸入9AF0,則輸出0FA9。#include<stdio.h>

voidmain<>

{

unsignedshorta,b;

scanf<"%4x",&a>//輸入4位十六進(jìn)制數(shù)給變a

b=<a&0X000F><<12;//取a的最低一位十六進(jìn)制數(shù)并左移12位后賦值給b

b+=<a&0X00F0><<4;//取a的次第一位十六進(jìn)制數(shù)并左移4位后與b相加再賦值給b

b+=<a&0X0F00><<4;//取a的次高一位十六進(jìn)制數(shù)并右移4位后與b相加再賦值給b

b+=<a&0XF000><<12;//取a的最高一位十六進(jìn)制數(shù)并右移12位后與b相加再賦值給b

printf<"%4x\n",b>;//輸出變化后的十六進(jìn)制數(shù)

}2、編程從鍵盤輸入兩個整數(shù)分別給變量a和b,要求在不借助于其他變量的條件下,將變量a和b的值實(shí)現(xiàn)交換。

#include<stdio.h>

voidmain<>

{

inta,b;

scanf<"%d%d",&a,&b>;

printf<"beforeswap:a=%db=%d\n",a,b>;

a=a+b;

b=a-b;

a=a-b;

printf<"afterswap:a=%db=%d\n",a,b>;

}3、編程從鍵盤輸入圓的半徑r,計算出圓的周長和面積。

#include<stdio.h>

#definePI3.14159

voidmain<>

{

floatr,c,s;

scanf<"%f",&r>;

c=2*r*PI;

s=PI*r*r;

printf<"c=%fs=%f\n",c,s>;

}4、編程從鍵盤輸入任意一個十六進(jìn)制負(fù)整數(shù),以輸入的形式輸出。例如:輸入-FA98,輸出-FA98。#include<stdio.h>

voidmain<>

{

shortinta;

scanf<"%x",&a>;

printf<"-%hx\n",-a>;

}5、已知一元二次方程ax2+bx+c=0,編一程序當(dāng)從鍵盤輸入a、b、c的值后,計算x的值。

#include<stdio.h>

#include<math.h>

voidmain<>

{

floata,b,c;

floatd;

floatx1,x2;

printf<"inputa,b,c:">;scanf<"%f%f%f",&a,&b,&c>;

d=sqrt<b*b-4*a*c>;

x1=<-b+d>/<2*a>;

x2=<-b-d>/<2*a>;printf<"x1=%.2fx2=%.2f\n",x1,x2>;

}6、假設(shè)從鍵盤輸入某日午夜零點(diǎn)到現(xiàn)在已經(jīng)歷的時間〔單位:s,遍一程序計算到現(xiàn)在為止已近過了多少天,現(xiàn)在的時間是多少?

#include<stdio.h>

voidmain<>

{

unsignedlongt,r;

intd,h,m,s;

printf<"second=">;

scanf<"%d",&t>;

d=t/<24*3600>;

r=t%<24*3600>;

h=r/3600;

m=<r%3600>/60;

s=<r%3600>%60;

printf<"havepasseddaysis%d,currenttimeis%02d:%02d:%02d\n",d,h,m,s>:}習(xí)題5參考答案編程題1、編一程序判斷輸入整數(shù)的正負(fù)性和奇偶性。#include<stdio.h>

voidmain<>

{

inta;

scanf<"%d",&a>;

if<a>=0>

printf<"thenumber%dispositivenumber\n",a>;

else

printf<"thenumber%disnegativenumber\n",a>;

if<a%2==0>

printf<"thenumber%disevennumber\n",a>;

else

printf<"thenumber%disoddnumber\n",a>;

}2、編程判斷輸入數(shù)據(jù)的符號屬性。

#include<stdio.h>

voidmain<>

{

intx,sign;

scanf<"%d",&x>;

if<x>0>

sign=1;

elseif<x==0>

sign=0;

else

sign=-1;

printf<"sign=%d\n",sign>;

}

3、輸入任意三個數(shù)num1、num2、num3,按從小到大的順序排序輸出。#include<stdio.h>

voidmain<>

{

intnum1,num2,num3;

scanf<"%d%d%d",&num1,&num2,&num3>;

if<num1<=num2>

if<num2<=num3>

printf<"%d%d%d\n",num1,num2,num3>;

else

if<num1>=num3>

printf<"%d%d%d\n",num3,num1,num2>;

else

printf<"%d%d%d\n",num1,num3,num2>;

else

if<num2>=num3>

printf<"%d%d%d\n",num3,num2,num1>;

else

if<num1>=num3>

printf<"%d%d%d\n",num2,num3,num1>;

else

printf<"%d%d%d\n",num2,num1,num3>;

}4、在屏幕上顯示一張如下所示的時間表。

#include<stdio.h>

voidmain<>

{

charc;

printf<"*****Time*****\n">;

printf<"1morning\n">;

printf<"2afternoon\n">;

printf<"3night\n">;

printf<"Pleaseenteryourchoice:">;

c=getcahr<>;

switch<c>

{

case‘1’:printf<"Goodmorning\n">;brenk;

case‘2’:printf<"Goodafternoon\n">;break;

case‘3’:printf<"Goodnight\n">;break;

default:printf<"Selectionerror!\n">;

}

}5、輸入一個年份和月份,打印出該月份有多少天〔考慮閏年,用switch語句編程。

#include<stdio.h>

voidmain<>

{

intyear,month;

printf<"Inputyear,month:">;

scanf<"%d%d",&year,&month>;

switch<month>

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:printf<"31days\n">;

break;

case4:

case6:

case9:

case11:printf<"30days\n">;

break;

case2:if<<year%4==0&&year%100!=0>||<year%400==0>>

printf<"29days\n">;

else

printf<"28days\n">;

break;

default:printf<"Inputerror!\n">;

}

}習(xí)題6參考答案編程題1、編程計算2+4+6+…+98+100的值?!?利用for循環(huán)語句實(shí)現(xiàn),在循環(huán)體外為sum賦初值0。

#include<stdio.h>

voidmain<>

{

inti,sum=0;

for<i=2;i<=100;i+=2>

sum+=i;

printf<"sum=%d\n",sum>;

}〔2利用while循環(huán)語句實(shí)現(xiàn),在循環(huán)體外為i和sum賦初值。#include<stdio.h>

voidmain<>

{

inti=2,sum=0;

while<i<=100>

{

sum+=i;

i+=2;

}

printf<"sum=%d\n",sum>;

}2、編程計算1*2*3+4*5*6+…+99*100*101的值。#include<stdio.h>

voidmain<>

{

inti;

longterm,sum=0;

for<i=1;i<=99;i+=2>

{

term=i*<i+1>*<i+2>;

sum+=term;

}

printf<"sum=%d\n",sum>;

}3、編程計算1!+2!+3!+…+10!的值。

〔1用累加和算法,累加項為term=term*i;i=1,2,…,10。Term的初始值為1,使用單重循環(huán)完成。

#include<stdio.h>

voidmain<>

{

longterm=1,sum=0;

inti;

for<i=1;i<=10;i++>

{

term*=i;

sum+=term;

}

printf<"1!+2!+3!+…+10!=%ld\n",sum>;

}

〔2用內(nèi)層循環(huán)求階乘,外層循環(huán)控制累加的項數(shù)。

#include<stdio.h>

voidmain<>

{

longterm,sum=0;

inti,j;

for<i=1;i<=10;i++>{

term=1;

for<j=1;j<=i;j++>

term*=j;

sum+=term;

}

printf<"1!+2!+3!+…+10!=%ld\n",sum>;

}4、編程計算a+aa+aaa+…+aa..a〔n個a的值,n和a的值由鍵盤輸入。#include<stdio.h>

voidmain<>

{

longterm=0,sum=0;

inta,i,n;printf<"Inputa,n:\n">;

scanf<"%d,%d",&a,&n>;

for<i=1;i<=n;i++>

{

term=term*10+a;

sum+=term;

}

printf<"sum=%ld\n",sum>;

}5、參考答案:

#include<stdio.h>

voidmain<>

{

floatterm,result=1;

intn;

for<n=2;n<=100;n+=2>

{

term=<float><n*n>/<<n-1>*<n+1>>;

result*=term;

}

printf<"result=%f\n",2*result>;

}6、參考答案:

#include<stdio.h>

#include<math.h>

voidmain<>

{

intn=1,count=0;floatx;

doublesum,term;

printf<"Inputx:">

scanf<"%f",&x>;

sum=x;

term=x;

do{

term=-term*x*x/<<n+1><n+2>>;//計算相應(yīng)項,并改相應(yīng)符號

sum+=term;

n+=2;

count++;

}while<fabs<term>>=le-5>;

printf<"sin<x>=%f,count=%d\n",sum,count>;

}7、參考答案:

#include<stdio.h>

voidmain<>

{

inti,j,k,n;

printf<"resultis:">;

for<n=100;n<1000;n++>

{

i=n/100;//分出百位

j=<n-i*100>/10//分出十位

k=n%10;//分出個位

if<n==i*i*i+j*j*j+k*k*k>

printf<"%d",n>;

}

printf<"\n">;

}8、參考答案:

#include<stdio.h>

#include<math.h>

voidmain<>

{

inti1,i2,i3,i4,k,n;

printf<"Inputdatais:">;

scanf<"%d",&n>;

k=abs<n>;

i1=k/1000;//分離出千位

i2=<k-i1*1000>/100//分離出百位

i3=<k-i1*1000-i2*100>/10//分離出十位

i4=k%10;//分離出個位

printf<"Thesumofthetotalbitis%d\n",i1+i2+i3+i4>;

}9、參考答案:

#include<stdio.h>

voidmain<>

{

intn,m=0,s,r;

printf<"Inputdatais:">;

scanf<"%d",&n>;

s=n;While<s!=0>

{

r=s%10;//從低位到高位逐一分離

m=10*m+r;//重新組合一正數(shù)

s=s/10;//求其商

}

if<m==n>

printf<"yes\n">;

else

printf<"no\n">;

}10、參考答案:

#include<stdio.h>

voidmain<>

{

intx,y,z,count=0;//x,y,z分別表示5分、2分和1分硬幣的數(shù)量

for<x=1;x<=28;x++>//5分硬幣最多不超過28枚

for<y=1;y<=73;y++>//2分硬幣最多不超過73枚

{

z=100-x-y;//共有100枚硬幣,減去5分和2分硬幣后為1分硬幣數(shù)量

if<5*x+2*y+z==150>

{

count++//增加一種方案

printf<"%02d,%02d,%02d",x,y,z>;//輸出每一種方案

if<count%6==0>

printf<"\n">;//沒輸出6種方案后,換行

}

}

printf<"count=%d\n",count>;

}11、設(shè)計思想:將A、B、C、D4個人的回答用一條件表達(dá)式來表示,對于A的回答:thisman!=’A’;對于B的回答:thisman==’C’;對于C的回答:thisman==’D’;對于D的回答:thisman!=’D’;然后,采用枚舉的方法,一個人一個人的去試,如果這4個條件表達(dá)式中有3個為真,即4個條件表達(dá)式的值相加為3,則可判定是其中某人做的好事。

參考答案:

#include<stdio.h>

voidmain<>

{

intk=0;sum=0;g=0;

charthisman=’’;

for<k=0;k<=3;k++>//循環(huán)控制變量為k,循環(huán)共進(jìn)行4次

{

thisman=’A’+k;//初始認(rèn)為A做好事,依次為B、C、D

sum=<thisman!=’A’>+<thisman==’C’>+<thisman==’D’>+<thisman!=’D’>;

if<sum==3>

{

printf<"Thismanis%c\n",thisman>;

g=1;

}

}

if<g!=1>

printf<"Can’tfound\n">;

}12、參考答案<1>:

#include<stdio.h>

voidmain<>

{

inti,j;

for<i=1;i<=3;i++>//先顯示前三行

{

for<j=1;j<=i-1;j++>//輸出每行前的空格

printf<"">;

for<j=1;j<=5-2*<i-1>;j++>//輸出每行的*號

printf<"*">;

printf<"\n">;

}

for<i=1;i<=2;i++>//接著顯示后兩行

{

for<j=1;j<=2-i;j++>

printf<"">;

for<j=1;j<=2*i+1;j++>

printf<"*">;

printf<"\n">;

}

}參考答案<2>:

#include<stdio.h>

voidmain<>

{

inti,j,k;

for<i=1;i<=5;i++>//i控制行數(shù)

{

for<j=1;j<=5-i;j++>//隨行數(shù)的增加,輸出遞減數(shù)目的空格

printf<"">;

for<k=1;k<=5;k++>//每行輸出5個*字符

printf<"*">;

printf<"\n">;//將光標(biāo)移到下一行起始位置處

}

}參考答案<3>:

#include<stdio.h>

voidmain<>

{

inti,j;

for<i=1;i<=5;i++>

{

for<j=1;j<=2*<i-1>+1;j++>

printf<"*">;

printf<"\n">;

}

}習(xí)題7參考答案編程題1、參考答案:#include<stdio.h>

voidmain<>

{

inti,sum=0;a[20];

for<i=0;i<20;i++>

Scanf<"%d",&a[i]>;//輸入20個整數(shù)

for<i=0;i<20;i++>//對非負(fù)數(shù)進(jìn)行統(tǒng)計

{

if<a[i]<0>continue;//為負(fù)數(shù),進(jìn)入下一輪循環(huán)sum+=a[i];//非負(fù)數(shù)累計

}

printf<"sum=%d\n",sum>;

}2、參考答案

#include<stdio.h>

voidmain<>

{

inti,j,odd,even,n,t,a[10];

odd=0;

even=9;

for<i=0;i<10;i++>//將鍵盤輸入的數(shù)據(jù)存入數(shù)組中

{

scanf<"%d",&n>;

if<n%2!=0>

a[odd++]=n;//將奇數(shù)放置在數(shù)組的左邊

else

a[even--]=n;//將偶數(shù)放置在數(shù)組的喲邊

}

for<i=0;i<odd-1;i++>//通過選擇排序?qū)ζ鏀?shù)進(jìn)行升序排列

{

n=j;

for<j=i+1;j<odd;j++>

if<a[j]<a[n]>

n=j;

if<n!=i>

{

t=a[i];

a[i]=a[n];

a[n]=t;

}

}

for<i=odd;i<9;i++>//通過選擇排序?qū)ε紨?shù)進(jìn)行升序排列

{

n=i;

for<j=i+1;j<10;j++>

if<a[j]<a[n]>

n=j;If<n!=i>

{

t=a[i];

a[i]=a[n];

a[n]=t;

}

}

for<i=0;i<10;i++>

printf<"%d",a[i]>;輸出排序結(jié)果

printf<"\n">;

}3、參考答案:

#include<stdio.h>

voidmain<>

{

inti,max,min,a[10];printf<"Input10integernumber:">;//輸入10個整數(shù)

for<i=0;i<10;i++>

scanf<"%d",&a[i]>;

max=0;

min=0;

for<i=1;i<10;i++>

{

if<a[i]>a[max]>

max=i;if<a[i]<a[min]>

min=i;

}

i=a[max];

a[max]=a[min];

a[min]=i;

for<i=0;i<10;i++>

printf<"%d",a[i]>;

printf<"\n">;

}

4、參考答案:

#include<stdio.h>

voidmain<>

{

inti,j,t,a[6];

printf<"Input6integernumber:">;

for<i=0;i<6;i++>

scanf<"%d",&a[i]>;printf<"\n">;

for<i=0;i<6;i++>

{

for<j=0;j<6;j++>

printf<"%d",a[j]>;

printf<"\n">;

t=a[5];

for<j=5;j>0;j-->

a[j]=a[j-1];

a[0]=t;

}

}5、參考答案:

#include<stdio.h>

voidmain<>

{

inti,j,sum=0,mul=1,a[5][5];

printf<"Input5*5array:\n">;

for<i=0;i<5;i++>

for<j=0;j<5;j++>

scanf<"%d",&a[i][j]>;

printf<"\n">;

for<i=0;i<5;i++>

{

sum+=a[i][j];

if<i!=2>

sum+=a[i][4-i];

if<i%2!=0>

continue;

mul*=a[i][i];

if<i!=2>

mul*=a[i][4-i];

}

printf<"sum=%dmul=%d\n",sum,mul>;

}6、參考答案:

#include<stdio.h>

#defineN6

voidmain<>

{

inti,j,a[N][N];

for<i=0;i<N;i++>

{

a[i][0]=1;

a[i][i]=1;

for<j=1;j<i;j++>

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

for<i=0;i<N;i++>

{

for<j=0;j<N-i-1;j++>

printf<"">;

for<j=0;j<=i;j++>

printf<"%2d",a[i][j]>;

printf<"\n">;

}

}7、參考答案:

#include<stdio.h>

#include<string.h>

#defineN80

voidmain<>

{

charstr[N];

inti;

printf<"Inputastring:">;

gets<str>;

printf<"Afterreverse:">;

for<i=strlen<str>-1;i>=0;i-->

printf<"%c",str[i]>;

printf<"\n">;

}8、參考答案:

#include<stdio.h>

#include<string.h>

#defineN80

voidmain<>

{

charstr[N],strtemp[N];

unsignedinti,j;

printf<"Inputastring:">;

gets<str>;

for<i=0,j=0;i<strlen<str>;i++>

if<str[i]!=’c’>

strtemp[j++]=str[i];

strtemp[j]=’\0’;

strcpy<str,strtemp>;

printf<"Afterdeletecharacter\’c\’:">;

printf<"%s\n",str>;

}

9、參考答案:

#include<stdio.h>

#defineN80

voidmain<>

{

chars1[N],s2[N]="abcdefg\0hijk";

unsignedinti;

i=0;

while<1>

{

s1[i]=s2[i];

if<s2[i]==’\0’>

break;i++;

}

printf<"Afterstringcopy:%s\n",s1>;

}10、參考答案:

#include<stdio.h>

voidmain<>

{

chardstStr[20]=’12345’,srcStr[20]=’67890’;

unsignedinti,j;

printf<"Beforestrcat:dstStr=%ssrcStr=%s\n",dstStr,srcStr>;

for<i=0;dstStr[i]!=’\0’;i++>

;

for<j=0;srcStr[j]!=’\0’;j++>

dstStr[i+j]=srcStr[j];

dstStr[i+j]=’\0’;

printf<"Afterstrcat:dstStr=%s\n",dstStr>;

}11、參考答案:

#include<stdio.h>

voidmain<>

{

inta[10]={1,3,5,7,9},num=5,i,n;

printf<"Beforeinsert:">;

for<i=0;i<num;i++>

printf<"%d",a[i]>;

printf<"\n">;

printf<"Inputanumber:">

scanf<"%d",&n>;

for<i=num-1;i>=0;i-->

if<a[i]>n>

a[i+1]=a[i];

else

break;

a[i+1]=n;

printf<"Afterinsert:">;

for<i=0;i<num+1;i++>

printf<"%d",a[i]>;

printf<"\n">;s

}習(xí)題8參考答案編程題1、設(shè)計一個函數(shù),用來判斷一個整數(shù)是否為素數(shù)。參考答案:

#include<stdio.h>

#include<math.h>

intIsPrimeNumber<intnumber>;

voidmain<>

{

inta;

printf<"Inputaintegernumber:">;

scanf<"%d",&a>;

if<IsPrimeNumber<a>>

printf<"%disprimenumber.\n",a>;

else

printf<"%disn’tprimenumber.\n",a>;

}

intIsPrimeNumber<intnumber>

{

intI;

if<number<=-1>

return<0>;

for<i=2;i<sqrt<number>;i++>

if<number%i==0>

return<0>;

return<i>;

}2、設(shè)計函數(shù)MaxCommonFactor<>,計算兩個正整數(shù)的最大公約數(shù)。

參考答案:

#include<stdio.h>

intMaxCommonFactor<inta,intb>;

voidmain<>

{

inta,b,c;

printf<"Inputtwointegernumber:">;

scanf<"%d%d",&a,&b>;

c=MaxCommonFactor<a,b>;

if<c!=-1>

printf<"Thebiggestcommonfactorof%dand%dis%d\n",a,b,c>;

else

printf<"Thebiggestcommonfactorof%dand%disn’texist\n",a,b>;

}

intMaxCommonFactor<inta,intb>

{

if<a<=0||b<=0>

return<-1>;

while<a!=b>

{

if<a>b>

a=a-b;

else

if<b>a>

b=b-a;

}

ruturn<a>;

}3、定義函數(shù)GetData<>用于接收鍵盤輸入的一組整型數(shù)據(jù),并放入一數(shù)組中;另外再定義一個函數(shù)Sort<>用于對輸入的這一組數(shù)據(jù)按照降序排列。主函數(shù)向后調(diào)用GetData和Sort函數(shù),輸出最后的排序結(jié)果。參考答案:

#include<stdio.h>

#defineN10

voidGetData<inta[],intn>;

voidSort<inta[],intn>;

voidmain<>

{

inti,a[N];

GetData<a,N>;

Sort<a,N>;

printf<"Aftersort:">;

for<i=0;i<n;i++>

printf<"%d",a[i]>;

printf<"\n">;

}

voidGetData<inta[],intn>

{

inti;

printf<"Inputnumber:">;

for<i=0;i<n;i++>

scanf<"%d",&a[i]>;

}

voidSort<inta[],intn>

{

inti,j,k,t;

for<i=0;i<n-1;i++>

{

k=i;

for<j=i+1;j<n;j++>

if<a[j]>a[k]>

k=j;

if<k!=i>

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

}4、參考答案:

#include<stdio.h>

#include<string.h>

voidJsSort<charstr[]>;

voidmain<>

{

charstr[80];

printf<"Inputastring:">

gets<str>;

JsSort<str>;

printf<"Aftersort:%s\n",str>;

}

voidJsSort<charstr[]>

{

inti,j,k,len;

charch;

len=strlen<str>;

for<i=1;i<len-1;i+=2>

{

k=i;

for<j=i+2;j<len;j+=2>

if<str[j]>str[k]>

k=j;

if<k!=j>

{

ch=str[i];

str[i]=str[k];

str[k]=ch;

}

}

}5.參考答案:

#include<stdio.h>

#include<string.h>

#defineN30

voidJosegh<intp[],intn,ints,intm>;

voidmain<>

{

inti,p[N];

Josegh<p,N,1,10>;

for<i=N-1;i>=0;i-->

{

printf<"%4d",p[i]>;

if<i%10==0>

printf<"\n">;

}

}

voidJosegh<intp[],intn,ints,intm>

{

inti,j,s1,w;

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論