C Primer Plus
第五版
第九章 函数
#include<stdio.h>#define NAME "GIGATHINK,INC. "
#define ADDRESS "101 Megabuck Plaza"
#define PLACE "Megapolis,CA 94904"
#define WIDTH 40
void starbar(void);
int main(void)
{
starbar();
printf("%s\n",NAME);
printf("%s\n",ADDRESS);
printf("%s\n",PLACE);
starbar();
return 0;
}
void starbar(void)
{
int count;
for(count=1;count<=WIDTH;count++)
putchar('*');
putchar('\n');
}
程序清单9。2
#include<stdio.h>
#define NAME "GIGATHINK,INC. "
#define ADDRESS "101 Megabuck Plaza"
#define PLACE "Megapolis,CA 94904"
#define WIDTH 40
#define SPACE ' '
void show_n_char(char ch,int num);
int main(void)
{
int spaces;
show_n_char('*',WIDTH);
putchar('\n');
show_n_char(SPACE,12);
printf("%s\n",NAME);
spaces=(WIDTH-strlen(ADDRESS))/2;
show_n_char(SPACE,spaces);
printf("%s\n",ADDRESS);
show_n_char(SPACE,(WIDTH-strlen(PLACE))/2);
printf("%s\n",PLACE);
show_n_char('*',WIDTH);
putchar('\n');
return 0;
}
void show_n_char(char ch,int num)
{
int count;
for(count=1;count<=num;count++)
putchar(ch);
}
程序清单9.3
#include<stdio.h>
int imin(int,int);
int main(void)
{
int evil1,evil2;
printf("Enter a pair of integers(q to quit ):\n");
while(scanf("%d %d",&evil1,&evil2))
{
printf("The lesser of %d and %d is %d.
\n",evil1,evil2,imin(evil1,evil2));
printf("Enter a pair of integer(q to quit)\n");
}
printf("Bye.\n");
return 0;
}
int imin(int n,int m)
{
int min;
if(n<m)
min=n;
else
min=m;
return min;
}
9.4
#include<stdio.h>
int imin( );
int main(void)
{
printf("Enter a pair of integers(q to quit ):\n");
printf("The lesser of %d and %d is %d.\n",3,5,imin
(3));
printf("The lesser of %d and %d is %d.\n",3,5,imin
(3.0,5.0));
printf("Enter a pair of integer(q to quit)\n");
printf("Bye.\n");
return 0;
}
int imin( n, m)
int n,m;
{
int min;
if(n<m)
min=n;
else
min=m;
return min;
}
9.5
#include<stdio.h>
int imin(int,int );
int main(void)
{
printf("Enter a pair of integers(q to quit ):\n");
printf("The lesser of %d and %d is %d.\n",3,5,imin
(3,5));
printf("The lesser of %d and %d is %d.\n",3,5,imin
(3.0,5.0));
printf("Enter a pair of integer(q to quit)\n");
printf("Bye.\n");
return 0;
}
int imin( int n,int m)
{
int min;
if(n<m)
min=n;
else
min=m;
return min;
}
程序清单9.6
#include<stdio.h>
void up_and_down(int);
int main(void)
{
up_and_down(1);
return 0;
}
void up_and_down(int n)
{
printf("Level %d;n location %p\n",n,&n);
if(n<4)
up_and_down(n+1);
printf("LEVEL %d:n location %p\n",n,&n);
}
程序清单9.7
#include<stdio.h>
long fact(int n);
long rfact(int n);
int main(void)
{
int num;
printf("This program calculates factorials.\n");
while(scanf("%d",&num)==1)
{
if(num<0)
printf("No negative numbers,please
\n");
else if(num>12)
printf("Keep input under 13.\n");
else
{
printf("Loop:%d factorial= %ld
\n",num,fact(num));
printf("recursion:%d factorial =
%ld\n",num,rfact(num));
}
printf("Enter a value in the range0-12(q
to quit)\n");
}
printf("Bye!\n");
return 0;
}
long fact(int n)
{
long ans;
for(ans=1;n>1;n--)
ans*=n;
return ans;
}
long rfact(int n)
{
long ans;
if(n>0)
ans=n*rfact(n-1);
else
ans=1;
return ans;
}
9.8
#include<stdio.h>
void to_binary(unsigned long n);
int main(void)
{
unsigned long number;
printf("Enter an integer(q to quit)\n");
while(scanf("%ul",&number)==1)
{
printf("Binary equivalent: ");
to_binary(number);
putchar('\n');
printf("Enter an integer(q to quit)\n");
}
printf("Done.\n");
return 0;
}
void to_binary(unsigned long n)
{
int r;
r=n%2;
if(n>=2)
to_binary(n/2);
putchar('0'+r);
return;
}
#include<stdio.h>
#include <>hote.h
int mian(void)
{
int nights;
double hotel_rate;
int code;
while((code=menu())!=QUIT)
{
switch(code)
{
case 1:hotel_rate=HOTEL1;
break;
case 1:hotel_rate=HOTEL2;
break;
case 1:hotel_rate=HOTEL3;
break;
case 1:hotel_rate=HOTEL4;
break;
default:hotel_rate=0.0;
printf("Oops!\n");
break;
}
nights=getnights();
showprice(hotel_rate,nights);
}
return 0;
}
#include<stdio.h>
#include "hotel.h"
int menu(void)
{
int code,status;
printf("\n%s%s\n",STARS,STARS);
printf("Enter the number of the desired hotel:
\n");
printf("\n%s%s\n",STARS,STARS);
while((status=scanf("%d",&code))!=1||(code<1||
code>5))
{
if(status!=1)
scanf("%*s");
printf("Enter an integer from 1 to
5,please.\n");
}
return code;
}
int getnights(void)
{
int nights;
printf("How many nights are needed?");
while(scanf("%d",&nights)!=1)
{
scanf("%*s");
printf("Please enter an integer,such as
2.\n");
}
return nights;
}
int showprice(double rate,int nights)
{
int n;
double total=0.0;
double factor=1.0;
for(n=1;n<=nights;n++,factor*=DISCOUNT)
total+=rate*factor;
printf("the total cost will be $%0.2f.\n",total);
}
9.12
#include<stdio.h>
void mikado(int);
int main(void)
{
int pooth=2,bah=5;
printf("In main(),pooh=%d and &pooh = %p
\n",pooth,&pooth);
printf("In main(),bah=%d and &bah =%p
\n",bah,&bah);
mikado(pooth);
return 0;
}
void mikado(int bah)
{
int pooh=10;
printf("In mikado(),pooh=%d and &pooh=%p
\n",pooh,&pooh);
printf("In main(),bah=%d and &bah =%p
\n",bah,&bah);
}
9.13
#include<stdio.h>
void interchange(int u,int v);
int main(void)
{
int x=5,y=10;
printf("Driginally x=%d and y=%d.\n",x,y);
interchange(x,y);
printf("Now x=%d and y=%d.\n",x,y);
return 0;
}
void interchange(int u,int v)
{
int temp;
temp=u;
u=v;
v=temp;
}
9.14
#include<stdio.h>
void interchange(int u,int v);
int main(void)
{
int x=5,y=10;
printf("Driginally x=%d and y=%d.\n",x,y);
interchange(x,y);
printf("Now x=%d and y=%d.\n",x,y);
return 0;
}
void interchange(int u,int v)
{
int temp;
printf("Driginally u=%d and v=%d.\n",u,v);
temp=u;
u=v;
v=temp;
printf("Now u=%d and v=%d.\n",u,v);
}
9.15
#include<stdio.h>
void interchange(int *u,int *v);
int main(void)
{
int x=5,y=10;
printf("Driginally x=%d and y=%d.\n",x,y);
interchange(&x,&y);
printf("Now x=%d and y=%d.\n",x,y);
return 0;
}
void interchange(int *u,int *v)
{
int temp;
temp=*u;
*u=*v;
*v=temp;
}