C程序設(shè)計(jì)(第四版)課后習(xí)題答案_第1頁(yè)
C程序設(shè)計(jì)(第四版)課后習(xí)題答案_第2頁(yè)
C程序設(shè)計(jì)(第四版)課后習(xí)題答案_第3頁(yè)
C程序設(shè)計(jì)(第四版)課后習(xí)題答案_第4頁(yè)
C程序設(shè)計(jì)(第四版)課后習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩115頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章

1.什么是程序?什么是程序設(shè)計(jì)?

程序:一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令。

程序設(shè)計(jì):是指從確定任務(wù)到得到結(jié)果、寫(xiě)出文檔的全過(guò)程(一般包

括以下6個(gè)階段:1.問(wèn)題分析2.設(shè)計(jì)算法3.編寫(xiě)程序4.對(duì)源程序進(jìn)

行編輯、編譯和連接5.運(yùn)行程序,分析結(jié)果)

2.為什么需要計(jì)算機(jī)語(yǔ)言?高級(jí)語(yǔ)言的特點(diǎn)?

(1)因?yàn)槿撕陀?jì)算機(jī)需要交流,就得創(chuàng)造一種計(jì)算機(jī)和人都能識(shí)別

的語(yǔ)言,就是計(jì)算機(jī)語(yǔ)言

(2)高級(jí)語(yǔ)言具有識(shí)別容易,記憶容易,可移植性好的優(yōu)點(diǎn),具有

執(zhí)行效率低的缺點(diǎn)

5.請(qǐng)參照本章例題,編寫(xiě)一個(gè)C程序,輸出以下信息:

**********************

Verygood!

**********************

#include<stdio.h>

intmain(){

printf(〃**********************\n〃)?

printf(z/Verygood!\n〃);

printf(〃*********************

return0;

)

6.編寫(xiě)一個(gè)C程序,輸入a,b,c三個(gè)值,輸出其中的最大者

#include<stdio.h>

intmain(){

inta,b,c,max;

printf("請(qǐng)輸入a,b,c的值:");

scanf(zz%d%d%d〃,&a,&b,&c);

max=a;

if(max<b)max=b;

if(max<c)max=c;

printf("%d”,max);

return0;}

第二章

4.(1)有兩個(gè)瓶子A和B,分別盛放醋和醬油。要求將它們互換(即

A瓶原來(lái)盛醋,現(xiàn)改盛醬油,B瓶相反)

inta,b,c;

t=a;

a=b;

b=t;

(2)依次將10個(gè)數(shù)輸入,要求輸出其中最大的數(shù)

#include<stdio.h>

intmain(){

inta[10],i,max;

printf(“請(qǐng)輸入10個(gè)數(shù):〃);

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

scanf(〃%cT,&a[i]);

max=a[0];

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

if(a[i]>max)

max=a[i];

)

printf("%d〃,max);

return0;}

⑶有3個(gè)數(shù)a,b,c,要求按大小順序把它們輸出

#include<stdio.h>

intmain(){

inta,b,c,t;

printf("請(qǐng)輸入a,b,c三個(gè)數(shù)的值:〃);

scanf(z/%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=a;b=c;c=t;}

printf(z/%d%d%d〃,a,b,c);

return0;}

⑷求1+2+3+...+100

#include<stdio.h>

intmain(){

inti,sum=0;

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

sum+=i;

//,/

printf(sum=%d\n/sum);

return0;}

⑸判斷一個(gè)數(shù)n能否同時(shí)被3和5整除

#include<stdio.h>

intmain(){

intn;

printf(〃pleaseinputn:");

scanf("%d",&n);

if((n%3==0)&&(n%5==0))

printf(zz%d能同時(shí)被3和5整除”,n);

else

printf("%d不能同時(shí)被3和5整除〃,n);

return0;}

⑹將100~200之間的素?cái)?shù)輸出

#include<stdio.h>

#include<math.h>

intmain(){

intij;

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

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

if(i%j==0)

break;

if(i==j)

printf(z/%d是素?cái)?shù)\n〃,i);

return0;}

⑺求兩個(gè)數(shù)m和n的最大公約數(shù)

#include<stdio.h>

intmain(){

intm,n,r=O;

printf(“輸入要求最大公約數(shù)的兩個(gè)數(shù):");

scanf("%d%d"/&m,&n);

r=m%n;

while(r!=0)

{m=n;

n=r;

r=m%n;}

printf("最大公約數(shù)是:%d\n“,n);

return0;}

⑻求方程式ax2+bx+c=0的根。分別考慮:

①有兩個(gè)不等的實(shí)根;

②有兩個(gè)相等的實(shí)根

#include<stdio.h>

#include<math.h>

intmain(){

inta,b,c,d,f,xl,x2;

printf("請(qǐng)輸入a,b,c的值:");

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

d=b*b-4*a*c;

f=sqrt(d);

if(d>0){

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

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

printf(“方程有兩個(gè)不相等的根,分別是%d,%d“,xl,x2);}

elseif(d==O){

xl=x2=(-l)*b/(2*a);

printf("方程有兩個(gè)相等的根,是xl=x2=%d",xl);}

else

printf("方程有沒(méi)有根)

return0;}

8.(1)輸出1900~2000年中是閏年的年份,符合下面兩個(gè)條件之一的年

份是閏年

①能被4整除但不能被100整除

②能被100整除且能被400整除

#include<stdio.h>

intmain(){

intn;

for(n=1900;n<=2000;n++){

if((n%4==0&&n%100!=0)11(n%100==0&&n%400==0))

printf("%d是閏年〃,n);}

return0;}

第三章

1.假如我國(guó)國(guó)民生產(chǎn)總值的年增長(zhǎng)率為9%,計(jì)算10年后我國(guó)國(guó)民生

產(chǎn)總值與現(xiàn)在相比增長(zhǎng)多少百分比。計(jì)算公式為

p=(l+r)n,r為年增長(zhǎng)率,n為年數(shù),p為與現(xiàn)在相比的倍數(shù)

#include<stdio.h>

#include<math.h>

intmain(){

floatp/n=10,r=0.09;

p=pow(l+i;n);

printf(〃增長(zhǎng)的百分比為%f\n〃,p);

return0;}

6.請(qǐng)編程序?qū)?China“譯成密碼,密碼規(guī)律是:用原來(lái)的字母后面第4

個(gè)字母代替原來(lái)的字母。例如:字母“A”后面第4個(gè)字母時(shí)“E”,用

“E”代替“A”。因此,“China”應(yīng)譯為“Glmre”。請(qǐng)編一程序,用賦初值

的方法使cl,c2,c3,c4,c5這5個(gè)變量的值分別為'C','Y,W,

W,匕',經(jīng)過(guò)運(yùn)算,使cl,c2,c3,c4,c5分別為‘G',T,'m',

分別用putchar函數(shù)和printf函數(shù)輸出這個(gè)5個(gè)字符。

#include<stdio.h>

intmain(){

,,''

charcl='C'/c2='h,c3='i'zc4=n',c5=a;

cl=cl+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;

printf("%c%c%c%c%c",cl/c2/c3,c4,c5);

return0;}

7.設(shè)圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長(zhǎng)、圓面積、圓球表面積、

圓球體積、圓柱體積。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要求

有文字說(shuō)明,取小數(shù)點(diǎn)后2位數(shù)字。請(qǐng)編程

#include<stdio.h>

#definePI3.14

intmain(){

floatr,h,15mMsv;

printf(〃請(qǐng)輸入半徑和圓柱:〃);

scanf(,&r,&h);

l=2*PI*r;

s=PI*r*r;

m=4*PI*r*r;

v=4/3*PI*r*r*r;

sv=PI*r*r*h;

printf(〃圓周長(zhǎng)是%.2f、圓面積是%.21圓球表面積是%.2f、圓球體積

是%.2大圓柱體積是%.2f〃,lsm,v,sv);

return0;}

第四章

3.寫(xiě)出下面各邏輯表達(dá)式的值,設(shè)a=3,b=4,c=5.

⑴a+b>c&&b==c0

(2)a||b+c&&b-c1

(3)!(a>b)&&!c||11

(4)!(x=a)&&(y=b)&&00

(5)!(a+b)+c-l&&b+c/21

5.從鍵盤(pán)輸入一個(gè)小于1000的正數(shù),要求輸出它的平方根(如平方

根不是整數(shù),則輸出其整數(shù)部分)。要求在輸入數(shù)據(jù)后對(duì)其進(jìn)行檢查

是否位小于1000的正數(shù)。若不是,則要求重新輸入。

#include<stdio.h>

#include<math.h>

intmain(){

intn,s;

printf(“請(qǐng)輸入一個(gè)小于1000的數(shù):”);

scanf("%d",&n);

if((n<0)||(n>1000)){

printf("數(shù)據(jù)錯(cuò)誤,請(qǐng)重新輸入\n“);

scanf("%d"z&n);}

s=(int)sqrt(n);

printf("%d的平方根為%d,n,s);

return0;}

6.寫(xiě)程序,輸入x的值,輸出y相應(yīng)的值

#include<stdio.h>

intmain(){

intx,y;

printf("請(qǐng)輸入x的值:〃);

scanf(〃%d〃,&x);

if(x<l)

Y=x;

elseif((x>=l)&&(x<10))

y=2*x-l;

else

y=3*x-ll;

printf(/zy=%d\n,,,y);

return0;}

8.給出一百分制成績(jī),要求輸出成績(jī)等級(jí)7V,BVCTD1E.9O分以上

為次,80~90分為E,70~79分為,C060分以下為F。

#include<stdio.h>

intmain(){

floatscore;

printf(〃請(qǐng)輸入分?jǐn)?shù):〃);

scanf(〃%f",&score);

while(score<0||score>100){

printf("數(shù)據(jù)有誤,請(qǐng)重新輸入\n〃);

scanf("%f”,&score);

if((score>90)&&(score<100))

printf("成績(jī)等級(jí)為A〃);

elseif((score>=80)&&(score<90))

printf("成績(jī)等級(jí)為B〃);

elseif((score>=70)&&(score<80))

printf(〃成績(jī)等級(jí)為C〃);

elseif((score>=60)&&(score<70))

printf("成績(jī)等級(jí)為D〃);

else

printf("成績(jī)等級(jí)為E〃);

return0;}

9.給出一個(gè)不多于5位的正整數(shù),要求:

①求出它是幾位數(shù)

②分別輸出每一位數(shù)字

③按逆序輸出各位數(shù)字,例如原數(shù)為321,應(yīng)輸出123

#include<stdio.h>

intmain(){

intn,x[10]J=0J=0;

printf(〃請(qǐng)輸入一個(gè)不多于5位的正整數(shù);

scanf(〃%d〃,&n);

while(n!=O){

x[i]=n%10;

n=n/10;

i++;}

intz=i;

printf("該數(shù)字為%d位數(shù)\n〃,z);

printf("逆序?yàn)?\n〃);

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

printfC%d;xO]);

return0;}

第五章

3.輸入兩個(gè)正整數(shù)m和6求其最大公約數(shù)和最小公倍數(shù)

#include<stdio.h>

intmain(){

intm,n,Gq,t;

printf("請(qǐng)輸入m和n的值:\n〃);

scanf(〃%d%d",&m,&n);

if(m<n){

t=m;

m=n;

n=t;}

r=m%n;

q=m*n;

while(r!=O){

m=n;

n=r;

r=m%n;}

printf(〃最大公約數(shù)為%d,最小公倍數(shù)為%d"p/n);

return0;}

4.輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符

的個(gè)數(shù)。

#include<stdio.h>

#include<string.h>

intmain(){

chara[80];

inti/n,letter=0/space=0,digital=0/other=0;

printf("請(qǐng)輸入字符串:");

gets(a);

n=strlen(a);

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

|^(9[|]>='^&&3[1]<=7')11(a[i]>=,a'&&a[i]<='z,))

letter++;

elseif(a[i]=='')

space++;

elseif(a[i]>='0'&&a[i]<=,9,)

digital++;

else

other++;}

printf("英文字母的個(gè)數(shù)%d,空格的個(gè)數(shù)%d,數(shù)字的個(gè)數(shù)%d淇他字符個(gè)

數(shù)%€1”,letter,space,digital,other);

return0;}

5.求Sn=a+aa+aaa+...+aa...a之值,其中a是一個(gè)數(shù)字,n表示a的位數(shù),

例如:2+22+222+2222+22222(此時(shí)n=5),n由鍵盤(pán)輸入

#include<stdio.h>

intmain(){

intn/aJ=l/sn=O/tn=O;

printf(〃請(qǐng)輸入a,n的值:〃);

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

while(i<=n){

tn=tn+a;

sn=sn+tn;

a=a*10;

i++;}

printf(//a+aa+aaa+...=%d\n,?,sn);

return0;}

6.求2%1九!(即求l!+2!+3!+4!+...+20!)

#include<stdio.h>

intmain(){

intij;

doublesum=0zs;

for(i=l;i<=20;i++){

s=l;

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

s=s*i;

sum+=s;}

printf("sum=%f\n",sum);

return0;}

7.求求"+E落求J

#include<stdio.h>

intmain(){

intk;

floatsum=0.0/suml=0.0/sum2=0.0,sum3=0.0;

for(k=l;k<100;k++)

suml+=k;

for(k=l;k<50;k++)

sum2+=k*k;

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

sum3+=l/k;

sum=suml+sum2+sum3;

printf(//sum=%f\n,;sum);

return0;}

8.輸出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)3位數(shù),其

各位數(shù)字立方和等于該數(shù)本身。例如,153是一水仙花數(shù),因?yàn)?/p>

153=13+53+33.

#include<stdio.h>

intmain(){

intn,i,j,k;

for(n=100;n<1000;n++){

i=n%10;

j=n/10%10;

k=n/100;

if(n==i*i*i+j*j*j+k*k*k)

printf(〃%d〃,n);}

return0;}

9.一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱(chēng)為“完數(shù)”。例如,

6的因子為1,2,3,而6=1+2+3,因此6是完數(shù)。編程找出1000之

內(nèi)的所有完數(shù),并按下面格式輸出其因子:6itsfactorsare1,2,3

#include<stdio.h>

intmain(){

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("%d,itsfactorsare”,m);

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

if((m%i)==0)printf(〃%d〃,i);

printf(〃\n〃);}}

return0;}

,有一個(gè)分?jǐn)?shù)序列…,求出這個(gè)數(shù)列的前項(xiàng)之和

10123581320

#include<stdio.h>

intmain(){

inta=2,b=l/tj;

floatsum=0;

for(i=l;i<=20;i++){

sum=sum+a/b;

t=a;

a=a+b;

b=t;}

////

printf(sum=%f/sum);

return0;}

11.一個(gè)球從100m高度自由落下,每次落地后反跳回原高度的一半,

再落下,再反彈。求它在第10次落地時(shí),共經(jīng)過(guò)多少米,第10次反

彈多高

#include<stdio.h>

intmain(){

intn;

floatsn=100,hn=sn/2;

for(n=2;n<=10;n++){

sn=sn+2*hn;

hn=hn/2;}

printf(〃第10次落地時(shí)共經(jīng)過(guò)%£米\n〃,sn);

printf(〃第10次反彈%f米\n”,hn);

return0;}

12.猴子吃桃問(wèn)題。猴子第1天摘下若干個(gè)桃子,當(dāng)即吃了一半,還

不過(guò)癮,又多吃了一個(gè)。第2天早上又將剩下的桃子吃掉一半,又多

吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10

天早上想再吃時(shí),就只剩下一個(gè)桃子。求第1天共摘多少個(gè)桃子

#include<stdio.h>

intmain(){

intday,xl,x2;

day=9;

x2=l;

while(day>0){

xl=(x2+l)*2;

x2=xl;

day-;}

printf(//total=%d\n,,,xl);

return0;}

13.用迭代法求x=亞求平方根的迭代公式為%九+i=X%+9,要

求前后兩次求出的x的差的絕對(duì)值小于IO三

#include<stdio.h>

#include<math.h>

intmain(){

floata,xO,xl;

printf(〃請(qǐng)輸入一個(gè)正數(shù):〃);

scanf(〃%f〃,&a);

x0=a/2;

xl=(x0+a/x0)/2;

do{

xO=xl;

xl=(x0+a/x0)/2;}while(fabs(x0-xl)>=le-5);

printf(〃[%f]的平方根為[%f]\n〃,a,xl);

return0;}

16.輸出以下圖案:

#include<stdio.h>

intmain(){

inti,j,k;

for(i=0;i<=3;i++){

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

printf("〃);

for(k=0;k<=2*i;k++)

printf(〃*〃);

printf(〃\n〃);}

for(i=0;i<=2;i++){

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

printf("");

for(k=0;k<=4-2*i;k++)

printf(〃*〃);

printf(〃\n〃);}

return0;}

第Aft八、?章立

1.用篩選法求100之內(nèi)的素?cái)?shù)

篩選法:在一張紙上寫(xiě)上全部數(shù),然后逐個(gè)判斷是否滿(mǎn)足條件,不滿(mǎn)

足的就挖掉,最后剩下的就是滿(mǎn)足條件的數(shù)

#include<stdio.h>

intmain(){

inta[100]JJ;

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

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

for(j=2;j<100;j++){

if(j%i==0&&a[j]!=0&&j!=i)

a[j]=0;}

printf(〃100以?xún)?nèi)的素?cái)?shù)為:\n〃);

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

if(aU]!=0)

printf("%d:a[j]);

return0;}

2.用選擇法對(duì)10個(gè)整數(shù)排序

選擇法:按照升序的排序,設(shè)有10個(gè)元素,從第一個(gè)開(kāi)始和其余各個(gè)進(jìn)行比較,最小的放

在第一個(gè)數(shù),再將第二個(gè)數(shù)和余下8個(gè)進(jìn)行比較,再將最小的放在第二位,一直到排序結(jié)

#include<stdio.h>

intmain(){

inta[10]JJ,n;

printf(〃請(qǐng)輸入10個(gè)數(shù):〃);

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

scanf("%d”,&a「]);

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

for(j=i;j<10;j++){

if(a[i]>a[j])

{n=a[i];a[i]=a[j];a[j]=n;}}

printf(〃該十個(gè)數(shù)升序?yàn)椋骸?;

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

return0;}

3.求一個(gè)3*3的整型矩陣對(duì)角線(xiàn)元素之和

#include<stdio.h>

intmain(){

inta[3][3],i,j,sum=0;

printf(〃請(qǐng)輸入矩陣元素的值:\n〃);

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

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

scanf(〃%d〃,&a[i][j]);

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

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

if(i==j11i+j==2)

sum+=a[i][j];

////

printf(sum=%d/sum);

return0;}

4.有一個(gè)已排好序的數(shù)組,要求輸入一個(gè)數(shù)之后,按原來(lái)排序的規(guī)律

將它插入數(shù)組中。

#include<stdio.h>

intmain(){

inta[100],x,n,i,j;

printf("請(qǐng)輸入待排序數(shù)值的個(gè)數(shù):\n");

H

scanf("%dz&n);

printf("請(qǐng)輸入待排序的每個(gè)數(shù)值:\n");

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

scanf("%d〃,&a[i]);

printf(”請(qǐng)輸入需要待排序的數(shù)值:\n“);

scanf(”%d”,&x);

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

if(a[i]>x){

for(j=n;j>i;j-)

aU]=a[j-l];

a[i]=x;

break;}}

printf("排序后:\n");

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

printf(“%5d”,a[i]);

return0;}

5.將一個(gè)數(shù)組中的值按逆序重新存放。例如,原來(lái)順序?yàn)?,6,5,4,

1,要求改為1,4,5,6,8

#include<stdio.h>

intmain(){

inta[20],i,t,n;

printf(〃請(qǐng)輸入數(shù)組元素的個(gè)數(shù):〃);

scanf("%d〃,&n);

printf(〃請(qǐng)輸入數(shù)組元素的值:〃);

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

scanf("%d〃,&a[i]);

for(i=0;i<n/2;i++){

t=a[i];a[i]=a[n-i-l];a[n-i-l]=t;}

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

printf(//%3d,:a[i]);

return0;}

6.輸出以下的楊輝三角形(要求輸出10行)

1

11

121

1331

14641

15101051

#include<stdio.h>

intmain(){

inti,j,a[10][10];

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

a[i][i]=l;

a[i][0]=l;}

for(i=2;i<10;i++){

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

a[i]D]=a[i-l]O-l]+a[i-l]U];}}

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

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

printf("%4d〃,a[i皿);

printf("\n〃);}

return0;}

7.輸出“魔方陣所謂魔方陣是指這樣的方陣,它的每一行、每一

列和對(duì)角線(xiàn)之和均相等。例如,三階魔方陣為

816

357

492

要求輸出的自然數(shù)構(gòu)成的魔法陣

8,找出一個(gè)二維數(shù)組中的鞍點(diǎn),即該位置上的元素在該行上最大、在

該列上最小。也可能沒(méi)有鞍點(diǎn)

#include<stdio.h>

#defineN4

#defineM5

intmain(){

inta[N][M],i,j,k,max,maxj,flag;

printf("請(qǐng)輸入數(shù)組元素的值:");

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

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

scanf(/%d”,&a[i皿);

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

max=a[i][O];

maxj=O;

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

if(a[i][j]>max){

max=a[i][j];

maxj=j;}

flag=l;

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

if(max>a[k][max]){

flag=O;

continue;}

if(flag){

printf("a[%d][%d]=%d\n"/maxj/max);

break;}}

if(!flag)

printf("ltisnotexist!\n");

return0;}

9.有15個(gè)數(shù)按由大到小順序存放在一個(gè)數(shù)組中,輸入一個(gè)數(shù),要求

用折半查找法找出該數(shù)是數(shù)組中第幾個(gè)元素的值,如果該數(shù)不在數(shù)組

中,則輸出“無(wú)此數(shù)”

#include<stdio.h>

#defineN15

intmain(){

inti,number,top,bott/midJoca,a[N],flag=l/sign;

charc;

printf("enterdata:");

scanf(“%d”,&a[0]);

i=l;

while(i<N){

scanf("%d",&a[i]);

if(a[i]>=a[i-l])

i++;

else

printf("enterthisdataagain:\n");}

printf("\n");

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

printf("%d",a[i]);

printf("\n");

while(flag){

printf("inputnumbertolookfor:");

scanf("%d",&number);

sign=0;

top=0;

bott=N-l;

if((number<a[O])11(number>a[N-l]))

loca=-l;

while((!sign)&&(top<=bott))

{mid=(bott+top)/2;

if(number==a[mid]){

loca=mid;

printf("Hasfound%d,itspositionis%d\n"/number;loca+l);

sign=l;}

elseif(number<a[mid])

bott=mid-l;

else

top=mid+1;}

if(!sign||loca==-l)

printf("cannotfind%d\n”,number);

printf("continueornot(Y/N)?");

scanf("%c",&c);

if(c=='N'||c=='n')

flag=0;}

return0;}

10.有一篇文章,共有3行文字,每行有80個(gè)字符。要求分別統(tǒng)計(jì)出

其中英文大寫(xiě)字母、小寫(xiě)字母、數(shù)字、空格以及其他字符的個(gè)數(shù)

#include<stdio.h>

intmain(){

inti=0,j=0zDletter=0zSletter=0zdigit=0,space=0zother=0;

chara[3][80];

printf(“請(qǐng)輸入三行文字:");

for(i=0;i<3;i++){

gets(a[i]);

for(j=0;j<80&&a[i][j]!='\0';j++){

if(a[i]U]>='A'&&a[i][j]<='Z')

Dletter++;

elseif(a[i][j]>='a'&&a[i][j]<=,z')

Sletter++;

elseif(a[i][j]>='0,&&a[i][j]<='91)

digit++;

elseif(a[i][j]=='')

space++;

else

other++;

})

printf("Dletter=%d/Sletter=%d,digit=%d,space=%d/other=%d"/

DletteGSIetteGdigit,space,other);

return0;}

11.輸出以下圖案

#include<stdio.h>

intmain(){

char

inti,j,k;

charspace='z;

for(i=0;i<5;i++){

printf(〃\n〃);

printf(/z");

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

printf(〃%c”,space);

for(k=0;k<5;k++)

printf(〃%c〃,a[k]);}

printf(〃\n〃);

return0;}

12.有一行電文,已按下面規(guī)律譯成密碼:

A->Za—z

BfYb—y

CfXcfx.....

即第1個(gè)字母變成第26個(gè)字母,第i個(gè)字母變成第(26-i+l)個(gè)字母,

非字母字符不變。要求編程序?qū)⒚艽a譯回原文,并輸出密碼和原文

#include<stdio.h>

#include<string.h>

intmain(){

chara[80]zb[80];

inti,n;

printf("請(qǐng)輸入密碼:\n");

gets(a);

n=strlen(a);

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

if(a[i]>=7V&&a[i]<=Z)

b[i]=155-a[i];

elseif(a[i]>='a"&&a[i]<='z')

b[i]=219-a[i];

else

b[i]=a[i];}

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

//printf("%cn,a[i]);

printf("%c",b[i]);}

return0;}

13.編一程序,將兩個(gè)字符連接起來(lái),不要用strcat函數(shù)

#include<stdio.h>

intmain(){

chara[100],b[20];

inti=0,j=0;

printf(〃請(qǐng)輸入兩個(gè)字符串:\n〃);

gets(a);

gets(b);

while(a[i]!='\0')

i++;

while(a[j]!=/\O,)

a[i++]=b[j++];

puts(a);

return0;}

14.編一程序,將兩個(gè)字符串si和s2比較,若sl>s2輸出一個(gè)正數(shù);

若sl=s2,輸出0;若sl<s2,輸出一個(gè)負(fù)數(shù)。不要用strcpy函數(shù)。兩個(gè)

字符串用gets函數(shù)讀入。輸出的正數(shù)或負(fù)數(shù)的絕對(duì)值應(yīng)該是相比較

的兩個(gè)字符串相應(yīng)字符的ASCII碼的差值。例如,“A”與“C”相比,

由于"A”<“C",應(yīng)輸出負(fù)數(shù),同時(shí)由于腎與9的ASCII碼差值為2,

因此應(yīng)輸出“?2二同理:“And”和“Aid”比較,根據(jù)第2個(gè)字符比

較結(jié)果,“n”比“i”大5,因此應(yīng)輸出“5”

#include<stdio.h>

intmain(){

chara[20],b[20];

inti=0,n;

printf("請(qǐng)輸入兩個(gè)字符串:");

gets(a);

gets(b);

while(a[i]==b[i]&&(a[i]!='\0'))

i++;

if(a[i]==,\0,&&b[i]=='\0')

n=0;

else

n=a[i]-b[i];

printf("%d"zn);

return0;}

15.編寫(xiě)一個(gè)程序,將字符數(shù)組S2的全部字符復(fù)制到字符數(shù)組si中。

不用strcpy函數(shù),復(fù)制時(shí),、(T也要復(fù)制過(guò)去,'(X后面的字符不復(fù)制

#include<stdio.h>

#include<string.h>

intmain(){

charsl[80],s2[80];

inti;

printf("請(qǐng)輸入字符串的內(nèi)容:”);

scanf("%s",s2);

for(i=0;i<strlen(s2);i++)

sl[i]=s2[i];

printf(“sl:%s\n“,sl);

return0;}

第七章

1.寫(xiě)兩個(gè)函數(shù),分別求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函

數(shù)調(diào)用這兩個(gè)函數(shù),并輸出結(jié)果。兩個(gè)整數(shù)由鍵盤(pán)輸入

#include<stdio.h>

intmain(){

inta,b,m,n;

printf(“請(qǐng)輸入兩個(gè)數(shù):”);

scanf(〃%d%d〃,&a,&b);

intGongyueshu(inta,intb){

intt;

if(a<b){

t=a;a=b;b=t;

)

intr;

r=a%b;

while(r!=0)

{a=b;

b=r;

r=a%b;}

returnb;}

intGongbeishu(intajntb){

intq,p;

q=Gongyueshu(a,b);

p=a*b/q;

returnp;

)

m=Gongyueshu(a,b);

n=Gongbeishu(a,b);

printf("最大公約數(shù)為:%d\n,:m);

printf(〃最大公倍數(shù)為:%d\n,:n);

return0;}

2.求方程ax2+bx+c=0的根。用3個(gè)函數(shù)分別求當(dāng)b2-4ac大于0、等

于0和小于0時(shí)的根并輸出結(jié)果。從主函數(shù)輸入a,b,c的值

#include<stdio.h>

#include<math.h>

floatxl,x2,disc,p,q;

floatDvalue(floata,floatb){

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

xl=(-b-sqrt(disc))/2*a;}

floatvalue(floata,floatb){

xl=x2=-b/2*a;}

floatSvalue(floata,floatb){

p=-b/(2*a);

q=sqrt(-disc)/(2*a);}

intmain(){

floata,b,c;

printf("請(qǐng)輸入a,b,c的值:〃);

scanf(〃%f%f%f”,&a,&b,&c);

disc=b*b-4*a*c;

if(disc>0){

Dvalue(a,b);

printf("xl=%f,x2=%r,xl,x2);}

elseif(disc==0){

value(azb);

///:

printf(xl=%f/x2=%fxl/x2);}

else{

Svalue(a,b);

//,,

printf(xl=%f+%fi,x2=%f-%fi,p,q,p,q);}

return0;}

3.寫(xiě)一個(gè)判素?cái)?shù)的函數(shù),在主函數(shù)輸入一個(gè)整數(shù),輸出是否為素?cái)?shù)的

信息

#include<stdio.h>

#include<math.h>

intmain(){

voidlsprim(intn);

intn;

printf("請(qǐng)輸入一個(gè)整數(shù):");

scanf("%d",&n);

Isprim(n);

return0;}

voidlsprim(intn){

inti;

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

if(n%i==O)

break;

if(i==n)

printf("%d是素?cái)?shù)“,n);

else

printf("%d不是素?cái)?shù)”,n);}

4.寫(xiě)一個(gè)函數(shù),使給定的一個(gè)3*3的二維整型數(shù)組轉(zhuǎn)置,即行列互換

#include<stdio.h>

intmain(){

inta[3][3]JJ;

voidconveser(inta[][3]);

printf("請(qǐng)輸入數(shù)組的值:\n");

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

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

scanf("%d",&a[i]Ul);

printf(“數(shù)組為:\n");

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

for(j=0;j<3;j++){

printf(“%3d”,a[i][j]);

if(j==2)

printf("\n");}

printf("行列互換后的數(shù)組為:\n");

conveser(a);

return0;}

voidconveser(inta[][3]){

intij,b[3][3];

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

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

bU][i]=a[i]U];

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

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

{printf(“%3d”,b[i皿);

if(j==2)

printf("\n");}}

5.寫(xiě)一個(gè)函數(shù),使輸入的一個(gè)字符串按反序存放,在主函數(shù)中輸入和

輸出字符串

#include<stdio.h>

#include<string.h>

intmain(){

voidconverse(charstr[80]);

charstr[80];

printf(“請(qǐng)輸入一個(gè)字符串:\n");

gets(str);

converse(str);

print"'反序后的字符串:\n");

puts(str);

return0;}

voidconverse(charstr[80]){

inti,n;

charc;

n=strlen(str);

for(i=0;i<n/2;i++){

c=str[i];

str[i]=str[n-i-l];

str[n-i-l]=c;

})

6.寫(xiě)一個(gè)函數(shù),將兩個(gè)字符串連接

#include<stdio.h>

intmain(){

voidstrcat(chara[100],charb[20]);

chara[100],b[20];

printf("請(qǐng)輸入兩個(gè)字符串的值:\n");

gets(a);

gets(b);

strcat(a,b);

printf(“連接后的字符串值為:\n“);

puts(a);

return0;}

voidstrcat(chara[100],charb[20]){

inti=0,j=0;

while(a[i]!='\0')

i++;

while(b[j]!=W)

a[i++]=b[j++];

a[i]='\0';}

7.寫(xiě)一個(gè)函數(shù),將一個(gè)字符串中的元音字母復(fù)制到另一字符串,然后

輸出。

#include<stdio.h>

intmain(){

voidVowelcopy(chara[80],charb[20]);

chara[80],b[20];

printf("請(qǐng)輸入字符串的值:\n");

gets(a);

Vowelcopy(a,b);

printf(”%s”,b);

return0;}

voidVowelcopy(chara[80],charb[20]){

inti=0,j=0;

while(a[i]!='\0'){

if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'||a[i]=='A'||

a[i]=='E'||a[i]==T||a[i]=='O'||a[i]=='U')

{bU]=a[i];

j++;)

i++;}

bU]='\O';}

8,寫(xiě)一個(gè)函數(shù),輸入一個(gè)4位數(shù)字,要求輸出這4個(gè)數(shù)字字符,但每

兩個(gè)數(shù)字間空一個(gè)空格。如輸入1900,應(yīng)輸出“1990”

#include<stdio.h>

intmain(){

voidfenli(intn);

inta[4],n,i;

printf("請(qǐng)輸入一個(gè)四位數(shù):");

scanf(“%d”,&n);

fenli(n);

return0;}

voidfenli(intn){

inta[4],i;

for(i=0;(i<4)&&(n!=0);i++){

a[i]=n%10;

n=n/10;}

for(i=3;i>=0;i-)

printf("%d",a[i]);}

9.編寫(xiě)一個(gè)函數(shù),有實(shí)參傳來(lái)一個(gè)字符串,統(tǒng)計(jì)此字符串中字母、數(shù)

字、空格和其他字符的個(gè)數(shù),在主函數(shù)中輸入字符串以及上述的結(jié)果

#include<stdio.h>

intmain(){

voidcount(chara[100]);

chara[100];

printf("請(qǐng)輸入字符串的值:\n“);

gets(a);

count(a);

return0;}

voidcount(chara[100]){

inti=0,letter=0/num=0,space=0/other=0;

while(a[i]!='\0'){

if((a[i]>='a'&&a[i]<=,z')||(a[i]>='A'&&a[i]<='Z'))

letter++;

elseif(a[i]>='0'&&a[i]<=,9,)

num++;

elseif(a[i]=='')

space++;

else

other++;

i++;}

printf("字母的個(gè)數(shù)為%d,數(shù)字的個(gè)數(shù)為%d,空格的個(gè)數(shù)為%d,其他字符

的個(gè)數(shù)為%(1",letter,num,space,other);}

10.寫(xiě)一個(gè)函數(shù),輸入一行字符,將此字符串中最長(zhǎng)的單詞輸出(程序

邏輯還有問(wèn)題)

#include<stdio.h>

#include<string.h>

intmain(){

voidLongestWord(chara[],charword[]);

chara[100]={0},word[100]={0};

printf("請(qǐng)輸入一行字符:\n");

gets(a);

LongestWord(azword);

printf("Thelongestwordis:%s\n",word);

return0;}

voidLongestWord(chara[]zcharword[]){

intmax」en=0,len=0,i=0;

while(a[i]!='\0'){

if(a[i]==''){

a[i]='\0';

len=strlen(a);

if(len>max_len){

max_len=len;

strcpy(word,a);

a=a+len+l;}}

i++;}}

11.寫(xiě)一個(gè)函數(shù),用“起泡法”對(duì)輸入的10個(gè)字符按由小到大順序排

#include<stdio.h>

intmain(){

inta[10]J;

printf(”請(qǐng)輸入十個(gè)待排序的數(shù)值:\n");

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

scanf("%d",&a[i]);

printf("排序后的結(jié)果為:\n");

sort(a);

return0;}

intsort(inta[10]){

inti,j,t;

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

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

if(aU]>aU+l]){

t=aU];a[j]=a[j+l];a[j+l]=t;}

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

printf(-%5d”,a[i]);}

12.用牛頓迭代法求根。方程為ax3+bx2+cx+d=0,系數(shù)a,b,c,d的值依次

為1,2,3,4由主函數(shù)輸入。求x在工附近的一個(gè)實(shí)根。求出根后

由主函數(shù)輸出

#include<stdio.h>

#include<math.h>

floatsolut(inta,intb,intc,intd)

{floatx=1,xO,f,fl;

do{

xO=x;

f=((a*x0+b)*xO+c)*x0+d;

fl=(3*a*xO+2*b)*xO+c;

x=xO-f/f1;

}while(fabs(x-xO)>=le-3);

return(x);}

intmain()

{inta,b,c,d;

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

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

printf("x=%10.7f\n",solut(a,b,c,d));

return0;}

13.用遞歸方法求n階勒讓德多項(xiàng)式的值,遞歸公式為:

1(n=0)

x(n=1)

PnM=幾一?一(九一

(21)%—pni1)?Pn24)

。之1)

n

#include<stdio.h>

intmain(){

doublepolya(intnjntx);

intn,x;

printf("請(qǐng)輸入n和x的值:");

scanf("%d%d",&n,&x);

printf("%.2f\n"zpolya(n,x));

return0;}

doublepolya(intnjntx){

doubleresult;

if(n==0)

result=l;

elseif(n==l)

result=x;

else

result=((2*n-l)*x-polya(n-l/x)-(n-l)*polya(n-2/x))/n;

returnresult;}

14.輸入10個(gè)學(xué)生5門(mén)課的成績(jī),分別用函數(shù)實(shí)現(xiàn)下列功能:

(1)計(jì)算每個(gè)學(xué)生的平均分

(2)計(jì)算每門(mén)課的平均分

(3)找出所有50個(gè)分?jǐn)?shù)中最高的分?jǐn)?shù)所對(duì)應(yīng)的學(xué)生和課程

(4)計(jì)算平均分方差:

其中X1為某一學(xué)生的平均分

#include<stdio.h>

intmain(){

floatscore[10][5]JJ;

printf(〃請(qǐng)輸入10個(gè)學(xué)生的5門(mén)成績(jī):\n〃);

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

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

scanf("%f”,&a[i][j]);

printf(〃每個(gè)學(xué)生的成績(jī)分別為:\n〃);

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

for(j=0;j<5;j++){

printf(〃%3d〃,a[i][j]);

if(j==4)

printf(〃\n〃);}

return0;}

⑴計(jì)算每個(gè)學(xué)生的平均分:

doubleStu_avg(inta[10][5]){

floatavg=0,sum;

intij;

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

for(j=0/sum=0;j<5;j++)

sum=sum+a[i][j];

Stu_avg=sum/5.0;

printf("avg=%lf",Stu_avg);}}

(2)計(jì)算每門(mén)課的平均分

doubleCou_avg(inta[10][5]){

floatCou_avg=Ozsum;

intij;

for(j=0;j<5;j++){

for(i=0,sum=0;i<9;i++)

sum=sum+a[i][j];

Cou_avg=sum/10.0;

printf("avg=%lf",Cou_avg);}}

(3)找出所有50個(gè)分?jǐn)?shù)中最高的分?jǐn)?shù)所對(duì)應(yīng)的學(xué)生和課程

inthighest(inta[10]⑸){

intmaxJJ;

max=a[0][0];

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

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

if(a[i][j]>max)

max=a[i][j];

printf(“最高分?jǐn)?shù)的學(xué)生是第%d個(gè),課程是第%(1個(gè))卜1);}

(4)計(jì)算平均分方差:

voidvari(inta[10][5]){

intl,j,k,m;

floattemp[10],var,xl,x2;

for(i=0,m=0;i<10;i++,m++){

for(j=0,k=0;j<5;j++)

k+=a[i][j];

temp[m]=k/5;}

for(i=m=xl=x2=0;i<10;i++){

xl+=pow(temp[i],2);

x2+=temp[i];}

var=xl/10-pow(x2/10,2);

printf(/z%f",var);}

15.寫(xiě)幾個(gè)函數(shù):

(1)輸入10個(gè)職工的姓名和職工號(hào)

(2)按職工號(hào)從小到大順序排序,姓名順序也隨之調(diào)整

(3)要求輸入一個(gè)職工號(hào),用折半查找法找出該職工的姓名,從主

函數(shù)輸入要查找的職工號(hào),輸出該職工姓名

#include<stdio.h>

#defineN3

#defineLEN20

〃定義一個(gè)結(jié)構(gòu)體類(lèi)型

structstudent{

charname[LEN];

intnum;};

intmain(){

intno;

voidoutput(structstudentstu[]);

voidinput(structstudentstu[]);

voidsortByNum(structstudentstu[]);

voidbinSearch(intno,structstudentstu[]);

structstudentstu[N];

input(stu);

output(stu);

sortByNum(stu);

output(stu);

printf("請(qǐng)輸入要查找的職工號(hào)no.:\n");

scanf("%d",&no);

binSearch(no,stu);

return0;}

〃輸入N名職工的姓名和編號(hào)

voidinput(structstudentstu[]){

inti;

printf("請(qǐng)輸入%d職工的姓名和編號(hào):\n”,N);

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

scanf("%s%d",stu[i].name,&stu[i].num);}}

〃輸出職工的姓名編號(hào)

voidoutput(structstudentstu[]){

inti;

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

printf("name:%20s/no.:%5d\n”,stu[i].name,stu[i].num);}}

〃按職工號(hào)從小到大排序,姓名也隨之排序

〃選擇排序

voidsortByNum(structstudentstu[]){

intminJJ;

structstudentt;

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

min=i;

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

if(stu[j].num<stu[min].num){min=j;}}

if(min!=i){

t=stu[min];

stu[min]=stu[i];

stu[i]=t;}}

printf("按職工號(hào)從小到大排序完畢.\n“);}

〃二分查找職工編號(hào)

voidbinSearch(intno,structstudentstu[]){

〃賦初始值

intlow=0,high=N-l/mid;

while(low<=high){

mid=(low+high)/2;

if(no>stu[mid].num){low=mid+l;}

elseif(no<stu[mid].num){high=mid-l;}

elseif(no==stu[mid].num)

{printf("name:%s\n,stu[mid].name);

break;}}

if(low>high)printf("can'tfindtheno.%dworker.",no);}

16.寫(xiě)一個(gè)函數(shù),輸入一個(gè)十六進(jìn)制數(shù),輸出相應(yīng)的十進(jìn)制

#include<stdio.h>

#include<string.h>

#include<math.h>

intmain(){

voidconvert(chara[10]);

chara[10];

printf(“請(qǐng)輸入0~9,A到F或者a到f的數(shù):\n〃);

gets(a);

convert(a);

return0;}

voidconvert(chara[10]){

inti,n,num=0;

n=strlen(a);

for(i=n-l;i>=0;i-){

if(a[i]>=,0/&&a[i]<=,9,)

num+=(a[i]-/0,)*pow(16,n-l-i);

elseif(a[i]>=jA/&&a[i]<=,F/)

/,

num+=(10+(a[i]-0))*pow(16/n-l-i);

elseif(a[i]>=,a/&&a[i]<=T)

num+=(10+(a[i]-/0,))*pow(16,n-l-i);}

printf(〃轉(zhuǎn)換為十進(jìn)制為:〃);

printf("%d〃,num);}

17.用遞歸法將一個(gè)整數(shù)n轉(zhuǎn)換成字符串。例如,輸入483,應(yīng)輸

出字符串“483”。n的位數(shù)不確定,可以是任意位數(shù)的整數(shù)

#include<stdio.h>

intmain(){

voidfun(intn);

intn;

printf(/zinput:n\n");

scanf(〃%d〃,&n);

printf(〃該數(shù)字對(duì)應(yīng)的字符串為:\n〃);

fun(n);

return0;}

voidfun(intn){

inti;

if(n<0){

putcharC-');

n=-n;}

if((i=n/10)!=0)fun(i);

putchar(n%10+,0/);}

18.給出年、月、日,計(jì)算該日是該年的第幾天

#include<stdio.h>

intflag(intyear){

ints=0;

if(year%4==0&&year%400!=011year%100==0&&year%400==0)

s=l;

returns;}

intdate(intmonjntday){

ints=OJ;

inta[12]={31,28,31,30,31,30,3130,31,30,31,30);

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

s=s+a[i];

s=s+day;

returns;}

intmain(){

intyear;mon,day,sum,p;

printf("請(qǐng)輸入一個(gè)日期:〃);

scanf(〃%d%d%d,,,&year,&mon,&day);

sum=date(mon,day);

p=flag(year);

if(mon>=3&&p==l)

sum++;

printf(/z%d年%€1月%(1日是這一年的第%(1\|1〃,year,mon,day,sum);

return0;}

第八章

1.輸入3個(gè)整數(shù),按由小到大的順序輸出

#include<stdio.h>

intmain(){

voidswap(int*pl,int*p2);

intnl,n2,n3;

int*pl,*p2/p3;

printf(〃請(qǐng)輸入nl,n2,n3的值:\n〃);

scanf("%d%d%d〃,&nl,&n2,&n3);

pl=&nl;

p2=&n2;

p3=&n3;

if(nl>n2)swap(pl,p2);

if(nl>n3)swap(pl,p3);

if(n2>n3)swap(p2,p3);

printf(zzNowtheorderis:%d%d%d”,nl,n2,n3);

return0;}

voidswap(int*pl,int*p2){

intp;

p=*pl;

*pl=*p2;

*p2=p;}

2,輸入3個(gè)字符串,按由小到大的順序輸出

#include<stdio.h>

#include<string.h>

intmain(){

voidswap(char*,char*);

charstrl[2O],str2[3O],str3[2O];

printf(〃請(qǐng)輸入三個(gè)字符串:\n〃);

gets(strl);

gets(str2);

gets(str3);

if(strcmp(strl,str2)>0)swap(strl,str2);

if(strcmp(strl,str3)>0)swap(strl,str3);

if(strcmp(str2,str3)>0)swap(str2,str3);

printfC'Nowtheorderis:\n");

z/,,

printf(%s\n%s\n%s\n/strl/str2,str3);

return0;}

voidswap(char*pl,char*p2){

charp[20];

strcpy(p,pl);strcpy(pl,p2);strcpy(p2,p);}

3.輸入10個(gè)整數(shù),將其中最小的數(shù)與第一個(gè)數(shù)對(duì)換,把最大的

數(shù)與最后一個(gè)數(shù)對(duì)換。寫(xiě)3個(gè)函數(shù):①輸入10個(gè)數(shù);②進(jìn)行處理③

輸出10個(gè)數(shù)

#include<stdio.h>

intmain(){

voidinput(int*);

voidmax_min_value(int*);

voidoutput(int*);

intnumber[10];

input(number);

max_min_value(number);

output(number);

return0;}

voidinput(int*number){

inti;

printf('Input10number:");

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

scanf("%cT,&number[i]);}

voidmax_min_value(int*number){

int*max/*min,*p,temp;

max=min=number;

for(p=number+l;p<number+10;p++)

if(*p>*max)max=p;

elseif(*p<*min)min=p;

temp=number[O];number[O]=*min;*min=temp;

if(max==number)max=min;

temp=number[9];number[9]=*max;*max=temp;}

voidoutput(int*number){

int*p;

printf(Now,theyare:");

for(p=number;p<number+10;p++)

printf("%4d〃,*p);

printf(〃\n〃);}

4.有n個(gè)整數(shù),使前面各數(shù)順序向后移m個(gè)位置,最后m個(gè)數(shù)

變成最前面m個(gè)數(shù)。寫(xiě)一函數(shù)實(shí)現(xiàn)以上功能,在主函數(shù)中輸入n個(gè)

整數(shù)和輸出調(diào)整后的n個(gè)數(shù)

#include<stdio.h>

voidmove(inta[20],intnjntm){

int*p,end;

end=*(a+n-l);

for(p=a+n-l;p>a;p-)

*p=*(p-l);

*a=end;

m--;

if(m>0)move(azn,m);}

intmain(){

inta[20],m/n/i;

printf("共有多少個(gè)數(shù):\n");

scanf("%cT,&n);

printf("請(qǐng)輸入n個(gè)整數(shù):\n");

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

scanf("%d",&a[i]);

prin

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論