1、C Primer Plus第六版 第十二章编程练习答案1.#includeint critic(void );int main(int argc, char *argv) int num=56; int units; printf(How many pounds to a firkin of butter?n); scanf(%d,&units); while (units!=num) units=critic(); getchar(); return 0;int critic() int n; printf(No luck, my friend. Try again.n); scanf(%d
2、, &n); return n;2./*pe12-2a.h*/#includevoid set_mode(int mode);void get_info();void show_info();/ *pe12-2a.c*/#include#includepe12-2a.hint mode;float distance, fuel;void set_mode(int m) if (m !=0 & m !=1) printf(Invalid mode specified. Mode 1(US) used.n); m=1; mode=m;void get_info() if (0=mode) prin
3、tf(Enter distance traveled in kilometers: ); scanf(%f, &distance); printf(Enter fuel consumed in liters: ); scanf(%f, &fuel); else printf(Enter distance traveled in miles: ); scanf(%f, &distance); printf(Enter fuel consumed in gallons: ); scanf(%f, &fuel); void show_info() float units; if (0=mode) u
4、nits=100* (fuel/distance); printf(Fuel consumed in liters: %.1f per 100 kmn, units); else units=distance/fuel; printf(Fuel consumed is %.1f miles per gallonn, units); 3./*pe12-2a.h*/#includevoid set_mode(int mode);void get_info(int mode);void show_info(int mode, float distance, float fuel);/*pe12-2a
5、.c*/#include#includepe12-2a.hvoid set_mode(int mode) if (mode !=0 & mode !=1) printf(Invalid mode specified. Mode 1(US) used.n); mode=1; get_info(mode);void get_info(int mode) float distance, fuel; if (0=mode) printf(Enter distance traveled in kilometers: ); scanf(%f, &distance); printf(Enter fuel c
6、onsumed in liters: ); scanf(%f, &fuel); else printf(Enter distance traveled in miles: ); scanf(%f, &distance); printf(Enter fuel consumed in gallons: ); scanf(%f, &fuel); show_info(mode, distance, fuel);void show_info(int mode, float distance, float fuel) float units; if (0=mode) units=100* (fuel/di
7、stance); printf(Fuel consumed in liters: %.1f per 100 kmn, units); else units=distance/fuel; printf(Fuel consumed is %.1f miles per gallonn, units); /*pe12-2b.c*/#include#includepe12-2a.hint main(void) int mode; printf(Enter 0 for metric mode, 1 for US mode: ); scanf(%d, &mode); while(mode=0) set_mo
8、de(mode); printf(Enter 0 for metric mode, 1 for US mode: ); printf(-1 to quit): ); scanf(%d, &mode); printf(Done,n); getchar(); return 0;4.#includeint count=0;int fun();int main(void) int i=0; int cnt; while (i20) cnt=fun(); printf(The function has been called %d times:n, cnt); i+; getchar(); return
9、 0;int fun() count+; return count;5./*main.c*/#include#includerand0.hint main(void) int Str100; int count; for(count=0; count100; count+) Strcount=rand0(); sort(Str); for (count=0; count100; count+) if (count%10=0) putchar(n); printf(%3d , Strcount); getchar(); return 0;/*fun.h*/#include#include int
10、 rand0(void); void sort(int *str);/*fun.c*/#include#includerand0.h int rand0(void) int num; num=rand()%10+1; return num; void sort(int *str) int i, j, temp; for (i=0; i100; i+) for (j=0; j100-i-1; j+) if (strjstrj+1) temp=strj; strj=strj+1; strj+1=temp; 6.#include#includeint rand0();int main(void) i
11、nt Str10=0; int count; int value; for(count=0; count1000; count+) value=rand0(); Strvalue-1+; for (count=0; count10; count+) printf(%3d , Strcount); getchar(); return 0;int rand0() int num; num=rand()%10+1; return num;7./*main.c*/#include#include#include#includediceroll.hint main(void) int dice, rol
12、l; int sides, sets; int status; int i; srand( (unsigned int) time(0) ); printf(Enter the number of sets; enter q to stop.n); while(scanf(%d, &sets)=1 & sets0) if (sets=q) break; printf(Enter the number of sides per die, 0 to stop.n); if(scanf(%d, &sides)=1 & sides0) printf(How many dice?n); if( (sta
13、tus =scanf(%d, &dice)!=1) if (status=EOF) break; else printf(you should hane entered an integer.); printf( Lets begin again.n); while(getchar()!=n) continue; printf(How many side? enter 0 to stop.n); continue; printf(Here are %d sets of %d %d-sided throws.n, sets, dice, sides); for (i=0; isets; i+)
14、roll=roll_n_dice(dice, sides); printf(%d , roll ); putchar(n); printf(Enter the number of sets; enter q to stop.n); printf(The rollem() function was called %d times.n, roll_count); printf(GOOD FORTUNE TO YOU!n); getchar(); return 0;/*diceroll.h*/extern int roll_count;int roll_n_dice(int dice, int si
15、des);/*diceroll.c*/#includediceroll.h#include#includeint roll_count=0;static int rollem(int sides) int roll; roll=rand()%sides+1; roll_count+; return roll;int roll_n_dice(int dice, int sides) int d; int total=0; if(sides2) printf(Need at least 2 sides.n); return -2; if (dice1) printf(Need at least 1
16、 die.n); return -1; for (d=0; ddice; d+) total +=rollem(sides); return total;8.#include#includeint *make_array(int elem, int val);void show_array(const int ar, int n);int main(void) int *pa; int size; int value; printf(enter the number od elements: ); while(scanf(%d, &size)=1 & size0) printf(enter t
17、he initialization value: ); scanf(%d, &value); pa=make_array(size, value); if (pa) show_array(pa, size); free(pa); printf(enter the number of elements (1 to quit): ); printf(Done.n); getchar(); return 0;int *make_array(int elem, int val) int *ptd; int i; ptd=(int *) malloc(elem* sizeof(double); for
18、(i=0; ielem; i+) ptdi=val; return ptd;void show_array(const int ar, int n) int i; for (i=0; in; i+) if (i%8=0) putchar(n); printf(%3d , ari); putchar(n);9.#include#include#includeint main(void) int num, i; char *ptd; char *temp; printf(How many words you wish to enter? ); while ( scanf(%d, &num) =1 & num!=0) ptd=(char*)malloc(num*sizeof(char *); printf(Enter %d words now:n, num); temp=(char*) malloc(100 * sizeof(char); for (i=0; inum; i+) scanf(%s, temp); *(ptd+i)=temp; printf(%sn, *(ptd+i); free(ptd); free(temp); printf(How many words you wish to enter? ); getchar(); return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1