大一c課后習題答案_第1頁
大一c課后習題答案_第2頁
大一c課后習題答案_第3頁
大一c課后習題答案_第4頁
大一c課后習題答案_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章

4.8設圓半徑r=1.5,圓柱高h=3,求圓周長、圓面積、圓球表面積、圓

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

有文字說明,取小數(shù)點后2位數(shù)字。

#defineP3.1415926

Sinclude<stdio.h>

voidmain()

{floath,r,1,s,sq,vq,vz;

printf(“請輸入圓半徑r,圓柱高h:〃);

scanf&r,&h);

1=2.0*P*r;

s=P*r*r;

sq=4*p*r*r;

vq=4.0/3.0*P*r*r*r;

vz=P*r*r*h;

printf(〃圓周長為:1=%6.2f\n〃,1);

printf(〃圓面積為:s=%6.2f\n〃,s);

printf(〃圓球表面積為:sq=%6.2f\n〃,sq);

printf(〃圓球體積為:vq=%6.2f\n〃,vq);

printf(〃圓柱體積為:vz=%6.2f\n〃,vz);

運行結果:

請輸入圓半徑r,圓柱高h:1.53

圓周長為:1=9.42

圓面積為:s=7.07

圓球表面積為:sq=28.27

圓球體積為:vq=14.14

圓柱體積為:vz=21.21

Pressanykeytocontinue

4.9輸入一個華氏溫度,要求輸出攝氏溫度。公式為c=%9(F-32)輸出

要有文字說明,取2位小數(shù)。

Sinclude<stdio.h>

voidmain()

{floatc,f;

printf("請輸入一個華氏溫度:");

scanf&f);

c=5.0/9.0*(f-32);

printf("攝氏溫度為%5.2f\n",c);

)

運行結果:

請輸入一個華氏溫度:2O

攝氏溫度為-6.67

Pressanykeytocontinue

4.10編程序,用getchar函數(shù)讀入兩個字符給cl,c2,然后分別用

putchar函數(shù)和printf函數(shù)輸出這兩個字符。思考以下問題:

(1)變量cl、c2應定義為字符或整型?或二者皆可?

(2)要求輸出cl和c2值的ASCII碼,應如何處理?用putchar函數(shù)

還是printf函數(shù)?

(3)整形變量與字符變量是否在任何情況下都可以互相代替?如:

charcl,c2;與intel,c2是否無條件的等價?

(1)

Winclude<stdio.h>

voidmain()

(

charcl,c2;

printf(〃請輸入兩個字符cl,c2:〃);

cl=getchar();

c2=getchar();

printf(〃用putchar語句輸出結果〃);

putchar(cl);

putchar(c2);

printf("\n");

printf("用printf語句輸出結果”);

printf(//%c%c\n,z,cl,c2);

運行結果:

請輸入兩個字符cl,c2:as

用putchar語句輸出結果as

用printf語句輸出結果as

Pressanykeytocontinue

Sinclude<stdio.h>

voidmain()

(

charcl,c2;

printf(〃請輸入兩個字符cl,c2:〃);

scanf,&cl,&c2);

cl=getchar();

c2=getchar();

printf(〃按ASCH碼輸出結果為:\n〃);

printf(〃%d,%d\n,z,cl,c2);

)

運行結果:

請輸入兩字符cl,c2:a,s

按ASCII碼輸出結果為:

97,115

Pressanykeytocontinue

#include<stdio.h>

voidmain()

{intcl,c2;

printf("請輸入兩個整數(shù)cl,c2:");

scanf("%d%d”,&cl,&c2);

printf("按字符輸出結果:\n");

printf(,/%c%c\nz,,cl,c2);

printf("按ASCH碼輸出結果為:\n");

printf(//%c%c\n,,,cl,c2);

運行結果:

請入兩個整數(shù)cl,c2:97,98

按字符輸出結果:

a,b

按ASCII碼輸出結果為:

97,98

Pressanykeytocontinue

#include<stdio.h>

voidmain()

{charcl,c2;

intal,a2;

printf(〃請輸入兩個字符cl,c2:〃);

scanf(,,%c%c”,&cl,&c2);

al=cl;

a2=c2;

printf(〃按字符輸出結果:\n〃);

printf(〃%c%c\n〃,al,a2);

printf(〃按整數(shù)輸出結果為:\n〃);

printf(,z%d%d\nz,,cl,c2);

運行結果:

請輸入兩個字符cl,c2:ab

按字符輸出結果:

ab

按整數(shù)輸出結果為:

9798

Pressanykeytocontinue

第五章

5.3寫出下列各邏輯表達式的值.設a=3,b=4,c=5.

(l)a+b>c&&b==c

(2)a11b+c&&b-c

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

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

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

解:

(1)0;(2)1;(3)1;(4)0;(5)1;

5.5有一個函數(shù):

xx<l

=

y(2x-lIWXGO

3x-llx^lO

寫一段程序,輸入x,輸出y.

解:

Sinclude<stdio.h>

voidmain()

{intx,y;

printf("輸入:x=");

scanf&x);

if(x<l)

y=x;

elseif(x<10)

y2*x-l;

else

y=3*x-ll;

printf("輸出:y=");

printfC%d\nz,,y);

)

運行結果:

輸入:x=T

輸出:y=T

Pressanykeytocontinue

輸入:x=5

輸出:y=9

Pressanykeytocontinue

輸入:x=12

輸出:y=25

Pressanykeytocontinue

5.6給出一百分制成績,要求輸出成績等級'A、B、'U、、E。90分以上為

A,80~89分為B,70~79為C,60~69為D,60分以下為E。

Sinclude<stdio.h>

voidmain()

{floatx;

printf(〃請輸入學生成績:〃);

scanf&x);

while(x>100|x<0)

{printf(〃輸入錯誤,請重輸:〃);

scanf&x);

}

if(100>x>90)

printf(〃相應等級是:A〃);

elseif(x>80)

printf(〃相應等級是:B〃);

elseif(x>70)

printf(〃相應等級是:C");

elseif(x>60)

printf("相應等級是:D〃);

else

printf(〃相應等級是:E〃);

運行結果:

請輸入學生成績:111

輸入錯誤,請重輸:88

相應等級是:B

Pressanykeytocontinue

5.7給一個不多于5位的正整數(shù),要求:

1.求出它是幾位數(shù);2.分別輸出每一位數(shù);3.按逆序輸出各位數(shù)字,如原數(shù)為321,應輸出

123

Sinclude<stdio.h>

ttinclude<math.h>

voidmain()

{longintnum;

intge,shi,bai,qian,wan,place;

printf(〃請輸入一個整數(shù)((T99999):〃);

scanf(,z%ld/z,&num);

if(num>9999)

place=5;

elseif(num>999)

place=4;

elseif(num>99)

placets;

elseif(num>9)

place=2;

else

place=l;

printf(〃位數(shù)二%d\n〃,place);

printf(〃每位數(shù)字為:〃);

wan=num/10000;

qian(int)(num-wan*10000)/I000;

bai=(int)(num-wan*10000-qian*1000)/100;

shi=(int)(num-wan*10000-qian*1000-bai*100)/10;

ge=(int)(num-wan*10000-qian*1000-bai*100-shi*10);

switch(place)

{case5:printf(〃%d,%d,%d,%d,%d〃,wan,qian,bai,shi,ge);

printf(〃\n反序函數(shù)為:〃);

printf(/z%d%d%d%d%d\nz,,ge,shi,bai,qian,wan);

break;

case4:printf(〃%d,%d,%d,%d〃,qian,bai,shi,ge);

printf(〃\n反序函數(shù)為:〃);

printf(/z%d%d%d%d\nz/,ge,shi,bai,qian);

break;

case3:printf(zz%d,%d,%d〃,bai,shi,ge);

printf(〃\n反序函數(shù)為:〃);

printf(,,%d%d%d\n/z,ge,shi,bai);

break;

case2:printf(z/%d,%dz,,shi,ge);

printf(〃\n反序函數(shù)為:〃);

printf(,,%d%d\nz/,ge,shi);

break;

case1:printf(〃%d〃,ge);

printf(〃\n反序函數(shù)為:〃);

printf(z,%d\n,z,ge);

break;

)

}

運行結果:

請輸入一個整數(shù)(0~99999):98765

位數(shù)=5

每位數(shù)字為:9,8,7,6,5

反序函數(shù)為:56789

Pressanykeytocontinue

第六章

6.2輸入一行字符,分別統(tǒng)計出其中英文字符、空格、數(shù)字和其他字符個數(shù)。

#include<stdio.h>

voidmain()

charc;

intlettes=0,space=O,digit-O,other=0;

while((c=getchar())!=,\n,)

if((c>=,a&&c<-z')||(c>=*A,&&c<=,Z'))

lettes++;

elseif(c==,')

space++;

elseif(c>='O'&&c<='9')

digit++;

else

other++;

)

printf("字母數(shù):%d\n空格數(shù):%d\n數(shù)字數(shù):%d\n其他字符

數(shù):為d\n”,lettes,space,digit,other);

)

運行結果:

abc123""

字母數(shù):3

空格數(shù):1

數(shù)字數(shù):3

其他字符數(shù):2

Pressanykeytocontinue

6.6輸入所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個3位數(shù),其各位數(shù)字立

方和等于該數(shù)本身。

#include<stdio.h>

voidmain()

(

inti,j,k,n;

printf(""narcissusnumbersare");

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

(

i=n/100;

j=n/10-i*10;

k=n-i*100-j*10;

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

printf('%d”,n);

)

printf('\n");

)

運行結果:

narcissusnumbersarel53370371407

Pressanykeytocontinue

6.7一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)”。

#include<stdio.h>

voidmain()

(

intn,s,i;

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

{s=0;

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

if((n%i)==0)

s=s+i;

if(s==n)

(

printf(z,%d,itsfactorsare”,n);

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

if(n%i==0)

printf(〃%d,〃,i);

printf(〃\n〃);

)

運行結果:

6,itsfactorsarel,2,3/

28,itsfactorsarel7247,14,

496,itsfactorsarel,2,4,8,16,31,62,124,248,

Pressanykeytocontinue

6.4求l!+2!+3!+…+20!

#include<stdio.h>

voidmainO

(

floats=0,t=l;

intn;

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

(

t二t*n;

s=s+t;

)

printf(〃1!+2!+3!+...+20!=%e\n,z,s);

)

運行結果:

l!+2!+3!+...+20!=2.561327e+018

Pressanykeytocontinue

6.5

#include<stdio.h>

voidmain()

intnl=100,n2=50,r)3=10;

floatk;

floatsi0,s20,s3-0;

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

sl=sl+k;

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

s2=s2+k*k;

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

s3=s3+l/k;

printf(,,sum=%8.2f\n〃,sl+s2+s3);

)

運行結果:

sum=47977.93

Pressanykeytocontinue

第七章

7.2用選擇法對10個整數(shù)進行排序

Sinclude<stdio.h>

voidmainO

inta[ll],i,j,k,x;

printf("enterdata:\nz,);

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

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

scanf&a[i]);

)

printf(〃\n〃);

printf(〃\nTheoringinalnumbers:\nz/);

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

printfC%5d;

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

k=i;

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

if(a[j]<a[k])k=j;

x=a[i];a[i]=a[k];a[k]=x;

printf(/z\nThesortednumbers:\n?/);

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

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

printf("\n");

)

運行結果:

enterdata:

a[l]=l

a⑵=5

a[3]=44

a[4]=23

a[5]=15

a[6]=18

a[7]=14

a[8]=36

a[9]=34

a[10]=32

Theoringinalnumbers:

154423151814363432

Thesortednumbers:

151415182332343644

Pressanykeytocontinue

7.3求一個3*3的整型矩陣對角線元素之和

Sinclude<stdio.h>

voidmain()

(

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

inti,j:

printf("enterdata:\n");

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

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

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

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

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

printf(//sum=%6d//,sum);

)

運行結果:

enterdata:

134567891

sum=8Pressanykeytocontinue

7.4有一個已排序的數(shù)組,今輸入一個數(shù),要求按原來的排序規(guī)則將它插入數(shù)組

按升序排序

ttinclude<stdio.h>

voidmain()

(

inta[ll]={l,2,3,4,5,50,60,70,80,100};

intn,i,j;

printf(,zarraya:\n〃);

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

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

printf(〃\n〃);

printf(zzintsertdata:\n,z);

scanf&n);

if(n>a[9])

a[10]=n;

else

(

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

if(a[i]>n)

(

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

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

a[i]=n;

break;

)

)

printf(z,nowarraya:\n〃);

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

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

)

運行結果:

arraya:

1234550607080100

intsertdata:

33

nowarraya:

123453350607080lOOPressanykeyto

continue

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

1

11

121

1331

14641

Sinclude<stdio.h>

#definenil

voidmain()

inti,j,a[n][n];

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

(

a[i][1]=1;

a[i][i]=l;

)

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

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

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

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

{

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

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

printf("\n");

)

printf(〃\n");

運行結果:

1

11

121

1331

14641

15101051

1615201561

172135352171

18285670562881

193684126126843691

Pressanykeytocontinue

第八章

8.2求方程ax*x+bx+c=0的梗,用3個函數(shù)分別求當b*b-4ab大于0、

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

源代碼:

ttinclude"stdio.h〃

Sinclude"math.h〃

floatdisc,p,q,xl,x2;

voidmain()

{

voidgreater_than_zero(float,float);

voidequal_to_zero(float,float);

voidsmaller_than_zero(float,float);

floata,b,c;

printf(〃\n輸入a,b,c:〃);

scanfC%f,%f,%fz/,&a,&b,&c);

printf(〃方程:%5.2f*x*x+%5.2f*x+%5.2f=0z,,a,b,c);

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

printf(〃\n結果:\n〃);

if(disc>0)

(

greater_than_zero(a,b);

printf(/,xl=%f\t\tx2=%f\n,/,xl,x2);

}

elseif(disc==0)

{

equal_to_zero(a,b);

printf(,,xl=%f\t\tx2=%f\nz/,xl,x2);

)

else

{

smaller_than_zero(a,b);

printf(z,xl=%f+fi\tx2=%f-%fi\nz,,p,q,p,q);

voidgreater_than_zero(floata,floatb)

(

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

x2:(-b-sqrt(disc))/(2*a);

)

voidequal_to_zero(floata,floatb)

{

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

)

voidsmaller_than_zero(floata,floatb)

p二-b/(2*a);

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

運行結果:

輸入a,b,c:2,5,l

方程:2.00*x*x+5.00*x+1.00=0

結果:

xl=-0.219224x2=-2.280777

Pressanykeytocontinue

8.3編寫一個判素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否素數(shù)

的信息。

源代碼:

Sinclude"stdio.h〃

voidmain()

(

intprime(int);

intn;

printf(〃\n輸入一個數(shù):〃);

scanf(〃刎〃,&n);

if(prime(n))

printf(,?\n是素數(shù)\n〃);

else

printf(〃\n不是素數(shù)\n〃);

}

intprime(intn)

(

intflag=l,i;

for(i=2;i<n/2&&flag=l;i++)

if(n%i==0)

flag=0;

return(flag);

)

運行結果:

輸入一個數(shù):47

是素數(shù)

Pressanykeytocontinue

8.4編寫一個函數(shù),使給定的一個二維數(shù)組(3*3)轉置,即行列換行。

源代碼

^include"stdio.h"

voidmain()

(

inti,j,t,s[3][3];

printf("inputs:\n");

for(i0;i<3;i++)

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

scanf(zz%d,%d”,&s[i][j]);

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

(

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

printf("舫d",s[i][j]);

printf("\rT);

)

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

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

(

t=s[i][j];

s[j][i]=t;

}

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

(

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

printf("%5d",s[i][j]);

printf('\n");

}

)

運行結果:

inputs:

123

456

789

123

456

789

147

258

369

Pressanykeytocontinue

8.5編寫一個函數(shù),輸入一個字符串按反序存放,在主函數(shù)輸入和輸

出字符串

源代碼

Sinclude"stdio.h〃

Sinclude<string.h>

voidmain()

(

voidfx(chars[]);

chars[100];

printf(z,inputstrint:\nz,);

gets(s);

fx(s);

puts(s);

voidfx(chars[])

(

chart;

inti,j;

for(i=0,j=strlen(s);i<(strlen(s)/2);i++,j--)

(

t=s[i];

s[j-l]=t;

}

運行結果:inputstrint:

abcdefg

gfedcba

Pressanykeytocontinue

第9章

9.2輸入兩個整數(shù),求他們相除的余數(shù)。用帶參數(shù)的宏來實現(xiàn)

源代碼:

Sinclude<stdio.h>

SdefineXCYS(a,b)((a)%(b))

voidmain()

{

inta,b;

printf(〃輸入兩個整數(shù)a,b:〃);

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

printf(〃他們相除的余數(shù)是%d\n〃,XCYS(a,b));

運行結果:

輸入兩個整數(shù)a,b:9,2

他們相除的余數(shù)是1

Pressanykeytocontinue

9.8分別用函數(shù)和參數(shù)的宏,從3個數(shù)中找出最大數(shù)

(1)源代碼:

#include<stdio.h>

voidmain()

(

intmax(intx,inty);

inta,b,c;

printf(〃輸入3個整數(shù)a,b,c:〃);

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

printf("MAX二%d\n〃,max((a,b),c));

)

max(intx,inty)

intz;

z=x>y?x:y;

return(z);

運行結果:

輸入3個整數(shù)a,b,c:2,4,7

MAX=7

Pressanykeytocontinue

(2)源代碼:

Sinclude<stdio.h>

#defineMAX(a,b)((a)>(b)?(a):(b))

voidmain()

inta,b,c;

printf(〃輸入3個整數(shù)a,b,c:〃);

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

printf("MAX=%d\n〃,MAX(MAX(a,b),c));

運行結果:

輸入3個整數(shù)a,b,c:3,6,8

MAX=8

Pressanykeytocontinue

10.3輸入10個整數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后的一

個數(shù)對換。編寫3個函數(shù):(1)輸入10個數(shù)(2)進行處理(3)輸出10個數(shù)

源程序:

#include<stdio.h>

voidmain()

{

voidinput(int*);

voidmax_min_value(int*);

voidoutput(int*);

intnumber[10];

input(number);

max_min_value(number);

output(number);

voidinput(intnumber[])

inti;

printf(〃輸入10個數(shù):〃);

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

scanf(z,%dz,,6number[i]);

}

voidmax_min_value(intnumber[])

(

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[0];number[0]=*min;*min=temp;

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

return;

)

voidoutput(intnumber[])

(

int*p;

printf(〃輸出:”);

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

printf(z,%d",*p);

printf("\n");

)

運行結果:

(1)

輸入10個數(shù):22195236478

輸出/p>

Pressanykeytocontinue

(2)

輸入10個數(shù):51892346789

輸出/p>

Pressanykeytocontinue

10.11在主函數(shù)中輸入10個等長的字符串。用另一個函數(shù)對它們進行排序。然

后在主函數(shù)輸出這10個已排好序的字符串。

源程序:

#include"stdio.h"

#include"string.h"

voidmain()

voidsort(char(*p)[6]);

inti;

charstr[10][6];

char(*p)[6];

printf(〃輸入10個字符串\n〃);

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

scanfstr[i]);

p=str;

sort(p);

printf(〃排序號的字符串\n〃);

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

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

)

voidsort(char(*s)[6])

(

inti,j;

chartemp[6],*t=temp;

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

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

if(strcmp(s[j],s[j+l])>0)

(

strcpy(t,s[j]);

strcpy(s[j],s[+j+l]);

strcpy(s[j+l],t);

運行結果:

輸入10個字符串

aaaaa

sssss

ddddd

eeeee

qqqqq

WWW

zzzzz

ggggg

hhhhh

yyyyy

排序號的字符串

aaaaa

ddddd

eeeee

ggggg

hhhhh

qqqqq

sssss

wwwww

yyyyy

zzzzz

Pressanykeytocontinue

10.18編寫一個程序,打入月份號,輸出該月的英文用名。

源代碼:

#include<stdio.h>

voidmain()

(

char*month_name[13]={/zi1legal

month,January,February,March,April,May,June,July,Augu

st","September","October","November","December"};

intn;

printf(z,inputmonth:z,);

scanf(〃%d〃,&n);

if((n<=12)&&(n>=l))

printf(/zItis%s.\n,z,*(month_name+n));

else

printf(z,Itiswrong.\n〃);

}運行結果:

(1)

inputmonth:2

ItisFebruary.

Pressanykeytocontinue

(2)

inputmonth:8

ItisAugust.

Pressanykeytocontinue

#include<conio.h>

#include<stdio.h>

#defineN20

voidfun(int*a,intm)

inti,n=0,*p;

for(i=l,p=a;p〈a+m;p++,i++)

{n+=i;

*p=n;

)

for(pa;p<a+m;p++)

printf(級5d〃,*p);

}

mainO

(

intk=6;

intb[N];

fun(b,k);

用函數(shù)指針變量作參數(shù),求最大值、最小值和兩數(shù)之和

Sinclude"stdio.h〃

voidmainO

(

inta,b,max(int,int),

min(int,int),add(int,int);

voidprocess(int,int,int(*fun)());

printf(〃輸入兩個數(shù):〃);

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

process(a,b,max);

process(a,b,min);

process(a,b,add);

)

voidprocess(intx,inty,int(*fun)0)

(

intresult;

result、(*fun)(x,y);

printfresult);

)

max(intx,inty)

(

printf("max二〃);

return(x>y?x:y);

}

min(intx,inty)

(

printf(〃min=〃);

return(x<y?x:y);

add(intx,inty)

(

printf(〃sum=〃);

return(x+y);

用函數(shù)指針變量作參數(shù),求兩數(shù)之和,之差,之乘,之除

源代碼:

ttinclude"stdio.h〃

voidmain()

(

inta,b,add(int,int),ajj(int,int),acc(int,int),ac(int,int);

voidprocess(int,int,int(*fun)());

printf(〃輸入兩個數(shù):〃);

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

process(a,b,add);

process(a,b,ajj);

process(a,b,acc);

process(a,b,ac);

}

voidprocess(intx,inty,int(*fun)())

(

intresult;

result=(*fun)(x,y);

printfC%d\n,z,result);

)

add(intx,inty)

(

printf(〃相加=〃);

return(x+y);

)

ajj(intx,inty)

(

printf(〃相減=〃);

return(x-y);

}

acc(intx,inty)

(

printf(〃相乘=");

return(x*y);

)

ac(intx,inty)

printf("相除=");

return(x/y);

)

運行結果:

輸入兩個數(shù):8,4

相加=12

相減=4

相乘=32

相除=2

Pressanykeytocontinue

1L1定義一個結構體變量(包括年月日)。計算該日在本年中第幾天?注意閏年

問題

源代碼:

#include<stdio.h>

struct

(

intyear;

intmonth;

intday;

}date;

voidmain()

(

inti,days;

intday_tab[13]={0,31,28,31,30,31,30,31z31,30,31,30,31};

printf("輸入年月日

scanf("%d,%d,%cT,&date.year,&date.month,&date.day);

days=O;

for(i=l;i<date.month;i++)

days=days+day_tab[i];

days=days+date.day;

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

date.month>=3)

days=days+l;

printf("輸出結果:");

printf("%d/%disthe%dthdayin%d.\n",date.month,date.day,days,date.year);

}

運行結果:

(1)

輸入年月日:2006,10,l

輸出結果:10/1isthe274thdayin2006.

Pressanykeytocontinue

輸入年月曰:2010,5,26

輸出結果:%26isthe146thdayin2010.

Pressanykeytocontinue

11.3編寫一個函數(shù)print,打印一個學生的成績數(shù)組,該數(shù)組中有5個學生的數(shù)據(jù)

計錄,每個記錄包括num;name;score[3];用主函數(shù)記錄這些數(shù)據(jù),用print函數(shù)輸

出這些記錄

源代碼:

#include<stdio.h>

WdefineN5

structstudent

(

charnum[6];

charname[8];

intscore[4];

}stu[N];

voidmain()

(

voidprint(structstudentstu[6]);

inti,j;

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

(

printf("\n輸入學生信息%d:\n",i+l);

printf("學號

scanf("%s",stu[i].num);

printf("姓名門;

scanf("%s",stu[i].name);

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

(

printf("成績%d:",j+l);

scanf("%d"z&stu[i].score[j]);

}

printf("\n");

}

printf("輸出結果");

print(stu);

}

voidprint(structstudentstu[6])

(

inti,j;

printf("\n學號姓名成績1成績2成績3\n");

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

(

printf("%5s%10s"zstu[i].num,stu[i].name);

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

printf("%9d”,stu[i].score[j]);

printf("\n");

}

)

運行結果:

輸入學生信息1:

學號.:101

姓名:li

成績1:99

成績2:99

成績3:99

輸入學生信息2:

學號.:102

姓名:ma

成績1:85

成績2:85

成績3:85

輸入學生信息3:

學號.:103

姓名:wu

成績1:90

成績2:90

成績3:90

輸入學生信息4:

學號.:104

姓名:hu

成績1:80

成績2:80

成績3:80

輸入學生信息5:

學號.:105

姓名:an

成績1:75

成績2:75

成績3:75

輸出結果

學號姓名成績1成績2成績3

101li999999

102ma858585

103wu909090

104hu808080

105an757575

Pressanykeytocontinue

百錢買百雞,雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;問雞翁、母、雛各兒何?

程序:

#include<stdio.h>

voidmain()

{intx,y,z;

for(x=0;x<=19;x++)

for(y=0;y<=33;y++)

{z=100-x-y;

if(15*x+9*y+z==300)

printf("雞翁=%d雞母=%d雞雛=%d\n”,x,y,z);)

)

運行結果:

雞翁=0雞母=雞雛=25

雞翁=4雞母=雞雛=18

雞翁=8雞母=雞雛=11

雞翁=12雞母=雞雛=4

Pressanykeytocontinue

1、某班有3個學生,每個學生3門功課,輸入成績,計算每個學生的總分,平均分并輸出

成績。

程序:

#include<stdio.h>

voidmain()

{

ints[3][5],i,j;

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

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

scanf&s[i][j]);

printf(〃數(shù)學物理英語總分平均\n〃);

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

(

s[i][3]=s[i][4]=0;

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

s[i][3]+=s[i][j]:

s[i][4]=s[i][3]/3;

)

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

(

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

printf(級d\t",s[i][j]);

printf('\n");

)

運行結果;

111

222

333

數(shù)學物理英語總分平均

11131

22262

33393

Pressanykeytocontinue

#include<stdio.h>

voidmain()

ints[5],j;

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

scanf("%d",&s[j]);

(

s[3]=s[4]=0;

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

s[3]+=s[j];

s[4]=s⑶a;

)

printf("數(shù)學\t物理\t英語\t總分\t平均\n");

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

printf("%d\t",s[j]);

printf("\n");

)

}

運行結果;

111

數(shù)學物理英語總分平均

11131

Pressanykeytocontinue

做一個循環(huán)顯示菜單,輸入相應數(shù)值,會顯示相應的文字。

菜單

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

1輸入數(shù)據(jù)

2計算

3排序

4輸出

0退出

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

請輸入你的選擇(0~4)

#include<stdio.h>

voidmain()

intn=l;

while(n!=0)

printf("\t\t菜單\n");

pHntf(”\t*******************\n"),

printf("\t1.輸入數(shù)據(jù)\n");

printf("\t2.計算\n“);

printf("\t3.排序\n“);

printf("\t4.輸出\n“);

printf("\t0,退出\n“);

printf("\t*******************\n”).

printf("\t請輸入你的選擇(0~4):");

scanf("%d"z&n);

switch(n)

casel:printf("輸入數(shù)據(jù)\n”);break;

case2:printf("計算\n");break;

case3:printf("排序\n");break;

case4:printf("輸入\n");break;

caseO:break;

default:printf("error\n");

)

)

}

#include<stdio.h>

voidmain()

intn=l;

printf(〃\t\t菜單\n〃);

printf(〃\t*******************\n〃);

printf(,z\t1.輸入數(shù)據(jù)\n〃);

printf(〃\t2.計算\n〃);

printf(,z\t3.排序\n〃);

printf(〃\t4.輸出\n〃);

printf(〃\t0.退出\n〃);

printf(〃\t*******************\n〃);

printf(〃\t請輸入你的選擇(0~4):〃);

scanf&n);

if(n=0)

printf(〃輸入數(shù)據(jù)\n〃);

elseif(n=l)

printf(〃計算\n〃);

elseif(n==2)

printf(〃排序\n〃);

elseif(n=3)

printf(〃輸入\n〃);

else

printf(〃退出\n〃);

做一個循環(huán)顯示菜單,輸入相應數(shù)值,進行計算輸出并會顯示相應的文字。

菜單

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

1輸入數(shù)據(jù)

2計算

3輸出

0退出

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

源代碼:

(1)

#include<stdio.h>

voidmain()

intn=l;

while(n!=0)

ints[3][5],i,j;

printf("\t\t菜單\n");

printf("\t*******************\n〃);

printfC\t1.輸入數(shù)據(jù)\n");

printf("\t2.進行計算\n");

printf("\t3.輸出\n");

printf("\t0.退出\n");

printf(''\t*******************\n'');

printf("\t請輸入你的選擇(0~3):”);

scanf&n);

switch(n)

case1:printf("輸入數(shù)據(jù)\rT);

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

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

scanf&s[i][j]);

break;

case2:printf(“計算\n");

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

s[i][3]=s[i][4]=0;

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

s[i][4]=s[i][3]/3;

break;

case3:printf("輸出結果\n");

printf("數(shù)學物理英語總分平均\n");

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

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

printfs[i][j]);

printf('\n");

break;

case0:break;

default:printf(z/error\nz/);

運行結果:

菜單

1.輸入數(shù)據(jù)

2.進行計算

3輸出

0.退出

請輸入你的選擇(0~3):1

輸入數(shù)據(jù)

333

888

444

菜單

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

1.輸入數(shù)據(jù)

2.進行計算

3.輸出

0.退出

請輸入你的選擇(0~3):2

計算

菜單

1.輸入數(shù)據(jù)

2.進行計算

3.輸出

0.退出

請輸入你的選擇(0~3):3

輸出結果

數(shù)學物理英語總分平均

33393

888248

444124

菜單

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

1.輸入數(shù)據(jù)

2.進行計算

3.輸出

0.退出

請輸入你的選擇(0~3):0

Pressanykeytocontinue

(2)

#include<stdi

溫馨提示

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

評論

0/150

提交評論