第十二章 存储类,链接和内存管理

原创
2015/05/25 17:01
阅读数 17

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

pe12-2a.h

int set_mode(int mode);
void get_info(void);
void show_info(void);

pe12-2b.c

#include<stdio.h>
#include"pe12-2a.h"
int main()
{
	 int mode;

	printf("Enter 0 for metric mode. 1 for US mode: ");
	scanf("%d",&mode);
	while(mode >= 0)
	{
		set_mode(mode);
		get_info();
		show_info();
		printf("Enter 0 for metric mode, 1 for US mode: ");
		printf("(-1 to quit): ");
		scanf("%d",&mode);
	}
	printf("Done.\n");
	return 0;
}
//pe12-2a.c
#include<stdio.h>
#include"pe12-2a.h"
#define METRIC 0
#define US 1
static int smode;
static double miles,gallon;
int set_mode(int mode)
{
	extern int smode;
	if(mode == METRIC || mode == US)
		smode = mode;  
	else    
	printf("Invalid mode specified. Mode %s used.\n", smode == METRIC? "0(METRIC)" : "1(US)"); 
	
}
void get_info(void)
{
	extern int smode;
	extern double miles,gallon;
	if(smode == METRIC)
	{
		printf("Enter distance traved in kilometers: ");
		scanf("%lf",&miles);
		printf("Enter fuel consumed in liters: ");
		scanf("%lf",&gallon);
	}
	if(smode == US)
	{
		printf("Enter distance traved in miless: ");
		scanf("%lf",&miles);
		printf("Enter fuel consumed in gallons: ");
		scanf("%lf",&gallon);
	}
}
void show_info(void)
{
	double n=0;
	extern double miles,gallon;
	if(smode == METRIC)
	{
		n = 100*gallon / miles;
		printf("Fuel cocsumption is %.2f liter per 100km,\n",n);
	}
	else if(smode == US)
	{
		n =  miles / gallon;
		printf("Fuel cocsumption is %.2f liter per gallon,\n",n);
	}
}

pe12-3a.h

int set_mode(int mode);
void get_info(void);
void show_info(void);

pe12-3b.c

#include<stdio.h>
#include"pe12-3a.h"
int main()
{
	 int mode,smode;
	 double miles,gallon;

	printf("Enter 0 for metric mode. 1 for US mode: ");
	scanf("%d",&mode);
	while(mode >= 0)
	{
		set_mode(mode,&smode);
		get_info(&smode,&miles,&gallon);
		show_info(smode,miles,gallon);
		printf("Enter 0 for metric mode, 1 for US mode: ");
		printf("(-1 to quit): ");
		scanf("%d",&mode);
	}
	printf("Done.\n");
	return 0;
}

pe12-3a.c

#include<stdio.h>
#include"pe12-3a.h"
#define METRIC 0
#define US 1
int set_mode(int mode,int *smode)
{
	if(mode == METRIC || mode == US)
	{
		*smode = mode; 
	}
	else    
	printf("Invalid mode specified. Mode %s used.\n", *smode == METRIC? "0(METRIC)" : "1(US)"); 
	
}
void get_info(int *smode,double *miles,double *gallon)
{
	if(*smode == METRIC)
	{
		printf("Enter distance traved in kilometers: ");
		scanf("%lf",miles);
		printf("Enter fuel consumed in liters: ");
		scanf("%lf",gallon);
	}
	if(*smode == US)
	{
		printf("Enter distance traved in miless: ");
		scanf("%lf",miles);
		printf("Enter fuel consumed in gallons: ");
		scanf("%lf",gallon);
	}
}
void show_info(int smode,double miles,double gallon)
{
	double n=0;
	if(smode == METRIC)
	{
		n = 100*gallon / miles;
		printf("Fuel cocsumption is %.2f liter per 100km,\n",n);
	}
	else if(smode == US)
	{
		n =  miles / gallon;
		printf("Fuel cocsumption is %.2f liter per gallon,\n",n);
	}
}

#include<stdio.h>
int diaoyong();
int main()
{
	int m,i;
	for(i=0;i<4;i++)
	{
		m=diaoyong();
	}
	printf("%d",m);
	return 0;
}

int diaoyong()
{
	static int a=0;
	a++;
	return a;
}

#include<stdio.h>
#include <stdlib.h>

int main()
{
	int num[100];
	int i,j,n;
	for(i=0;i<100;i++)
	{
		num[i]=rand()%10+1;
	printf("%d ",num[i]);
	}
	printf("\n排序后\n");
	for(i=0;i<100;i++)
	{
		for(j=i+1;j<100;j++)
		{
			if(num[j] < num[i])
			{
				n=num[j];
				num[j]=num[i];
				num[i]=n;
			}
		}
		printf("%d ",num[i]);
	}
	return 0;
}

#include<stdio.h>
#include <stdlib.h>

int main()
{
	int num[1000],sum[10]={0};
	int i;
	for(i=0;i<1000;i++)
	{
		num[i] = rand()%10+1;
		switch(num[i])
		{
			case 1:
				sum[0]++;
				break;
			case 2:
				sum[1]++;
				break;
			case 3:
				sum[2]++;
				break;
			case 4:
				sum[3]++;
				break;
			case 5:
				sum[4]++;
				break;
			case 6:
				sum[5]++;
				break;
			case 7:
				sum[6]++;
				break;
			case 8:
				sum[7]++;
				break;
			case 9:
				sum[8]++;
				break;
			case 10:
				sum[9]++;
				break;
		}
	}
	printf("1    2    3    4    5    6    7    8    9    10\n");
	for(i=0;i<10;i++)
	{
		printf("%-4d ",sum[i]);
	}
	return 0;
}

pe12-7a.h

extern int roll_count;
int roll_n_dice(int dice,int sides);

pe12-7b.c

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include"diceroll.h"

int main()
{
	int dice,sets;
	int roll[100];
	int sides,i;

	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);
		for(i=0;i<sets;i++)
		{
			roll[i] = roll_n_dice(dice,sides);
		}
		printf("Here are %d sets of %d %d-sided throws.\n",sets,dice,sides);
		for(i=0;i<sets;i++)
		printf("%d ",roll[i]);
		printf("\nHow many sets? Enter q to stop.\n");
	}
	printf("The rollem()function was called %d times.\n",roll_count);
	printf("GOOD FORTUNE TO YOU!\n");
	return 0;
}

pe12-7a.c

#include<stdio.h>
#include<stdlib.h>
#include"diceroll.h"

int 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(sides < 2)
	{
		printf("Need at least 2 sides.\n");
		return -2;
	}
	if(dice < 1)
	{
		printf("Need at least 1 die.\n");
	}
	for(d = 0;d<dice;d++)
		total += rollem(sides);
	return total;
}

#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;
	int 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 elementd(<1 to quit): ");
		scanf("%d",&size);
	}
	printf("Done,\n");
	return 0;
}

int *make_array(int elem,int val)
{
	int *pa;
	int i;
	pa = (int *)malloc(elem * sizeof(int));
	for(i=0;i<elem;i++)
		pa[i]=val;
	return pa;
}

void show_array(const int ar[],int n)
{
	int i,j=0;
	for(i=0;i<n;i++)
	{
		printf("%d ",ar[i]);
		j++;
		if(j==8)
		{
			printf("\n");
			j=0;
		}
	}
	printf("\n");
}


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部