1.
#include <stdio.h>
void critic(int *p);
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 *p)
{
printf("No luck, my friend. Try again.!\n");
scanf("%d",p);
}
//pe12-1a.c
#include <stdio.h>
#include "pe12-1a.h"
static int mode;
static int dis;
static double fuel;
void set_mode(int flag)
{
if(flag <= 1)
mode = flag;
else
{
printf("Invaild mode specified. mode %d(%s) used.\n",mode, (mode == 0)? "metric": "US");
}
}
void get_info(void)
{
if(mode == 0)
{
printf("Enter distance traveled in kilometers: ");
scanf("%d",&dis);
printf("Enter fuel consumed in liters: ");
scanf("%lf",&fuel);
}
else
{
printf("Enter distance traveled in miles: ");
scanf("%d",&dis);
printf("Enter fuel consumed in gallons: ");
scanf("%lf",&fuel);
}
}
void show_info(void)
{
if(mode == 0)
printf("Fuel consumption is %.2f liters per 100 km\n",fuel / dis * 100);
else
{
printf("Fuel consumption is %.1f miles per gallon\n.",dis / fuel);
}
}
//pe12-1a.h
#ifndef __PE12_1A_H__
#define __PE12_1A_H__
void set_mode(int flag);
void get_info(void);
void show_info(void);
#endif
//pe12-1a.c
#include <stdio.h>
#include "pe12-1a.h"
static int mode;
static int dis;
static double fuel;
void set_mode(int flag)
{
if(flag <= 1)
mode = flag;
else
{
printf("Invaild mode specified. mode %d(%s) used.\n",mode, (mode == 0)? "metric": "US");
}
}
void get_info(void)
{
if(mode == 0)
{
printf("Enter distance traveled in kilometers: ");
scanf("%d",&dis);
printf("Enter fuel consumed in liters: ");
scanf("%lf",&fuel);
}
else
{
printf("Enter distance traveled in miles: ");
scanf("%d",&dis);
printf("Enter fuel consumed in gallons: ");
scanf("%lf",&fuel);
}
}
void show_info(void)
{
if(mode == 0)
printf("Fuel consumption is %.2f liters per 100 km\n",fuel / dis * 100);
else
{
printf("Fuel consumption is %.1f miles per gallon\n.",dis / fuel);
}
}
//pe12-1a.c
#ifndef __PE12_1A_H__
#define __PE12_1A_H__
void set_mode(int flag);
void get_info(void);
void show_info(void);
#endif
//pe12-1b.c
#include <stdio.h>
#include "pe12-1a.h"
int main(void)
{
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");
}
#include <stdio.h>
int callFunction(void)
{
static int count = 0;
count++;
return count;
}
int main(void)
{
int i;
printf("Enter a num, and input -1 to quit: ");
while((scanf("%d", &i) == 1) && i != -1)
{
printf("The function has called %d.\n",callFunction());
printf("Enter a num, and input -1 to quit: ");
}
printf("The function has called %d.\n",callFunction());
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 100
void geneRandNum(int arr[],int size)
{
srand((unsigned int)time(0));
for(int i = 0; i < size; i++)
{
arr[i] = rand() % 10 + 1;
}
}
void rank(int arr[],int size)
{
for(int i = 0; i < size - 1; i++)
{
for(int k = i + 1; k < size; k++)
{
if(arr[i] < arr[k])
{
int temp;
temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
}
}
void show(int arr[],int size)
{
for(int i = 0; i < size; i++)
{
printf("%2d ", arr[i]);
if(i % 10 == 9)
printf("\n");
}
}
int main(void)
{
int arr[SIZE];
geneRandNum(arr, SIZE);
printf("Befor sqrt: \n");
show(arr, SIZE);
printf("After sqrt:\n");
rank(arr, SIZE);
show(arr, SIZE);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 11
void geneRandNum(int arr[],int size)
{
srand((unsigned int)time(0));
for(int i = 0; i < size; i++)
{
arr[i] = rand() % 10 + 1;
}
}
void rank(int arr[],int size)
{
for(int i = 0; i < size - 1; i++)
{
for(int k = i + 1; k < size; k++)
{
if(arr[i] < arr[k])
{
int temp;
temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
}
}
void show(int arr[],int size)
{
for(int i = 1; i < size; i++)
{
printf("num %d has appeared %2d\n",i, arr[i]);
}
printf("\n");
}
int main(void)
{
int arr[SIZE];
for(int i = 1 ; i < SIZE; i++)
{
arr[i] = 0;
}
for(int i = 1; i < SIZE; i++)
{
srand((unsigned int)time(0));
for(int k = 0; k < 1000; k++)
arr[rand() % SIZE+1]++;
printf("on the %d try:\n",i);
show(arr, SIZE);
for(int i = 1 ; i < SIZE; i++)
{
arr[i] = 0;
}
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int rollem(int sides, int dices)
{
int sum = 0;
for(int i = 0; i < dices; i++)
{
sum += rand() % sides + 1;
}
return sum;
}
int main(void)
{
int sets;
int sides,dices;
srand((unsigned int)time(0));
printf("Enter the number of sets; enter q to stop: ");
while(scanf("%d", &sets) == 1)
{
printf("How many sides and how many dice?");
scanf("%d %d",&sides, &dices);
printf("Here are %d sets of %d %d-sided throws.\n",sets,dices,sides);
for(int i = 0; i < sets; i++)
{
printf("%2d ", rollem(sides, dices));
if(i % 15 == 14)
printf("\n");
}
printf("\n");
printf("How many sets? Enter q to stop: ");
}
return 0;
}
#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: ");
while(scanf("%d", &size) == 1 && 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): ");
}
printf("Done.\n");
return 0;
}
int *make_array(int elem, int val)
{
int *pt = *(int *)malloc(sizeof(int) * elem);
for(int i = 0; i < elem; i++)
{
pt[i] = val;
}
return pt;
}
void show_array(const int ar[], int n)
{
for(int i = 0; i < n; i++)
{
printf("%2d ",ar[i]);
if(i % 8 == 7)
{
printf("\n");
}
}
printf("\n");
}