C語言程序設計課后習題1-8參考答案講解學習_第1頁
C語言程序設計課后習題1-8參考答案講解學習_第2頁
C語言程序設計課后習題1-8參考答案講解學習_第3頁
C語言程序設計課后習題1-8參考答案講解學習_第4頁
C語言程序設計課后習題1-8參考答案講解學習_第5頁
已閱讀5頁,還剩37頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C語言程序設計課后習題1-8參考答案

習題1參考答案

一、簡答題

1、馮諾依曼計算機模型有哪幾個基本組成部分?各部分的主要功能是什么?

答:馮諾依曼計算機模型是由運算器、控制器、存儲器、輸入設備、輸出設備五大功能部

件組成的。

運算器又稱算術邏輯部件,簡稱ALU,是計算機用來進行數據運算的部件。數據運算包括

算術運算和邏輯運算。

控制器是計算機的指揮系統,計算機就是在控制器的控制下有條不紊地協調工作的。

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

輸入設備是用來輸入程序和數據的部件。

輸出設備正好與輸入設備相反,是用來輸出結果的部件。

2、簡述計算機的工作原理。

答:計算機的工作原理可簡單地概括為:各種各樣的信息,通過輸入設備,進入計算機的

存儲器,然后送到運算器,運算完畢把結果送到存儲器存儲,最后通過輸出設備顯示出來。

整個過程由控制器進行控制。

3、計算機軟件系統分為哪幾類?

答:軟件內容豐富,種類繁多,通常根據軟件用途將其分為兩大類:系統軟件和應用軟件。

系統軟件是指管理、監控、維護計算機正常工作和供用戶操作使用計算機的軟件。這類軟

件一般與具體應用無關,是在系統一級上提供的服務。系統軟件主要包括以下兩類:一類

是面向計算機本身的軟件,如操作系統、診斷程序等。另一類是面向用戶的軟件,如各種

語言處理程序(像BC、VC等)、實用程序、字處理程序等。

應用程序是指某特定領域中的某種具體應用,供最終用戶使用的軟件,它必須在操作系統

的基礎上運行。

4、什么叫軟件?說明軟件與硬件之間的相互關系。

答:軟件是指計算機程序及有關程序的技術文檔資料。兩者中更為重要的是程序,它是計

算機進行數據處理的指令集,也是計算機正常工作最重要的因素。在不太嚴格的情況下,

認為程序就是軟件。硬件與軟件是相互依存的,軟件依賴于硬件的物質條件,而硬件則需

在軟件支配下才能有效地工作。在現代,軟件技術變得越來越重要,有了軟件,用戶面對

的將不再是物理計算機,而是一臺抽象的邏輯計算機,人們可以不必了解計算機本身,可

以采用更加方便、更加有效地手段使用計算機。從這個意義上說,軟件是用戶與機器的接

口。

二、填空題

1、算術邏輯

2、鍵盤鼠標

3、控制器運算器

4、102

5、00x

6、原碼反碼補碼

7、0001011111101001

8、127-128

三、選擇題

1、C2、A3、B4、A5、B6、B7、D8、A9、A10,Bll.A12、B

習題2參考答案

一、簡答題

1、C語言有哪些特點?

答:(1)簡潔緊湊、靈活方便;(2)運算符豐富;(3)數據結構豐富;(4)C語言是結構

式語言;(5)C語言的語法限制不太嚴格、程序設計自由度大;(6)C語言允許直接訪問

物理地址,可以直接對硬件進行操作;(7)C語言程序生成代碼質量高,程序執行效率高;

(8)C語言使用范圍大,可移至性好;(9)具有預處理功能;(10)具有遞歸功能。

2、C語言的主要應用有哪些?

答:(1)許多系統軟件和大型應用軟件都是用C語言編寫的,如UNIX、Linux等操作系統。

(2)在軟件需要對硬件進行操作的場合,用C語言明顯優于其他高級語言。例如,各種

硬件設備的驅動程序(像顯卡驅動程序、打印機驅動程序等)一般都是用C語言編寫的。

(3)在圖形、圖像及動畫處理方面,C語言具有絕對優勢,特別是游戲軟件的開發主要就

是使用C語言。(4)隨著計算機網絡飛速發展,特別是Internet的出現,計算機通信就

顯得尤其重要,而通信程序的編制首選就是C語言。(5)C語言適用于多種操作系統,像

Windows.UNIX.Linux等絕大多數操作系統都支持C語言,其他高級語言未必能得到支持,

所以在某個特定操作系統下運行的軟件用C語言編制是最佳選擇。

3、列舉幾種程序設計語言。

答:C語言、Java語言、Pascal語言、BASIC語言、LOGO語言等。

二、填空題

1、機器語言匯編語言高級語言

2、機器語言

3、ALG0L60

4、多個函數

5、main

6、ttinclude

7、定義使用

8、聲明部分執行部分聲明部分執行部分

三、選擇題

1、D2、B3、B4、C5、C6、C7、D8、C9、DIO、All、B12、A13、B14、C15、A

習題3參考答案

一、填空題

1、整型字符型實型

2、字母數字下劃線字母下劃線

3、直接符號符號

4、OOx

5、12

6、48

7、-32768^32767

8、-16

9、x+=l;

10、26

11、(m/10)%10*100+m/100(100*10)+m%10

二、選擇題

1、D2、C3、A4、B5、B6、D7、B8、C9、A10,All、C12、B13、B14、D15、B16、D17、B18、

D19、C20、A21、B22、D23、D24、D25、D26、D27、C28、A29、C30、B

習題4參考答案

一、填空題

1、scanfprintf

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

3、X、E、G

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

5、fflush

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

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

8、順序分支循環

二、選擇題

1、B2、C3、D4、C5、B6、C7、D8、C9、BIO,BlhD12、C13、D14、D15、A

三、編程題

1、編寫一程序要求任意輸入四位十六進制整數,以反序的方式輸出該十六進制數。例如:

輸入9AF0,則輸出0FA9。

#include<stdio.h>

voidmainO

(

unsignedshorta,b;

scanf("%4x”,&a)//輸入4位十六進制數給變a

b=(a&0X000F)?12;//<a的最低一位十六進制數并左移12位后賦值給b

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

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

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

printf("%4x\n",b);〃輸出變化后的十六進制數

)

2、編程從鍵盤輸入兩個整數分別給變量a和b,要求在不借助于其他變量的條件下,將變

量a和b的值實現交換。

#include<stdio.h>

voidmainO

(

inta,b;

scanf(a%d%dM,&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

voidmainO

(

floatr,c,s;

scanf(",&r);

c=2*r*PI;

s=PI*r*r;

printf("c=%fs=%f\n”,c,s);

}

4、編程從鍵盤輸入任意一個十六進制負整數,以輸入的形式輸出。例如:輸入-FA98,輸

出-FA98。

#include<stdio.h>

voidmainO

shortinta;

scanf("%x",&a);

printf("-%hx\n",-a);

)

5、已知一元二次方程ax?+bx+c=0,編一程序當從鍵盤輸入a、b、c的值后,計算x的值。

#include<stdio.h>

#include<math.h>

voidmainO

I

floata,b,c;

floatd;

floatxl,x2;

printf("inputa,b,c:");

scanf(^%f%f%fv,&a,&b,&c);

d=sqrt(b*b-4*a*c);

xl=(-b+d)/(2*a);

x2=(-b-d)/(2*a);

printf(uxl=%.2fx2=%.2f\nn,xl,x2);

)

6、假設從鍵盤輸入某日午夜零點到現在已經歷的時間(單位:s),遍一程序計算到現在

為止已近過了多少天,現在的時間是多少?

#include<stdio.h>

voidmainO

unsignedlongt,r;

intd,h,m,s;

printf("second\");

scanf(,&t);

d=t/(24*3600);

r=t%(24*3600);

h=r/3600;

m=(r%3600)/60;

s=(r%3600)%60;

printf(uhavepasseddaysis%d,currenttimeis%02d:%02d:%02d\nw,d,h,m,s):

)

習題5參考答案

編程題

1、編一程序判斷輸入整數的正負性和奇偶性。

#include<stdio.h>

voidmainO

f

inta;

scanf(,&a);

if(a>=0)

printf(uthenumber%dispositivenumber\nn,a);

else

printf(uthenumber%disnegativenumber\nn,a);

if(a%2==0)

printf(uthenumber%disevennumber\nv,a);

else

printf(uthenumber%disoddnumber\n,a);

}

2、編程判斷輸入數據的符號屬性。

#include<stdio.h>

voidmainO

I

intx,sign;

scanf(,&x);

if(x>0)

sign=l;

elseif(x==0)

sign=0;

else

sign=-l;

printf("sign=%d\n”,sign);

}

3、輸入任意三個數numl、num2>num3,按從小到大的順序排序輸出。

#include<stdio.h>

voidmainO

I

intnuml,num2,num3;

scanf(^%d%d%dv,&numl,&num2,&num3);

if(numl<=num2)

if(num2<=num3)

printf(u%d%d%d\n>,,numl,num2,num3);

else

if(numl>=num3)

printf("%d%d%d\n",num3,numl,num2);

else

printf(u%d%d%d\n>,,numl,num3,num2);

else

if(num2>=num3)

printf(u%d%d%d\n,r,num3,num2,numl);

else

if(numl>=num3)

printf(u%d%d%d\n,,,num2,num3,numl);

else

printf("%d%d%d\n",num2,numl,num3);

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

#include<stdio.h>

voidmainO

(

chare;

printf(******Time*****\n");

printf("lmorning\n");

printf(“2afternoon'n");

printf(u3night\n,,);

printf(aPleaseenteryourchoice:”);

c=getcahr();

switch(c)

f

caseT:printf("Goodmorning'n");brenk;

case’2':printf(uGoodafternoon\nw);break;

case'3':printf("Goodnight'n");break;

default:printf(uSelectionerror!\nw);

)

}

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

#include<stdio.h>

voidmainO

I

intyear,month;

printf("Inputyear,month:");

scanf(u%d%dM,&year,&month);

switch(month)

f

easel:

case3:

case5:

case7:

case8:

caselO:

casel2:printf("31days\n");

break;

case4:

case6:

case9:

caselLprintf("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");

)

}

習題6參考答案

編程題

1、編程計算2+4+6+…+98+100的值。

(1)利用for循環語句實現,在循環體外為sum賦初值0。

#include<stdio.h>

voidmainO

f

inti,sum二0;

for(i=2;i<=100;i+=2)

sum+=i;

printf("sum二%d\n”,sum);

)

(2)利用while循環語句實現,在循環體外為i和sum賦初值。

#include<stdio.h>

voidmainO

(

inti=2,sum=0;

while(i<=100)

(

sum+=i;

i+=2;

}

printf("sum=%d\n”,sum);

}

2、編程計算l*2*3+4*5*6+…+99*100*101的值。

#include<stdio.h>

voidmainO

I

inti;

longterm,sum=0;

for(i=l;i<=99;i+=2)

I

term=i*(i+l)*(i+2);

sum+=term;

)

printf("sum=%d\n”,sum);

}

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

(1)用累加和算法,累加項為term=term*i;i=1,2,…,10。Term的初始值為1,使用單重

循環完成。

#include<stdio.h>

voidmainO

(

longterin=l,sum=0;

inti;

for(i=l;i<=10;i++)

I

term*=i;

sum+=term;

)

printf("l!+2!+3!+…+10!=%ld\n",sum);

}

(2)用內層循環求階乘,外層循環控制累加的項數。

#include<stdio.h>

voidmainO

f

longterm,sum=0;

inti,j;

for(i=l;i<=10;i++)

(

term=l;

for(j=l;j<=i;j++)

term*二j;

sum+=term;

)

printf("l!+2!+3!+…+10!=%ld\n",sum);

4、編程計算a+aa+aaa+…+aa..a(n個a)的值,n和a的值由鍵盤輸入。

#include<stdio.h>

voidmainO

I

longterm=0,sum=0;

inta,i,n;

printf("Inputa,n:\n");

scanf(,&a,&n);

for(i=l;i<=n;i++)

I

term=term*10+a;

sum+=term;

)

printf("sum=%ld\n”,sum);

)

5、參考答案:

#include<stdio.h>

voidmainO

I

floatterm,result=l;

into;

for(n=2;n<=100;n+=2)

term=(float)(n*n)/((n-l)*(n+l));

result*二term;

)

printf("result=%f\n”,2*result);

}

6、參考答案:

#include<stdio.h>

#include<math.h>

voidmainO

I

intn=l,count=0;

floatx;

doublesum,term;

printf("Inputx:")

scanf("%f",&x);

sum=x;

term=x;

do

(

term=-term*x*x/((n+1)(n+2));〃計算相應項,并改相應符號

sum+=term;

n+=2;

count++;

}while(fabs(term)>=le-5);

printf("sin(x)=%f,count=%d\n”,sum,count);

7、參考答案:

#include<stdio.h>

voidmainO

(

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(,n);

)

printf("\n");

)

8、參考答案:

#include<stdio.h>

#include<math.h>

voidmainO

(

intil,i2,i3,遇,k,n;

printf(Ulnputdatais:M;

scanf(u%d,&n);

k=abs(n);

il=k/1000;〃分離出千位

i2=(k-i1*1000)/100〃分離出百位

i3=(k-il*1000-i2*100)/10〃分離出十位

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

printf(^Thesumofthetotalbitis%d\nw,il+i2+i3+i4);

)

9、參考答案:

#include<stdio.h>

voidmainO

f

intn,m=0,s,r;

printf("Inputdatais:");

scanf(,&n);

s=n;

While(s!=0)

f

LS%10;〃從低位到高位逐一分離

m=10*m+r;〃重新組合一正數

s=s/10;〃求其商

}

if(m==n)

printf("yes'n");

else

printf("no\n");

10、參考答案:

#include<stdio.h>

voidmainO

(

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

for(x=l;x<=28;x++)//5分硬幣最多不超過28枚

for(y=l;y<=73;y++)//2分硬幣最多不超過73枚

(

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

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、設計思想:將A、B、C、D4個人的回答用一條件表達式來表示,對于A的回答:

thisman!=,A';對于B的回答:thisman=='C;對于C的回答:thisman=='D';對

于D的回答:thisman!='D';然后,采用枚舉的方法,一個人一個人的去試,如果這4

個條件表達式中有3個為真,即4個條件表達式的值相加為3,則可判定是其中某人做的好

事。

參考答案:

#include<stdio.h>

voidmainO

(

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

charthisman=,';

for(k=0;k〈=3;k++)〃循環控制變量為k,循環共進行4次

(

thisman=,A'+k;〃初始認為A做好事,依次為B、C、D

sum=(thisman!=,A')+(thisman==,C')+(thisman==,D')+(thisman!=,D');

if(sum==3)

f

printf("Thismanis%c\n”,thisman);

g二l;

)

}

if(g!=l)

printf("Can'tfound'n");

)

12、參考答案(1):

#include<stdio.h>

voidmainO

f

inti,j;

for(i=l;i<=3;i++)〃先顯示前三行

for(j=1;j<=iT;j++)〃輸出每行前的空格

printf("");

for(j=l;j<=5-2*(i-l);j++)〃輸出每行的*號

printf(“*”);

printf("\n");

)

for(i=l;i<=2;i++)〃接著顯示后兩行

(

for(j=l;j<=2-i;j++)

printf(an);

for(j=l;j<=2*i+l;j++)

printf(“*”);

printf("\n");

)

)

參考答案(2):

#include<stdio.h>

voidmainO

(

inti,j,k;

for(i=l;i<=5;i++)//i控制行數

(

for(j=l;j〈=5-i;j++)//隨行數的增加,輸出遞減數目的空格

printf("");

for(k=l;k<=5;k++)〃每行輸出5個*字符

printf(“*”);

printf(“\n”);〃將光標移到下一行起始位置處

參考答案(3):

#include<stdio.h>

voidmainO

(

inti,j;

for(i=l;i<=5;i++)

(

for(j=l;j<=2*(i-l)+l;j++)

printf(“*”);

printf("\n");

)

習題7參考答案

編程題

1、參考答案:

#include<stdio.h>

voidmain()

inti,sum=0;a[20];

for(i=0;i<20;i++)

Scanf(“%d”,&a[i]);〃輸入20個整數

for(i=0;i<20;i++)〃對非負數進行統計

if(a[i]<0)

continue;”為負數,進入下一輪循環

sum+=a[i];〃非負數累計

)

printf(^sum=%d\nw,sum);

)

2、參考答案

#include<stdio.h>

voidmainO

(

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

odd=0;

even=9;

for(i=0;i<10;i++)〃將鍵盤輸入的數據存入數組中

!

scanf("%d”,&n);

if(n%2!=0)

a[odd++]=n;〃將奇數放置在數組的左邊

else

a[even-]=n;〃將偶數放置在數組的喲邊

)

for(i=0;i〈odd-l;i++)〃通過選擇排序對奇數進行升序排列

n=j;

for(j=i+l;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++)〃通過選擇排序對偶數進行升序排列

(

n=i;

for(j=i+l;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]);輸出排序結果

printf(“\n”);

)

3、參考答案:

#include<stdio.h>

voidmainO

(

inti,max,min,a[10];

printf(InputlOintegernumber:w);〃輸入10個整數

for(i=0;i<10;i++)

scanf(,&a[i]);

max=0;

min二0;

for(i=l;i<10;i++)

f

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(;

printf("\n");

4、參考答案:

#include<stdio.h>

voidmainO

inti,j,t,a[6];

printf(Ulnput6integernumber:);

for(i=0;i<6;i++)

scanf(;

printf("\n");

for(i=0;i<6;i++)

I

for(j=0;j<6;j++)

printf(^%dw,a[j]);

printf("\n");

t=a[5];

for(j=5;j>0;j-)

a[j]=a[j-l];

a[0]=t;

}

)

5、參考答案:

#include<stdio.h>

voidmainO

I

inti,j,sum=0,mul=l,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++)

f

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

voidmainO

I

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

for(i=0;i<N;i++)

f

a[i][0]=l;

a[i][i]=l;

for(j=l;j<i;j++)

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

)

for(i=0;i<N;i++)

f

for(j=0;j<N-i-l;j++)

printf("");

for(j=0;j<=i;j++)

printf(w%2d>,,a[i][j]);

printf("\n");

)

}

7、參考答案:

#include<stdio.h>

#include<string.h>

#defineN80

voidmainO

f

charstr[N];

inti;

printf("Inputastring:");

gets(str);

printf(Afterreverse:);

for(i=strlen(str)-l;i>=0;i-)

printf(“枇”,str[i]);

printf("\n");

8、參考答案:

#include<stdio.h>

#include<string.h>

#defineN80

voidmainO

I

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(Afterdeletecharacterc\f:");

printf("%s\n",str);

)

9、參考答案:

#include<stdio.h>

#defineN80

voidmainO

charsl[N],s2[N]="abcdefg\Ohijk^;

unsignedinti;

i=0;

while(1)

f

sl[i]=s2[i];

if(s2[i]==>\0,)

break;

i++;

)

printf("Afterstringcopy:%s\n”,si);

)

10、參考答案:

#include<stdio.h>

voidmainO

f

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(uAfterstrcat:dstStr=%s\n,",dstStr);

11、參考答案:

#include<stdio.h>

voidmainO

(

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

printf("Beforeinsert:”);

for(i=0;i<num;i++)

printf(;

printf("\n");

printf(Ulnputanumber:M)

scanf(,&n);

for(i=num-l;i>=0;i-)

if(a[i]>n)

a[i+l]=a[i];

else

break;

a[i+l]=n;

printf(aAfterinsert:);

for(i=0;i<num+l;i++)

printf(;

printf("\n");s

習題8參考答案

編程題

1、設計一個函數,用來判斷一個整數是否為素數。

參考答案:

#include<stdio.h>

#include<math.h>

intisPrimeNumber(intnumber);

voidmainO

(

inta;

printf(Ulnputaintegernumber:);

scanf(,&a);

if(IsPrimeNumber(a))

printf(^%disprimenumber.\n,J,a);

else

printf("%disn'tprimenumber.\nv,a);

}

intisPrimeNumber(intnumber)

f

inti;

if(number<=-l)

return(0);

for(i=2;i<sqrt(number);i++)

if(number%i==0)

return(0);

return(i);

2、設計函數MaxCommonFactor(),計算兩個正整數的最大公約數。

參考答案:

#include<stdio.h>

intMaxCommonFactor(inta,intb);

voidmainO

(

inta,b,c;

printf(Ulnputtwointegernumber:v);

scanf("%d%d”,&a,&b);

c=MaxCommonFactor(a,b);

if(c!=-l)

printf("Th6biggestcommonfactorof%dand%dis%d\n”,a,b,c);

else

printf(uThebiggestcommonfactorof%dand%disn,texist\n,>,a,b);

)

intMaxCommonFactor(inta,intb)

I

if(a<=0||b<=0)

return(-1);

while(a!=b)

I

if(a>b)

a=a-b;

else

if(b>a)

b=b-a;

)

ruturn(a);

3、定義函數GetDataO用于接收鍵盤輸入的一組整型數據,并放入一數組中;另外再定義

一個函數Sort。用于對輸入的這一組數據按照降序排列。主函數向后調用GetData和Sort

函數,輸出最后的排序結果。

參考答案:

#include<stdio.h>

#defineNlO

voidGetData(inta[],intn);

voidSort(inta[],intn);

voidmainO

I

inti,a[N];

GetData(a,N);

Sort(a,N);

printf(^Aftersort:);

for(i=0;i<n;i++)

printf(,a[i]);

printf("\n");

)

voidGetData(inta[],intn)

I

inti;

printf(Inputnumber:");

for(i=0;i<n;i++)

scanf(;

voidSort(inta[],intn)

inti,j,k,t;

for(i=0;i<n-l;i++)

!

k=i;

for(j=i+l;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[]);

voidmainO

I

charstr[80];

printf("Inputastring:")

gets(str);

JsSort(str);

printf(^Aftersort:%s\nM,str);

)

voidJsSort(charstr[])

f

inti,j,k,len;

charch;

len=strlen(str);

for(i=l;i<len~l;i+=2)

I

k=i;

for(j=i+2;j<len;j+=2)

if(str[j]>str[k])

k=j;

if(k!=j)

I

ch=str[i];

str[i]=str[k];

str[k]=ch;

}

)

}

5.參考答案:

#include<stdio.h>

#include<string.h>

#defineN30

voidJosegh(intp[],intn,ints,intm);

voidmainO

f

inti,p[N];

Josegh(p,N,1,10);

for(i=N-l;i>=0;i—)

f

printf(“%4d",p[i]);

if(i%10==0)

printf("\n");

)

}

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論