C Primer Plus 第十二章课后习题……2015.5.10

第十二章课后习题

1、自动存储 寄存器存储 静态空连接

2、静态空连接 内部链接 外部链接

3、静态外部链接  静态内部链接

4、空连接

5、在声明中使用表面这个变量或函数已经定义过

6、都分配一个具有100个int值的数组,calloc还把每个元素设置为零。

7、daisy全局变量  lily局部变量

8、#include<stdio.h>

char color=‘B‘;

void first(void);

void second(void);

int main(void)

{

extern char color;

printf("color in main() is %c\n",color);

first();

printf("color in main()is %c\n",color);

second();

printf("color in main() is %c\n",color);

return 0;

}

void first(void)

{

char color;

color=‘R‘;

printf("color in first() is %c\n",color);

}

void second(void)

{

color=‘G‘;

printf("color in second() is %c\n",color);

}

9、a.plink静态变量只用于该文件的下面部分 b.不会保护 函数改

变不了它的值  只能说不能n++计算变量了

编程练习

1、

#include<stdio.h>

//int units=0;

int critic(void );

int main(void)

{

int units;

printf("how many pounds to a firkin of butter?

\n");

scanf("%d",&units);

while(units!=56)

units= critic();

printf("You must have looked it up! %d

\n",units);

return 0;

}

int critic(void)

{

int u;

printf("Noluck\n");

scanf("%d",&u );

return u;

}

2、

#include<stdio.h>

#include "pe12-2a.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.1for us mode:");

printf("(-1 to quit);");

scanf("%d",&mode);

}

printf("Done.\n");

return 0;

}

static int distance;

static int mode1;

int set_mode(int mode)

{

if(mode%2==0)

{

return mode1=0;

}

else

return mode1=1;

}

void get_info()

{

extern mode1;

if(mode1)

printf("Enter distance traveled in miles: ");

else

printf("Enter distance traveled in kilometers: ");

scanf("%d",&distance);

}

void show_info()

{

extern int distance;

extern mode1;

double fuel;

if(!mode1)

{

printf("Enter fuel consumed in liter: ");

scanf("%lf",&fuel);

printf("Fuel consumption is %lf liters per 100

km\n",fuel/distance*100);

}

else

{

printf("Enter fuel consumed in gallons: ");

scanf("%lf",&fuel);

printf("Fuel consumption is %lf miles per gallon\n ",fuel/distance*1168.72);

}

}

3

#include<stdio.h>

int set_mode(int mode);

int get_info(int n);

void show_info(int mode1,int distance);

int main(void)

{

int mode;

int mode1;

int distance;

printf("Enter 0 for metric mode.1 for us mode:");

scanf("%d",&mode);

while(mode>=0)

{

mode1=set_mode(mode);

distance=get_info(mode1);

show_info(mode1,distance);

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 mode)

{

if(mode%2==0)

{

return  0;

}

else

return  1;

}

int get_info(int n)

{

int distance;

if(n)

printf("Enter distance traveled in miles: ");

else

printf("Enter distance traveled in kilometers: ");

scanf("%d",&distance);

return distance;

}

void show_info(int mode1,int distance)

{

double fuel;

if(!mode1)

{

printf("Enter fuel consumed in liter: ");

scanf("%lf",&fuel);

printf("Fuel consumption is %lf liters per 100

km\n",fuel/distance*100);

}

else

{

printf("Enter fuel consumed in gallons: ");

scanf("%lf",&fuel);

printf("Fuel consumption is %lf miles per gallon\n ",fuel/distance*1168.72);

}

}

4\

#include<stdio.h>

int recurrence_num();

int main(void)

{

int number;

while((scanf("%d",&number)))

{

recurrence_num();

}

printf("%d",recurrence_num());

return 0;

}

int recurrence_num()

{

static int count=0;

count++;

return count;

}

5\

#include<stdio.h>

#define MAX 100

int rand(void);

int main(void)

{

int arr[MAX];

int i=0,j=0;

int temp;

for(i=0;i<MAX;i++)

arr[i]=rand()%100;

for(i=0;i<MAX-1;i++)

for(j=i+1;j<MAX;j++)

{

if(arr[i]<arr[j])

{

temp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

}

for(i=0;i<MAX;i++)

{

if(i%10==0)

printf("\n");

printf("%2d ",arr[i]);

}

}

int rand(void)

{

static next=1;

next=next*1103515245+12345;

return (unsigned int)(next/65536)%32768;

}

6\

#include<stdio.h>

#include<stdlib.h>

#define MAX 1000

//int rand(void);

int main(void)

{

int arr[MAX];

int i=0 ;

int number_1=0;

int number_2=0;

int number_3=0;

int number_4=0;

int number_5=0;

int number_6=0;

int number_7=0;

int number_8=0;

int number_9=0;

int number_10=0;

for(i=0;i<MAX;i++)

arr[i]=rand()%10;

for(i=0;i<MAX-1;i++)

{

switch(arr[i])

{

case 0:number_10++;

break;

case 1:number_1++;

break;

case 2:number_2++;

break;

case 3:number_3++;

break;

case 4:number_4++;

break;

case 5:number_5++;

break;

case 6:number_6++;

break;

case 7:number_7++;

break;

case 8:number_8++;

break;

case 9:number_9++;

break;

}

}

printf("number_1 has %d times\n",number_1);

printf("number_2 has %d times\n",number_2);

printf("number_3 has %d times\n",number_3);

printf("number_4 has %d times\n",number_4);

printf("number_5 has %d times\n",number_5);

printf("number_6 has %d times\n",number_6);

printf("number_7 has %d times\n",number_7);

printf("number_8 has %d times\n",number_8);

printf("number_9 has %d times\n",number_9);

printf("number_10 has %d times\n",number_10);

return 0;

}

/*

int rand(void)

{

static next=1;

next=next*1103515245+12345;

return (unsigned int)(next/65536)%32768;

}*/

7

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

int roll_n_dice( int sides);

int rollem(int sides);

int main(void)

{

int dice,roll;

int sides;

srand((unsigned int)time(0));

printf("Enter the number of sides per die.0 to

stop.\n");

while(scanf("%d",&sides)==1&&sides>0)

{

// printf("How many dice?\n");

// scanf("%d",&dice);

roll=roll_n_dice( sides);

printf("You have rolled a %d using %d %d

sided dice.\n",roll,dice,sides);

printf("How many sides?\n");

}

// printf("The rollem %d times.\n",roll_count);

printf("GOOD");

return 0;

}

int rollem(int sides)

{

int roll;

roll=rand()%sides+1;

return roll;

}

int roll_n_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)+rollem(sides);

return total;

}

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;

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("\n");

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=0;

int *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)

printf("\n");

printf("%d",ar[i]);

}

}

时间: 2024-10-29 19:08:26

C Primer Plus 第十二章课后习题……2015.5.10的相关文章

C Primer Plus 第十二章程序清单……2015.5.10

C Primer Plus           第五版 第十二章  程序清单 #include<stdio.h> int main() { int x=30; printf("x in outer block:%d\n",x); { int x=77; printf("x in inner block:%d\n",x); } printf("x in outer block:%d\n",x); while(x++<33) { i

Python核心编程第二版 第十二章课后答案

12-1.路径搜索和搜索路径.路径搜索和搜索路径之间有什么不同? 前者是指查找某个文件的操作,后者是去查找一组目录. 12-2. 导入属性.假设你的模块mymodule里有一个foo()函数. (a)把这个函数导入到你的名称空间有哪两种方法? (b)这两种方法导入后的名称空间有什么不同? import mymodule from mymodule import foo 第一种将mymodule里的属性全部导入,第二种只导入foo 12-3.导入"import module"和"

c++ primer plus(第6版)中文版 第十二章编程练习答案

第十二章编程练习答案 12.1根据以下类声明,完成类,并编小程序使用它 //12.1根据以下类声明,完成类,并编小程序使用它 #include <iostream> #include <cstring> using namespace std; class Cow{ char name[20]; char * hobby; double weight; public: Cow(); Cow(const char * nm, const char * ho, double wt);

C primer plus 第五版十二章习题

看完C prime plus(第五版)第十二章,随带完成了后面的习题. 1.不使用全局变量,重写程序清单12.4的程序. 先贴出12.4的程序,方便对照: 1 /* global.c --- 使用外部变量 */ 2 #include <stdio.h> 3 int units = 0; //一个外部变量 4 void critic(void); 5 int main(void) 6 { 7 extern int units; 8 9 printf ("How many pounds

C Primer Plus (第五版) 第十二章 存储类、链接和内存管理 编程练习

第十二章 存储类.链接和内存管理 编程练习 1.Q不使用全局变量,重写程序清单13.4 #include <stdio.h>; int critic(int u); int main(void) { int units; printf("How many pounds to a firkin of butter?\n"); scanf_s("%d", &units); while (units != 56) critic(units); prin

第四十二章

第四十二章1 道生“肾” 道生一,一生二,二生三,三生万物. 道生出混沌之气,混沌之气分出阴阳,阴阳又交汇出新的物质,从而生出万物. 道在我们身体内体现为“肾精”,要保护好.各位朋友大家好,今天我们接着来聊<道德经>.我们来看看老子带给我们什么样新的人生启发了,每天启发一点,天天进步.今天我们开始学习第四十二章,非常开心.因为我们<道德经>已经学习到一半的位置了,因为整个八十一章,我们学习到第四十二章了,过了一半了,这时间也是飞快的.我之前预计3年,我估计现在2年差不多讲完了.因为

C和指针 (pointers on C)——第十二章:使用结构和指针

第十二章 使用结构和指针 这章就是链表.先单链表,后双向链表. 总结: 单链表是一种使用指针来存储值的数据结构.链表中的每个节点包含一个字段,用于指向链表的下一个节点. 有一个独立的根指针指向链表的第1个节点.单链表只能从一个方向遍历. 如何insert单链表:1.新节点的link字段必须设置为指向它的后面节点.2.前一个节点的link字段必须指向这个新节点. 为了防止可能会插入链表的起始位置这种情况,在C中,可以保存一个指向必须进行修改的link字段的指针,而不是保存一个指向前一个节点的指针.

《构建之法》第十一、十二章学习总结

第十一章的内容是软件设计与实现. 在第一节中,讲的是关于分析和设计方法,向我们介绍在"需求分析"."设计与实现"阶段."测试""发布"阶段该搞清楚的问题. 在第二节中,讲的是关于图形建模和分析方法.在表达实体和实体之间的关系时,可以用到思维导图(Mind Map).实体关系图(ERD).UCD ;在表达数据的流动时,可以用到DFD工具:在表达控制流的时候可以用到FSM工具:前面提到的这些图形建模方法各有特点,UML却可以有一个

构造之法第十一、十二章

第十一章 软件设计与实现 图形建模和分析方法 1表达实体和实体之间的关系(思维导图) 2实体关系图 3Use Case Diagram 表达数据的流动 (1)和管理机构相关的数据流 (2)和读者相关的数据流 (3)和新书入库相关的数据流 (4)和时间相关的数据流 表达数据的流动 (1)和管理机构相关的数据流 (2)和读者相关的数据流 (3)和新书入库相关的数据流 (4)和时间相关的数据流 其他设计方法 1.形式化的方法 2.文学化编程 第十二章 用户体验 用户体验的要素 1.用户的第一印象 2.