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

下載本文檔

版權(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í)題解答(參考)

習(xí)題一

一、單項(xiàng)選擇題

LD2.A3.D

二、填空題

1.順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)

2.算法

3.語(yǔ)言簡(jiǎn)潔、運(yùn)算符豐富、結(jié)構(gòu)化語(yǔ)言

4.可移植性強(qiáng)、代碼效率高、書(shū)寫(xiě)格式自由

5.錯(cuò)誤隱蔽、有時(shí)會(huì)難以理解、有時(shí)會(huì)難以修改

6.群舉法(枚舉法)、遞推法(迭代法)、遞歸法

7.做什么怎么做

二、應(yīng)用題

include<sldio.h>

voidmain()

printf("*********************A***\n"),

printff4Clanguageprogram'n");

printf(“**********朱*************

I

2.

include<stdio.h>

voidmain()

(

inta,b,c,niax;

scanfC%d%d%d,\&a,&b,&c);

if(a>b)max=a;

elsemax=b;

if(niax<c)max=c;

printf(t4Max=%d\n,,,max);

習(xí)題二

一、單項(xiàng)選擇題

l.A,D,E2.B,E3.B.D,E,F,H4.B,F5.A,B,E

二、填空題

l.(l)int⑵char⑶double(4)long⑸char(6)char(7)inl(8)long

2.(D0(2)0(3)2(4)4(5)4(6)8(7)0(8)2

3.211I

4.不做

5.sin(25*3.14159/180)+cos(30*3.14159/180)

6.2

8.5

三、給出各個(gè)程序的運(yùn)行b結(jié)果

1.運(yùn)行結(jié)果如下:

3

21

5

5

2.運(yùn)行結(jié)果如下:

6,9

9,27

習(xí)題三

一、單項(xiàng)選擇題

1.1)2.B3.1)4.C5.B6.C7.B8.A9.C1().I)

11.D12.D13.B14.A15.A16.B17.C18.C19.B20.B

21.1)22.C23.C24.D25.C26.C27.1)28.D29.B30.A

二、填空題

1.從標(biāo)準(zhǔn)設(shè)備(鍵盤)上讀入?一個(gè)字符向標(biāo)準(zhǔn)設(shè)備(鍵盤)上輸出一個(gè)字符

#include<sidio.h>

2.以十進(jìn)制形式輸入一個(gè)整數(shù)表示從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀取輸入的3個(gè)整型數(shù)

表示掉過(guò)3個(gè)整數(shù)不讀取用來(lái)輸入一個(gè)字符

3.以十進(jìn)制形式輸出一個(gè)整數(shù)以十六進(jìn)制形式輸出一個(gè)整數(shù)

以十進(jìn)制小數(shù)形式輸出,輸出的數(shù)據(jù)長(zhǎng)度為7位,其中有兩位為小數(shù)

以字符形式輸出一個(gè)字符

4.分程序:;5.-16.非00

7.a%7==0else8.39.2

10.forwhiledo-while11.Continue12.a=16,y=42

13.1014.y=1915.22222

16.3917.718.5,5

19.n=420.-321.8

3.04.5675.thisnumberisahuiwen

四、編程題

1.編寫(xiě)一個(gè)程序,要求用戶輸入兩個(gè)整數(shù),判定其中一個(gè)是否能整除另一個(gè)。

#include<stdio.h>

intmain()

(

inta,b;

while(scanf("%d%d",&a,&b)==2)

(

if(a%b)printfi"不能整除\n");

elseprintf("能整除\n");

)

return0;

)

2.編程實(shí)現(xiàn):輸入一個(gè)整數(shù),判斷它能否被3,5,7整除,并輸出以下信息之一:

①能同時(shí)被3,5,7整除;

else

if(x<3)

y=0.1/2;

else

do

{

y=(0.2+y)/2;

x=x-l;

}while(x-3>0);

}

prinlf("%3y);

}

4.輸入a、b、c三條邊,判斷它是否構(gòu)成三角形。若能構(gòu)成三角形,則計(jì)算三角形面積。

#include<stdio.h>

#includc<math.h>

main()

{

floata,b,c,S=0,x=0;

printf("輸入三角形三條邊的邊K:");

scanf("%f%tW,&a,&b,&c);

if(a+b>c&&b+c>a&&a+c>b)

(

x=(a+b+c)/2.0;

S=sqrt(x*(x-a)*(x-b)*(x-c));

printf("area=3);

)

Else

printf("不能構(gòu)成三角形\n");

)

5.打印出所有“水仙花數(shù)“。所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字的立方和等于該數(shù)

本身。例如,153是一個(gè)“水仙花數(shù)”,因?yàn)?53=13+53+3是

#include"stdio.h"

#include"math.h"

main()

{

inti;

inta.b.c;

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

(

a=i%10;/*取個(gè)位數(shù)號(hào)

b=i/10%l0;/*取十位數(shù)號(hào)

c=i/100;/*取百位數(shù)*/

if(i==a*a*a+b*b*b+c*c*c)

printf("%d",ii;

)

)

6.編寫(xiě)一個(gè)程序,在屏幕上顯示如下圖形(圖形的層數(shù)讀者自行設(shè)定):

*

***

*****

*****

***

*

#include<stdio.h>

#include<math.h>

inain()

{

inti,j,k;

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

(

for(j=hj<=abs(i);j++)

printf("%c",32);

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

printfC'*");

printf(n\n");

)

1

7.求斐波那契(Fibonacci)數(shù)列:1,1,2,3,5,8,……的前40個(gè)數(shù)。

斐波那契數(shù)列的定義:

Fi=l(n=1)

F2=l(n=2)

Fn=Fn.|+Fn-2(n>3)

#include<stdio.h>

main()

(

intfl,f2,f;

inti;

fl=f2=l;

printf("%d\n%d\n”,fl,f2);

for(i=l;i<=38;i++)/*已經(jīng)有兩個(gè)數(shù),只要再產(chǎn)生38個(gè)數(shù)即可可

{

■l+f2;

flM2;

f2=f;

printf("%d\ii",f);

)

8.編程實(shí)現(xiàn)求1+2+3+…+n之和,并輸出當(dāng)其和第一次大于或等于10()時(shí)的值及n值。

#include<stdio.h>

main()

(

inti,s,t=0;

i=l;s=0;

while(i<=100)

(

s=s+i;

if(s>=100&&?1)/*設(shè)定l只求第一次和大于100的內(nèi)容*/

(

printff第一次和大于或等于100時(shí)和為%d\n”,s);

prinlff第一次和大于或等于100時(shí)n^%d\n",i);

t+=l;

)

i=i+l;

)

printf("s=%d\nH,s);

)

9.整元換零錢問(wèn)題。把I元兌換成I分、2分、5分的硬幣,共有多少種不同的換法?

#include<stdio.h>

main()

{

inti,j,k,n;

n=100,k=0;

fbr(i=0:i<=n/5;i++)

for(j=0j<=(n-i*5)/2y++)

{

printf("5cent=%d\t2cent=%d\tIcent=%d\n",i,j,n-i*5-j*2);

k++;

)

prinlf("totallimes=%d\n",k);

}

10.編寫(xiě)解雞兔同籠問(wèn)題的程序。用戶輸入頭的數(shù)目和腳的數(shù)目,輸出雞、兔各有多少只。

#include<stdio.h>

main()

{intx,y,a,b;

printf("輸入雞兔頭的數(shù)目:");

scanf(M%d",&x);

printf("輸入雞兔腳的數(shù)目:“);

scanf("%d”,&y);

a=x-(y-2*x)/2;

b=(y-2*x)/2;

printf("雞有%(1只,兔有%d只”,a,b);

)

11.打印楊輝三角形,即(x+yF展開(kāi)式的各項(xiàng)系數(shù),并且在程序運(yùn)行開(kāi)始時(shí),問(wèn)用戶n的值為多

少,接著打印如下形式至指定行數(shù)。

121

1331

14641

#include<stdio.h>

intmain()

{intn,k,j,c;

printf("Input=");

scanf("%d",&n);

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

{

〃printf(”%*s”,4*(n-k));/*格式控制語(yǔ)句,有和沒(méi)有是兩種顯示方式*/

c=l;

printf("%4d",c);

for(j=l;j<=k-l;j++)

(

c=c*(k-j)/i;

printf("%8d",c);

)

printfC'Xn");

)

return0;

)

12.個(gè)位數(shù)是6,且能被3整除的五位數(shù)共有多少個(gè)?

#include<stdio.h>

main()

{inta,count=0;

longi;

for(i=10000;i<100000;i++)

{

a=i%10;

if(a==6&&i%3==0)

count++;

printf("這樣的數(shù)共計(jì):%d",count);

習(xí)題四

一、單項(xiàng)選擇題

1.C2.D3.1)4.D5.C6.1)7.B8.A9.B1().B

二、填空題

1.—15014float2.8

3.連續(xù)數(shù)組名4.按行存儲(chǔ)

5.046.350

7.368.9

9.710.#include<stdio.h>#include<string.h>

三、程序閱讀分析題

1.i==ja[i][j]a[i][j]printf(*\n*)

2.k=32

3.gbcdefa

4.012345

123456

234567

345678

456789

5678910

5.you&me

四、編程題

1.設(shè)數(shù)組V中的數(shù)據(jù)元素遞增有序,現(xiàn)將x插入到數(shù)組V的適當(dāng)位置,使數(shù)組元素的值仍保持有序。

#include<stdio.h>

voidmain()

intV[15]={65,70,73,75,79,81,85,88,90};/*有9個(gè)初值,有序*/

intn=9,x=77;/*數(shù)組中當(dāng)前有n個(gè)數(shù)據(jù),將x插入數(shù)組V中,仍保持有序*/

inti;

for(i=n-l;i>=0&&;'[i]>x:i—)/*將V數(shù)組中的數(shù)據(jù)從后往前比較*/

V[i+l]=V[i];/*若大于x,后移一個(gè)位置*/

V[i+l]=x;/*將x插入數(shù)組V中*/

n++;/*數(shù)組中數(shù)據(jù)個(gè)數(shù)增1*/

for(i=0:i<n:i++)/*輸出數(shù)組中的n個(gè)數(shù)據(jù)*/

printf(線d”:V[i]);

printf("\n");

)

2.定義一個(gè)含有30個(gè)整型元素的數(shù)組,按順序分別賦予從2開(kāi)始的偶數(shù),然后按順序每五個(gè)數(shù)求

出一個(gè)平均值,放在另一個(gè)數(shù)組中并輸出。

#include<stdio.h>

voidmainO

intarray[30],average[6]={0};

inti,j;

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

array[i]=2*(i+l);

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

(

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

average[j]+=array[i];

average[j]/=5;

prinlf("%daverage[j]);

)

printf("\n");

)

3.輸入一個(gè)字符串,在指定位置插入一個(gè)字符。

#include<stdio.h>

voidmain()

(

charstr[81],ch;

inti,position;

printf("輸入一個(gè)字符串:”);

gets(str);

printf(〃輸入要插入字符的位置:”);

scanf&position);

printf("輸入要插入的字符:〃);

scanf(飛*c%c”,&ch);

for(i=0;str[i]!=:\0';i++);

whi1e(i>=position-1)

|

str[i+l]=str[i];

i—;

)

str[position-l]=ch;

printf(〃在指定位置插入字符后的字符串:斷An",str);

)

4.輸入一行字符,分別統(tǒng)計(jì)其中十個(gè)數(shù)字字符O,T,…,9出現(xiàn)的次數(shù)。

#include<stdio.h>

voidmain()

(

charstr[81];

intcount[10]={01,i;

printf("輸入一行字符:\n");

gets(str);

for(i=0;str[i]!=!\0';i++)

if(str[i]>=0,&&str[i]<=9')

count[strEi]-*0*]++;

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

printf('\'%c\':%d\n",'O'+i,count[i]);

)

5.輸入矩陣A(2行3列)和矩陣B(3行4列),計(jì)算它們的乘積C=ABO

(矩陣乘積計(jì)算公式:CrEAlkBkj)

#include<stdio.h>

voidmain()

(

inta[2][3],b[3][4],c[2][4]:

inti,j,k;

printf(〃輸入2行3列矩陣數(shù)據(jù):\n〃);

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

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

scanf&a[i][j]);

printf(〃輸入3行4列矩陣數(shù)據(jù):\n");

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

for(j=0;j<4;j?i)

scanf&b[i][j]);

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

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

(

c[i][j]=0;

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

c[i][j]+=a[i][k]*b[k][j];

)

printf("兩矩陣的乘積矩陣是:\n");

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

(

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

printf(飛5d",Mi][j]);

printf("\n");

)

)

6.下面是一個(gè)5X5階的螺旋方陣。試編程打印出此形式的nXn(nV10,順時(shí)針?lè)较蛐M(jìn))。

12345

161718196

152425207

142322218

131211109

#include<stdio.h>

^defineN5

voidmain()

inta[N][N],i,j,k,n;

i=0;

j=0;

n=l;

for(k=l;k<=N*N;k++)

(

if(i==n-l&&j<N-n)

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

elseif(j=N-n&&i<N-n)

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

elseif(i==N-n&&j>n-l)

a[i][j—]=k;

else

a[i—][j]=k;

if(i==n&&j==n-l)

n++;

)

for(i=();i<N;iii)

(

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

printf(飛5d”,a[i][j]);

printfC\n*);

)

}

7.編一程序,實(shí)現(xiàn)字符串復(fù)制,不使用sircpyO函數(shù)。

#include<stdio.h>

voidmain()

(

charstrl[81],str2[]=z,Iamastudent.";

inti;

for(i=0;(strl[i]=str2[i])!='\0';i++);

printf(,,%s\n%s\nv,strl,str2);

)

8.編一程序,求字符串的長(zhǎng)度,不使用strlenO函數(shù)。

#include<stdio.h>

voidmain()

(

charstr[81];

intn;

printf("輸入一個(gè)字符串:");

gets(str);

n=0;

while(str[n]!='\0')

n++;

printf("字符串的長(zhǎng)度是:刎\n”,n);

)

9.有一篇文章,共有3行文字,每行有80個(gè)字符。要求分別統(tǒng)計(jì)出其中英文大寫(xiě)字母、小寫(xiě)字母、

數(shù)字、空格以及其他字符的個(gè)數(shù)。

#include<stdio.h>

voidmain()

(

charstr[3][81];

charcategory[5][l0]={〃UPPER〃,“LOWER","DIGIT","SPACE","OTHER"};

inti,j,count[5]={0};

printf("輸入3行文字:\n");

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

gets(str[i]);

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

for(j=0;str[i][]]!=>\0';j++)

if(str[i][j]>=A*&&str[i][j]<=Z')

count[0]++;

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

count[1]++;

elseif(str[i]O'&&str[i][j]<=,9')

count[2]++;

elseif(str[i][j]==*)

count[3]++;

else

count[4]++;

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

printf(w%s:%d\n/z,category[i],count[i]);

)

10.某班期終考試科目為高等數(shù)學(xué)(MT)、英語(yǔ)(EN)和物理(PH)。有3()人參加考試。為評(píng)定獎(jiǎng)學(xué)金,

要求統(tǒng)計(jì)并輸出一個(gè)表格,表格內(nèi)容包括學(xué)號(hào)、各科分?jǐn)?shù)、總分和平均分,并標(biāo)出三門課均在90分

以上者(該欄標(biāo)志輸出為“Y”,否則為“N”),表格形式如下:

NOMTENPHSUMV>90

197879227692Y

292919027391Y

390818225384N

可以將學(xué)生的學(xué)號(hào)和各科成績(jī)放在數(shù)組a[30][4]中,然后進(jìn)行統(tǒng)計(jì)處理。

#include<stdio.h>

^defineN30

voidmain()

(

intstu[N][4],sum;

inti,j;

chargreat90;

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

(

printf(〃輸入第%d個(gè)學(xué)生的數(shù)學(xué)、英語(yǔ)和物理成績(jī)(空格分隔):〃,i+1);

stu[i][O]=i+1;

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

scanf&stu[i][j]);

)

printfCNOMTENPHSUMV>90\n");

printf('-------------------------------------\n");

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

(

sum=0;

great90=,YJ;

printfstu[i][0]);

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

(

printf(飛5d”,stu[i][j]):

sum>=stu[i][j];

if(stu[i][j]<90)

grcat90=,N';

)

printf(飛5d“:sum);

printfsum/3);

printf(,/%5c\n,/,great90);

)

}

習(xí)題五

一、單項(xiàng)選擇題

1.B)2.D)3.A)4.D)5.A)6.C)

二、填空題

1.52.883.2

4.12125.4126.1行的行地址

三、程序分析題

1.24

2.ENGLISH

MATH

MUSIC

PHYSICS

CHEMISTRY

四、編程題(以下題目均要求用指針?lè)椒▽?shí)現(xiàn))

1.#include<stdio.h>

#include<string.h>

voidmain()

(

char*n[]={"china","japan","korea","american","england"},*temp;

int

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

(

k=i;

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

if(strcmp(n[k],n[j])>0)k=j;

if(k!=i)

{

temp=n[k];n[k]=n[i];n[i]=tcmp;

)

)

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

printf("%s\n",n[i]);

)

2.#include<stdio.h>

voidmain()

(

inta[10]=)87,78,69,79,98,86,91,75,71,95),*p,temp;

inti,min_order;

P=a;

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

if(*p>a[i])p=a+i;

min_ordcr=p-a;

printf(,zMin=a[%d]=%d\nz,,min_order,ci[min_order]);

temp=*p;*p=a[Oj;a[0]=temp;

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

printfa[i]);

printf("\n");

)

3.略

4.#include<stdio.h>

voidmainO

{

inta[10]={10,20,30,40,50,60,70,80,90};/*數(shù)組中9個(gè)數(shù)有序*/

int*p,x=35;/*x為待插入的數(shù)據(jù)*/

for(p=&a[8];(p>=a)&&(*p>x);p-)

*(p+D=*p;/*從后向前將比x大的數(shù)據(jù)后移一個(gè)位置*/

*(p+l)=x;/*將X插入到數(shù)組中*/

for(p=a;p<a+10;p++)/*輸出數(shù)組中的數(shù)據(jù)*/

prinlf*p);

printfC\n*);

)

5.#include<stdio.h>

voidmain()

(

chars[255],prrior=,',*p;

printf(〃輸入一行英文:\n〃);

gets(s);

for(p=s;*p!=>\0";p++)/*掃描字符串*/

(

if(prrior==,*&&*p)='a'&&*p<='z')/*單詞開(kāi)始且是小寫(xiě)字母*/

*p-=32;/*將單詞的第一個(gè)字母改為大寫(xiě)*/

prrior=*p;

)

puts(s);

)

6.#include<stdio.h>

voidmain()

(

charstrl[81j,str2amaboy.*;

char*s,*t;

s=str2;

t=strl;

while((*t=*s)!='\0')

(

s++;

t++;

}

puts(strl);

)

7.略

8.略

9.編寫(xiě)程序,實(shí)現(xiàn)輸入月份號(hào),輸出相應(yīng)的英文月份名。

10.略

11.略

12.#include<stdio.h>

voidmain()

(

charstr[81],*p,*q;

printf("輸入一個(gè)字符串:\n");

gets(str);

for(q=str;*q!=>\0*;q++);

for(p=str,q—;(p〈q)&&(*p==*q);p++,q—);

if(p<q)printf("字符串:%s不是回文串!\n”,str);

elseprintf("字符串:%s是回文串!\n”,str);

}

13.#include<stdio.h>

voidniain()

(

charstr[81],*p,qc,pc;

printf(〃輸入一個(gè)字符串:\n〃);

gets(str);

for(q=str;*q!=,\0J;q++);

for(p=str,q—;p<q;p++,q—)

(

pc=(*p>=,a,&&*p<='z')?*p-32:*p;

qc=(*q>=,a'&&*q<='z)?*q-32:*q;

if(pc!=qc)break;

)

if(p<q)printf("字符串:用s不是回文串!\n”,str);

elseprintf("字符串:%s是回文串!\n",str);

)

14.#include<stdio.h>

#includc<stdlib.h>

#include<time.h>

voidmain()

(

int*a,n,i;

printf("輸入一維數(shù)據(jù)的長(zhǎng)度:〃);

a=(int*)malloc(n^sizeof(int));//動(dòng)態(tài)分酉己內(nèi)存空間

printf("%d\n",tine(NULL));

srand(time(NULL):;〃初始化隨機(jī)數(shù)序列

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

a[i]=rand()%100;//產(chǎn)生隨機(jī)數(shù)

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

printf(z,%d”,a[i]);〃輸出數(shù)據(jù)

printf("\n");

)

15.略

習(xí)題六

一、單項(xiàng)選擇題

1-5ADBDB6-10BAACD

二、填空題

1.從定義變量處到程序結(jié)束局部變量

2.auto

3.return(表達(dá)式)void

4.returns;

5.*pl>*p2;*pl=*p2;

6.floata[],intns+=ali];

7.*s-*t

8.w(i-l]

9.>(b!=0)

10.i<10array!i]average(score)

三、程序閱讀分析題

1.maxis2

2.100,200,300

3.last=64

4.5109

5.12

四、編程題

1.函數(shù)root2如下:

voidroot2(floata,floatb,floatc,floatroot[J)

{floatd;

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

root[0]=(-b+sqrt(d))/(2*a);

root[1]=(-b-sqrt(d))/(2*a);

)

2.函數(shù)countc如下:

intcountc(chararrry[J)

{inti.n=0;

for(i=0;array[ij!-\0';i++)

if(array[i]>='A'&&array[i]<-Z')n++;

return(n);

)

3.解:函數(shù)link如下:

intlink(charsll],chars2[],chars3[])

{inti,j;

forCi=0;sl[i]!='\0';i++)s3[i]=sl[i];

fora=0;s2[i]!='\0';j++,i++)s3[i]=s2[j];

s3[i]='\0';

return(i);

)

4.#include<stdio.h>

voidfun(floata[].intrefloat*pmax,float*pmin,float*pave)

inti;

*pinax=*pinin=*pave=alOJ;

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

{

if(*pmax<a[i])*pinax=a[i];

if(*pmin>a[i])*pniin=a[i];

*pave+=a[i];

I

*pavc/=n;

)

voidmain()

{

floata[10],niax,min,ave;

intn,i;

printf("plcascinputdata:\n");

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

scanf("%r;&a[i]);

piintf("pleaseinputnnuEiberiVi");

scanf(M%d'\&n);

fun(a.n,&max,&min,&ave);

printf("max=%f,niin=%f,avc=%f',niax,min,ave);

}

5.#include<stdio.h>

intage(intn)

(

intc;

if(n==l)c=10;

elsec=age(n-i)+3;

returnc;

)

voidmain()

(

intn=5;

printf("%d\n",age(5));

I

6.#include<stdio.h>

floatp(intn,intx)

floatu,v,w;

if(n==O)returnI;

elseif(n==l)returnx;

else

{u=(2*n-1)*x*p((n-1),x);

v=(n-l)*p((n-2),x);

w=(u-v)/n;

returnw;

)

}

voidmain()

{

inta,b;

floatc;

printf("Inputn,x:\n");

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

c=p(a,b);

printf("theresultis%f',c);

}

7.#includc<stdio.h>

void(riangle(inlx,inty,intz)

{

if(x+y>z&&y+z>x&&x+z>y)

{if(x==y&&y==z)printf("Thisisaequilateraltriangle."):

elseif(x==y||y==z||x==z)printf("Thisisaisoscelestriangle.");

)

else

printt'C'Can'lcompositiontriangle!");

}

voidmain()

(

intx,y,z;

printf("Inputx,y,z:\iT);

scanf("%d,%d,%d",&x,&y,&z);

triangle(x,y,z);

}

8.

#include<stdio.h>

floatou(intn)

(

floats=0;

inti;

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

s+=1.000000/i;

return(s);

floatji(intn)

(

floats=0;

inti;

fdr(i=l;i<=n;i+=2)

s+=1.000000/i;

retum(s);

}

floatcall(floal(*fp)(inl),intn)

{

retum((*fp)(n));

}

voidmain()

(

floatsum;

intn;

scanf("%d",&n);

printf("sum=");

if(n%2==0)

sum=call(ou,n);

else

sum=call(ji,n);

printf("%f',sum);

習(xí)題七

一、單項(xiàng)選擇題

1.A)2.A)3.B)4.C)5.B)6.B)7.C)8.D)9.C)10.B)

二、填空題

1.typedef2.union3.使用字干數(shù)最大4.p=&x

三、程序分析題

1.10,x

四、編程題

1.#include<stdio.h>

#include<stdlib.h>

#include<time.h>

^defineN10

typedefstructnode{

intvalue;

structnode*next;

}Node;

voidmain()

(

Node*head,*t,*p;

inti,x;

srand((unsigncd)time(NULL));〃初始化隨機(jī)數(shù)序列

head=(Node*)malloc(sizeof(Node));

head->next=NULL;〃建立帶頭節(jié)點(diǎn)的空單鏈表

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

(

x=rand()%100;

printf('%d”,x);

t=(Node*)malloc(sizcof(Node));

t->value=x;

p=head;

while(p->next!=NUI.L&&p->next->va1ue<x)

p=p->next;

t->next=p->next;

p->next=t;

}

printf(,z\nz,);

p=head->ncxt;

while(p!=NULL)

(

printf(^d",p->/alue);

p=p->next;

}

printf("\n");

)

2.#include<stdio.h>

#includc<string.h>

#defineN3

structstudent{

ininum;

charname[11];

charsex[3];

intage;

floatscore;

);

voidinain()

(

structstudentstu|Nl;

intnan=0,nv=0,i;

floatpjnl=O,pjcj=O;

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

(

printf("輸入第%d個(gè)學(xué)生的數(shù)據(jù):\n”,i+l);

printf(“學(xué)號(hào):");scanf("%d%*c”,&siu[i].num);

printf("姓名丁");gets(stu[i].name);

printf("性別:");gets(stu[i].sex);

printf("年齡:");scanf("%d",&stu[i].age);

printf("成績(jī):");scanf("%F',&stu[i].scorc);

)

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

(

if(strcmp(stu[i].sex,"男")==0)nan++;

elsenv++;

pjnl+=stu[il.age;

pjcj+=stu[i].score;

}

pjnl=pjnl/N:

pjcj=pjcj/N;

print,男生人數(shù):%d,女生人數(shù):%d,平均年齡:%.2f,平均成績(jī):%.2f\n",nan,nv,pjnl,pjcj);

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

if(stufil.score<pjcj)

printf("%s%.2f\n,',stu[i].name,stu[iJ.score);

}

3.略

習(xí)題八

一、單項(xiàng)選擇題

LA2.A3.B4.B5.A6.C7.B8.D9.A10.A

二、填空題

1.文本文件二進(jìn)制文件542.文件型指針變量stdio.h

3."D:\\abc.dat"4.getchar()

5.puts(buff)6.rewind(fp)fseek(fp,72L,SEEK_SET)

7.將數(shù)組a中的10個(gè)整數(shù)寫(xiě)入fp文件8.二進(jìn)制

9.fprintf(stdout,,?,)10.新建一個(gè)文件

三、應(yīng)用題

I.為什么要打開(kāi)和關(guān)閉文件?

答:通過(guò)打開(kāi)操作可以建立程序和文件之間的通訊通道,并為文件操作建立緩沖區(qū),使程序中的一

個(gè)文件型指針變量代表一個(gè)文件。而關(guān)閉操作可以釋放相關(guān)的資源,如緩沖區(qū)等。

2.使用讀寫(xiě)函數(shù)對(duì)文件讀或?qū)懖僮骱?,文件位置指針將如何變化?/p>

答:使用讀寫(xiě)函數(shù)對(duì)文件讀或?qū)懖僮骱?,文件位置指針將指向所讀或?qū)憯?shù)據(jù)之后的數(shù)據(jù)。

3.有兩個(gè)磁盤文件datal和data2,各存放若干整數(shù),并且這些整數(shù)是按從小到大的順序存放的。將

這兩個(gè)文件中的數(shù)據(jù)合并輸出到文件data中,data中的數(shù)據(jù)要求有序。

假設(shè)是文本文件,且文件中的數(shù)據(jù)是用空格或Tab或回車分隔的(也可考慮是二進(jìn)制文件)。

#include<stdio.h>

#include<stdlib.h>

voidmain()

(

FILE*frl,*fr2,*fw;

intil,i2,si,s2;

frl=fopen("datal","r");/*打開(kāi)文件datal*/

fr2=fopen(〃dala2","r");/*打開(kāi)文件data2*/

fw二fopen("data",;/*打開(kāi)文件data*/

sl=fscanf(frl,&i1);/*從文件datal讀第一個(gè)數(shù)據(jù),不成功返回EOF*/

s2:fscanf(fr2,&i2);/*從文件data2讀第一個(gè)數(shù)據(jù),不成功返回EOF*/

whi1e(s1!=E0F&&,s2!=EOF)/*文件datal和data2均未結(jié)束,循環(huán)*/

(

if(il<i2)

(

fprintf(fw,”,il);/*從文件datal讀的數(shù)據(jù)寫(xiě)入文件data*/

sl=fscanf(frl,"刎",&i1);/*從文件datal讀下一個(gè)數(shù)據(jù)*/

)

else

(

fprintf(f\v,"%d",i2);/*從文件data2讀的數(shù)據(jù)寫(xiě)入文件data*/

s2=fscan「(fr2,〃%d〃,&i2);/*從文件data2讀下一個(gè)數(shù)據(jù)*/

)

)

while(sl!=EOF)/*文件datal的剩余數(shù)據(jù)寫(xiě)入文件data*/

{

fprintf(fw,*%d*,il);

sl=fscanf(frl,"%d",&i1);

)

while(s2!=E0F)/*文件data2的剩余數(shù)據(jù)寫(xiě)入文件data*/

(

fprintf(fw,*%d",⑵;

s2=fscanf(fr2,&i2);

)

fcloseal1();

)

4.輸入N個(gè)學(xué)生的信息(包括:學(xué)號(hào),姓名,5科成績(jī),總分),統(tǒng)計(jì)所有學(xué)生的總分,存入二進(jìn)制

文件stu_sc.dat中。然后讀取該文件,查找總分最高的學(xué)生,并輸出該生的所有信息。

#include<stdio.h>

^defineN3

typedefstruct{

intnum;

charname;

intscore[5];

inttotal;

}STUDENT;

voidmain()

(

FILE*fp;

STUDENTst,smax;

inti,j;

fp=fopen(,zstu_sc.dat","wb+”);

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

{

printf("輸入學(xué)生的學(xué)號(hào)和5門課成績(jī):");

scan&st.num);

st.total=0;

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

(

scanf(W,&st.score[j]);

st.total+=st.score[j];

)

fwrite(&st,sizeof(STUDENT),1,fp);

)

rewind(fp);

fread(&smax,sizeof(STUDENT),1,fp);

while(feof(fp))

fread(&st,sizeof(STUDENT),l,fp);

if(st.total>smax.total)

smax=st;

)

printf(“%d”,smax.num);

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

printf(^d*.smax.score[j]);

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論