《C语言程序设计》第5章习题答案

《C语言程序设计》第5章习题答案
《C语言程序设计》第5章习题答案

1.选择题

(1)C(2)D(3)C(4)B(5)A(6)A(7)A(8)B(9)A(10)B(11)A(12)A 2.填空题

(1)整型

(2)值传递

地址传递

(3)全局变量

局部变量

(4)自动变量

静态变量

寄存器变量

外部变量

(5)自动变量

(6)15

300

(7)8

121

(8)x=3,y=4,n=7

(9)5 6

3.程序设计题

(1)

#include

int gcd_recursion(int a,int b);

void main()

{

int i,j;

puts("\nPlease enter 2 integer");

scanf("%d,%d",&i,&j);

if(i<0||j<0)

{

puts("\nData Error!Please enter 2 integer");

scanf("%d, %d",&i,&j);

}

else

printf("gcd(%d,%d)=%d",i,j,gcd_recursion(i,j));

}

int gcd_recursion(int a,int b)

{ int c,d;

if(a

{c=a;

a=b;

b=c;

if(a%b==0)

return b;

else

d=gcd_recursion(b,a%b);

}

else if(a%b==0)

return b;

else

d=gcd_recursion(b,a%b);

return d;

}

(2)

#include

int delete_char(char c,char str[]);

void main()

{char str[10],c,i;

puts("\nPlease enter a string:");

gets(str);

puts("Please enter a char you want to delete:");

c=getchar();

puts("Before deleted:");

puts(str);

puts("After deleted:");

i=delete_char(c,str);

puts(str);

printf("There are %d characters deleted.",i); }

int delete_char(char c,char str[])

{ int i,j,total,k,sum;

i=0;

total=0;

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

{

k=i;

sum=0;

while(str[k]==c)

{ k++;

sum++;

}

total=total+sum;

if(str[i]==c)

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

str[j]=str[j+sum];

str[j]='\0';

}

i++;

}

return total;

}

(3)

#include

int max(int a,int b);

void main()

{

int i,j,k;

puts("\nPlease enter 3 integer:");

scanf("%d,%d,%d",&i,&j,&k);

printf("max is %d.",max(max(i,j),k));

}

int max(int a,int b)

{ if(a>b)

return a;

else

return b;

}

(4)

#include

void int_string(long a,char str[]);

void reverse(char c[],int size);

void insert_space(char c[],int size);

void main()

{

long i;

char str1[10];

puts("\nPlease enter 1 long interger:");

scanf("%d",&i);

int_string(i,str1);

printf("digital string is %s",str1);

}

void int_string(long a,char str[])

{

int i=0;

while(a!=0)

{

str[i]=a%10+'0';

a=a/10;

i++;

}

str[i]='\0';

insert_space(str,i);

}

void insert_space(char c[],int size)

{

int i;

c[2*size-1]='\0';

for(i=2*(size-1);i>=2;i-=2)

{

c[i]=c[i/2];

c[i-1]=' ';

}

}

(5)

#include

long facto(long x);

main()

{

int a;

long factorial;

printf("\nPlease enter a integer:");

scanf("%d",&a);

factorial=facto(a);

printf("\nThe %d's jieceng is :%ld\n",a,factorial);

}

long facto(long x)

{

if(x==1)

return 1;

else

return(x*facto(x-1));

}

(6)

#include

float average(float math,float chinese,float english);

main()

{

float score[3];

float aver;

printf("Please enter your score:math,chinese,english\n");

scanf("%f,%f,%f",&score[0],&score[1],&score[2]);

aver=average(score[0],score[1],score[2]);

printf("Your average is %.2f\n",aver);

}

float average(float math,float chinese,float english)

{

return(math+chinese+english)/3;

}

(7)

#include

float max=0,min=0;

float average(float arr[],int n)

{

int i;

float aver,sum=arr[0];

max=min=arr[0];

for(i=1;i

{

if(arr[i]>max)

max=arr[i];

else if (arr[i

min=arr[i];

sum=sum+arr[i];

}

aver=sum/n;

return(aver);

}

main()

{

float score[10], aver;

int i;

printf("Please enter ten score:");

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

scanf("%f",&score[i]);

aver=average(score,10);

printf("max=%.2f\nmin=%.2f\naverage=%.2f\n",max, min,aver);

}

(8)

#include

int fib(int n)

{

if((n==1||n==2))

return 1;

else

return(fib(n-1)+fib(n-2));

}

void main()

{

int i;

printf("\n");

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

{

printf("%-12d",fib(i)); if(i%5==0)

printf("\n");

}

}

相关主题
相关文档
最新文档