您的位置:首页 > 编程语言

c primer plus第十二章编程练习答案(纯手打欢迎指错)

2014-10-05 12:13 381 查看
12.1

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

}
int critic(int n)
{
printf("No luck,chummy.Try again.\n");
scanf("%d",&n);
return n;
}
12.2

#include<stdio.h> //第一个文件

#include"pe12-2a.c"
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");
return 0;
}
#include<stdio.h>//第二个文件
#include"pe12-2a.h"
static double distance;
static double fuel;
static int type;
void set_mode(int n)
{
if(n==1||n==0)
type=n;
else
{
type=1;
printf("Invalid mode specified.Mode1(US)used.\n");
}

}
/////////////////////////////////////////
void get_info(void)
{
if(type==0)
{
printf("Enter distance traveled in kilometers:");
scanf("%lf",&distance);
printf("Enter fuel consumed in liters:");
scanf("%lf",&fuel);
}
if(type==1)
{
printf("Enter distance traveled in miles:");
scanf("%lf",&distance);
printf("Enter fuel consumed in gallons:");
scanf("%lf",&fuel);
}
}
/////////////////////////////////////////////
void show_info(void)
{
if(type==0)
printf("Fuel consumpation is %.2lf liters per 100km.\n ",fuel/distance*100);
if(type==1)
printf("Fuel consumpation is %.2lf per gallon.\n",distance/fuel);

}
void set_mode(int n);//第三个是头文件。
void get_info(void);
void show_info(void);
12.3

#include<stdio.h> //1

#include"pe12-2a.c"
int main(void)
{
int mode;

printf("Enter 0 for metric mode,1 for US mode:");
scanf("%d",&mode);
while(mode>=0)
{

show_info(get_info(set_mode(mode),mode),set_mode(mode));
printf("Enter 0 for metric mode,1 for US mode:");
printf("(-1 to quit):");
scanf("%d",&mode);
}
printf("Done!\n");
return 0;
}


#include<stdio.h>//2
#include"pe12-2a.h"
int set_mode(int n)
{
int type;
if(n==1||n==0)
type=n;
else
type=1;

return type;
}
/////////////////////////////////////////
double get_info(int n,int m)
{
double distance;
double fuel;

if(m!=0&&m!=1)
printf("Invalid mode specified.Mode1(US)used.\n");
if(n==0)
{
printf("Enter distance traveled in kilometers:");
scanf("%lf",&distance);
printf("Enter fuel consumed in liters:");
scanf("%lf",&fuel);
return fuel/distance*100;
}
if(n==1)
{
printf("Enter distance traveled in miles:");
scanf("%lf",&distance);
printf("Enter fuel consumed in gallons:");
scanf("%lf",&fuel);

return distance/fuel;
}

printf("Invalid mode specified.Mode1(US)used.\n");

}
/////////////////////////////////////////////
void show_info(double ans,int type)
{
if(type==0)
printf("Fuel consumpation is %.2lf liters per 100km.\n ",ans);
if(type==1)
printf("Fuel consumpation is %.2lf per gallon.\n",ans);

}


int set_mode(int n);//3
double get_info(int n,int m);
void show_info(double ans,int type);
12.4

#include<stdio.h>//不知道题意是不是这样啊
static int count=0;
int count_f();
int main(void)
{
int n;
count_f();
count_f();
count_f();
count_f();
count_f();
n=count_f();

printf("%d",n);

}
int count_f()
{
count++;

return count;
}


12.5

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(void)
{
srand(time(0));
int num[100];
int number;
int i;
for(i=0;i<100;i++)
{
number=rand()%10+1;
num[i]=number;
printf("%d\n",num[i]);
}
int j,temp;
for(i=0;i<100;i++)
for(j=i+1;j<100;j++)
if(num[i]<num[j])
{
temp=num[i];
num[i]=num[j];
num[j]=temp;
}

for(i=0;i<100;i++)
printf("%5d",num[i]);
}


12.6

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(void)
{
srand(time(0));
int num[1000];
int number;
int i;
int one=0,two=0,three=0,four=0,five=0,six=0,seven=0,eight=0,nine=0,ten=0;
for(i=0;i<1000;i++)
{
number=rand()%10+1;
num[i]=number;
switch(number)
{
case 1:one++;
break;
case 2:two++;
break;
case 3:three++;
break;
case 4:four++;
break;
case 5:five++;
break;
case 6:six++;
break;
case 7:seven++;
break;
case 8:eight++;
break;
case 9:nine++;
break;
case 10:ten++;
break;
}

}

printf("1=%-6d2=%-6d3=%-6d4=%-6d5=%-6d6=%-6d7=%-6d8=%-6d9=%-6d10=%-6d\n",one,two,three,four,five,six,seven,eight,nine,ten);
}


12.7

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int rollem(int sides);
int roll_n_dice(int dice,int sides);
int main(void)
{
int sets;
int dice,sides;
srand(time(0));

printf("Enter the number of sets;enter q to stop.");
while(scanf("%d",&sets)==1&&sets>0)
{
printf("How many sides and how many dice?");
scanf("%d%d",&sides,&dice);
printf("Here are 18 sets of %d %d-sided throws.",dice,sides);
for(int i=0;i<sets;i++)
printf("%-5d",roll_n_dice(dice,sides));
printf("\nHow many sets?Enter q to stop");
}
}
int rollem(int sides)
{
int roll;
roll=rand()%sides+1;
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");
return -1;
}

for(d=0;d<dice;d++)
total+=rollem(sides);

return total;
}

12.8

#include<stdio.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 elements(<1 to quit.)");
scanf("%d",&size);
}
printf("Done.\n");
return 0;
}
int*make_array(int elem,int val)
{
int *ar;
ar=(int*)malloc(elem*sizeof(int));
for(int i=0;i<elem;i++)
ar[i]=val;

return ar;
}
void show_array(const int ar[],int n)
{
int count=0;

for(int i=0;i<n;i++)
{
printf("%d   ",ar[i]);
count++;
if(count%8==0)
printf("\n");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: