c语言作业题五六章答案,C语言程序设计 科学出版社 曹计昌  习题答案 4,5,6章...

4.1

#include

void main(void)

{

float a,b,c;

printf("Please enter the score of A:\n");

scanf("%f",&a);

printf("Please enter the score of B:\n");

scanf("%f",&b);

printf("Please enter the score of C:\n");

scanf("%f",&c);

if((a-b)*(a-c)<0)

printf("A gets the score %.1f",a);

if((b-a)*(b-c)<0)

printf("B gets the score %.1f",b);

if((c-a)*(c-b)<0)

printf("C gets the score %.1f",c);

}

4.3

#include

int mdays(int y,int m)

{

if (m==2) return (y%4==0 &&

(y%100==0 || y%400==0))?29:28;

else if (m==4 || m==6 || m==9 || m==11) return 30;

else return 31;

}

main()

{

int y,m,d,days;

printf("Enter year:");

scanf("%d",&y);

printf("Enter month:");

scanf("%d",&m);

printf("Enter day:");

scanf("%d",&d);

days=d;

while(m>1){days+=mdays(y,m-1);m--;}

printf("%d\n",days);

}

4.4  if方法:

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

float x = 0;

printf("input the salary\n");

scanf("%f",&x);

if(x<0)

printf("wrong\n");

else if(x>0 &&

x<1000)

printf("0\n");

else if(x<2000)

printf("%f\n",x*0.05);

else if(x<3000)

printf("%f\n",x*0.1);

else if(x<4000)

printf("%f\n",x*0.15);

else if(x<5000)

printf("%f\n",x*0.2);

else

printf("%f\n",x*0.25);

return 0;

}

Case方法:

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

float x ;

printf("input the salary\n");

scanf("%f",&x);

int xCase = 0;

xCase = (int)(x/1000.0);

switch(xCase)

{

case 0:

printf("0\n");

break;

case 1:

printf("%f\n",x*0.05);

break;

case 2:

printf("%f\n",x*0.1);

break;

case 3:

printf("%f\n",x*0.15);

break;

case 4:

printf("%f\n",x*0.2);

break;

default:

printf("%f\n",x*0.25);

}

return 0;

}

4.7

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

char *sa;

char c;

int i = 0,j = 0,k = 0;

do

{

c= getchar_r();

sa[i++] = c;

}while(c != '\r');

for(i=0;sa[i+1];i++)

{

for(j = i+1;sa[j];j++)

{

if( sa[i]==sa[j] && sa[j] =='

')

{

for(k=j;sa[k];k++)

sa[k] = sa[k+1];

j--;

}

}

}

for(k=0;sa[k];k++)

printf("%2c",sa[k]);

return 0;

}

4.10

#include

#define EPS 1e-5

void main()

{

int s=1;

float n=1.0,t=1.0,pi=0;

while(1.0/n>=EPS)

{

pi=pi+t;

n=n+2;

s=s*(-1);

t=s/n;

}

pi=pi*4;

printf("pi=%10.6f\n",pi);

}

4.11

#include

int main()

{

int a,b,num1,num2,temp;

printf("Input a & b:");

scanf("%d%d",&num1,&num2);

if(num1>num2)

{

temp=num1; num1=num2; num2=temp;

}

a=num1; b=num2;

while(b!=0)

{

temp=a%b;

a=b;

b=temp;

}

printf("The GCD of %d and %d is: %d\n",num1,num2,a);

printf("The LCM of them is: %d\n",num1*num2/a);

}

4.13

#include "stdafx.h"

#include

int Primes(int x);//判断素数函数

int main(int argc, char* argv[])

{

int i,j;

int num;

for(num = 4;num<=100;num++)

{

if(num%2 == 0)

{

for(i=1;i

{

for(j=1;j

{

if(num == i+j)

{

if(Primes(i) && Primes(j))

{

printf("%d=%d+%d\n",num,i,j);

}

}

}

}

}

}

return 0;

}

int Primes(int x)

{

int i ;

int n = 0;

for(i = 1;i<=x;i++)

{

if(x%i==0)

n++;

}

if(n==2)

return 1;

else

return 0;

}

4.17

#include

void main(void)

{

int c,i;

for(i=1,c=32;c<=126;++i,++c)

{

printf("%3d%-5c",c,c);

if(!(i%8))

printf("\n");

}

}

4.18

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

int x;

int i,n,sum;

printf("input 10 numbers\n");

for(i = 0,n = 0,sum = 0;i<10;i++)

{

scanf("%d",&x);

if(x >0)

{

sum+=x;

n++;

}

}

if(n)

printf("numbers = %d,average = %f\n",n,1.0*sum/n);

return 0;

}

5.5

Extern和static存储类型的区别:

Static型外部变量和extern型外部变量的唯一区别是作用域的限制。静态外部变量只能作用于定义它的文件,其他文件中的函数不能使用。Extern型外部变量的作用域可以扩大到整个程序的所有文件。

Static和auto存储类型的区别:

静态局部变量和自动变量有根本性的区别。由于静态局部变量在程序执行期间不会消失,因此,它的值有连续性。当退出块时,它的值能保存下来,以便再次进入块时使用,而自动变量的值在退出块时都丢失了。如果定义时静态局部变量有显示初始化,只在第一次进入时执行一次赋初值操作,而自动变量每次进入时都要执行赋初值操作。

5.6

不能。

在C语言中,参数的传递方式是“值传递”,即把实参的值拷贝到参数的存储区中。因此,swap()函数交换的只是实参的本地拷贝,代表swap()实参的变量并没有被改变。

5.7 6,12

5.10

#include

double sum_fac(int n)

{

double s=0;

int i;

double fac=1.0;

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

{

fac*=1.0/i;

s+=fac;

}

return s;

}

void main(void)

{

int n;

printf("Please enter the

integer n:");

scanf("%d",&n);

printf("the sum is %lf\n",sum_fac(n));

}

5.17

#include

void reverse()

{

char ch= getchar_r();

if(ch!='\n')

{

reverse();

putchar(ch);

}

}

int main()

{

reverse();

printf("\n");

return

0;

}

6.1

(1)正确

(2)错误,不需要加“;”

(3)错误,“ident”与“(”之间不能有空格

(4)错误,宏名不能是关键字“void”

(5)错误,将x*y改成((x)*(y))

6.4

将会导致变量blue的重复定义

6.5

(1)#define NO 0

(2)#include “common.h”

(3)#line 3000

(4)#undef TRUE

#define TRUE 1

(5)#if TRUE !=0

#define FALSE 0

#else

#define FALSE 1

#endif

(6)#ifndef SIZE

assert(0);

#else

assert(SIZE<10&&SIZE>1);

#endif

(7)#define SQUARE_VOLUME(x) (x)*(x)*(x)

6.10

#include

#define pi 3.1415926

#define BALL_VOLUME(r) ((4/3)*pi*(r)*(r)*(r))

int main()

{

int r;

float v[11];

for(r=1;r<11;r++)

{

v[r]=float(BALL_VOLUME(r));

printf("r=%2d v=%.2f\n",r,v[r]);

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值