`
dawuafang
  • 浏览: 1091690 次
文章分类
社区版块
存档分类
最新评论

C Primer Plus(第五版)第12章 存储类、链接和内存管理

 
阅读更多
12.1
#include <stdio.h>
void critic(int*);
int main(void)
{
int units;
printf("How many pounds to a firkin of butter?\n");
scanf("%d", &units);
while ( units != 56)
critic(&units);
printf("You must have looked it up!\n");
return 0;
}
void critic(int*units)
{
printf("No luck, chummy. Try again.\n");
scanf("%d", units);
}

12.2
//pe12-2a.h
void set_mode(int);
void get_info(void);
void show_info(void);



//pe12-2b.c
#include<stdio.h>
#include"pe12-2a.h"
int main(void)
{
int mode;
printf("Enter 0 for metric mode,1for US mode: ");
scanf("%d",&mode);
while(mode>=0)
{
set_mode(mode);
get_info();
show_info();
printf("Enter 0 for metric mode,1for US mode: ");
printf("(-1 to quit): ");
scanf("%d",&mode);
}
printf("Done.\n");
return 0;
}



//pe12-2c.c
#include<stdio.h>
double distance,fuel;
int mode;
void set_mode(int i)
{
mode=i;
}
void get_info(void)
{
if (mode==0)
{
printf("Enter the distance traveled in kilometers: ");
scanf("%lf",&distance);
printf("Enter the fuel consumed in liters: ");
scanf("%lf",&fuel);
}
else if(mode==1)
{
shit:
printf("Enter the distance traveled in miles: ");
scanf("%lf",&distance);
printf("Enter the fuel consumed in gallon: ");
scanf("%lf",&fuel);
}
else
{
printf("Ivalid mode specified.Mode 1(US)used.\n");
goto shit;
}
}
void show_info(void)
{
if(mode==0)
printf("Fuel consumption is %.2f libters per 100km\n",fuel/distance*100);
else
printf("Fuel consumption is %.1f miles per gallon\n",distance/fuel);
}

12.3
#include<stdio.h>
int set_mode(int);
void get_info(int,double*,double*);
void show_info(int,double*,double*);
int main(void)
{
int mode;
double distance,fuel;
printf("Enter 0 for metric mode,1for US mode: ");
scanf("%d",&mode);
while(mode>=0)
{
mode=set_mode(mode);
get_info(mode,&distance,&fuel);
show_info(mode,&distance,&fuel);
printf("Enter 0 for metric mode,1for US mode: ");
printf("(-1 to quit): ");
scanf("%d",&mode);
}
printf("Done.\n");
return 0;
}
int set_mode(int i)
{
return i;
}
void get_info(int mode,double*distance,double*fuel)
{
if (mode==0)
{
printf("Enter the distance traveled in kilometers: ");
scanf("%lf",distance);
printf("Enter the fuel consumed in liters: ");
scanf("%lf",fuel);
}
else if(mode==1)
{
shit:
printf("Enter the distance traveled in miles: ");
scanf("%lf",distance);
printf("Enter the fuel consumed in gallon: ");
scanf("%lf",fuel);
}
else
{
printf("Ivalid mode specified.Mode 1(US)used.\n");
goto shit;
}
}
void show_info(int mode,double*distance,double*fuel)
{
if(mode==0)
printf("Fuel consumption is %.2f libters per 100km\n",*fuel/(*distance)*100);
else
printf("Fuel consumption is %.1f miles per gallon\n",*distance/(*fuel));
}

12.4
#include<stdio.h>
void shit(void);
int main(void)
{
int i;
for(i=0;i<50;i++)
{
printf("this is %d times loop\n",i+1);
shit();
}
return 0;
}
void shit(void)
{
static i=0;
printf("the function is used %d times\n",++i);
}

12.5
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int i,j,k;
int a[100];
srand(time(0));
for(i=0;i<100;i++)
a[i]=rand()%10+1;
for(i=0;i<100;i++)
{
if(i%10==0) puts("");
printf("%5d",a[i]);
}
puts("");
puts("");
for(i=0;i<99;i++)
for(j=i;j<99;j++)
if(a[i]<a[j+1])
{
k=a[i];
a[i]=a[j+1];
a[j+1]=k;
}
for(i=0;i<100;i++)
{
if(i%10==0) puts("");
printf("%5d",a[i]);
}
return 0;
}

12.6
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i,j,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10;
for(i=0;i<10;i++)
{
i1=i2=i3=i4=i5=i6=i7=i8=i9=i10=0;
srand(i);
printf("the seed is %d\n",i);
for(j=0;j<1000;j++)
switch(rand()%10+1)
{
case 1:
i1++;
break;
case 2:
i2++;
break;
case 3:
i3++;
break;
case 4:
i4++;
break;
case 5:
i5++;
break;
case 6:
i6++;
break;
case 7:
i7++;
break;
case 8:
i8++;
break;
case 9:
i9++;
break;
case 10:
i10++;
break;
}
printf("1 %d times ,2 %d times ,3 %d times ,4 %d times ,5 %d times,\n\
6 %d times ,7 %d times ,8 %d times ,9 %d times ,10 %d times.\n",i1,i2,i3,i4,i5,i6,i7,i8,i9,i10);
}
return 0;
}

12.7
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void roll_n_dice(int,int);
int main(void)
{
int i;
int dice,sets,sides;
srand((unsigned int) time(0));
printf("Enter the number of sets; enter q to stop.\n");
while (scanf("%d", &sets) == 1)
{
printf("How many sides and how many dice?\n");
scanf("%d %d",&sides,&dice);
printf("Here are %d sets of %d %d-sided throws.\n",sets,dice,sides);
for(i=0;i<sets;i++)
{
roll_n_dice(dice, sides);
if(i==14)puts("");
}
puts("");
printf("Enter the number of sets; enter q to stop.\n");
}
return 0;
}
void roll_n_dice(int dice, int sides)
{
int d;
int total=0;
if (sides<2)
printf("Need at least 2 sides.\n");
if (dice<1)
printf("Need at least 1 die.\n");
for (d=0;d<dice;d++)
total+=rand()%sides+1;
printf(" %d",total);
}

12.8
#include<stdio.h>
#include<stdlib.h>
int *make_array(int elem,int val);
void show_array(const int ar[],int n);
int main(void)
{
int *pa;
int size,value;
printf("Enter the number of elements: ");
scanf("%d",&size);
while(size>0)
{
printf("Enter the 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): ");
scanf("%d",&size);
}
printf("Done.\n");
return 0;
}
int *make_array(int elem,int val)
{
int i;
int*ptr;
ptr=(int *)malloc(elem*sizeof(int));
for(i=0;i<elem;i++)
ptr[i]=val;
return ptr;
}
void show_array(const int*ar,int n)
{
int i;
for(i=0;i<n;i++)
{
if(i%8==0)puts("");
printf(" %d",ar[i]);
}
puts("");
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics