教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 求职职场 >

C语言程序设计现代方法第16章答案

来源:网络收集 时间:2026-09-09
导读: Chapter 16 Answers to Selected Exercises 2. [was #2; modified] (a) struct { double real, imaginary; } c1, c2, c3; (b) struct { double real, imaginary; } c1 = {0.0, 1.0}, c2 = {1.0, 0.0}, c3; (c) Only one statement is necessary: c1 = c2; (d

Chapter 16

Answers to Selected Exercises 2. [was #2; modified]

(a)

struct {

double real, imaginary;

} c1, c2, c3;

(b)

struct {

double real, imaginary;

} c1 = {0.0, 1.0}, c2 = {1.0, 0.0}, c3;

(c) Only one statement is necessary:

c1 = c2;

(d)

c3.real = c1.real + c2.real;

c3.imaginary = c1.imaginary + c2.imaginary;

4. [was #4; modified]

(a)

typedef struct {

double real, imaginary;

} Complex;

(b) Complex c1, c2, c3;

(c)

Complex make_complex(double real, double imaginary)

{

Complex c;

c.real = real;

c.imaginary = imaginary;

return c;

}

(d)

Complex add_complex(Complex c1, Complex c2)

{

Complex c3;

c3.real = c1.real + c2.real;

c3.imaginary = c1.imaginary + c2.imaginary;

return c3;

}

11. [was #10; modified] The a member will occupy 8 bytes, the union e will take 8 bytes (the largest member, c, is 8 bytes long), and the array f will require 4 bytes, so the total space allocated for s will be 20 bytes.

14. [was #12; modified]

(a)

double area(struct shape s)

{

if (s.shape_kind == RECTANGLE)

return s.u.rectangle.height * s.u.rectangle.width;

else

return 3.14159 * s.u.circle.radius * s.u.circle.radius; }

(b)

struct shape move(struct shape s, int x, int y)

{

struct shape new_shape = s;

new_shape.center.x += x;

new_shape.center.y += y;

return new_shape;

}

(c)

struct shape scale(struct shape s, double c)

{ struct shape new_shape = s;

if (new_shape.shape_kind == RECTANGLE) {

new_shape.u.rectangle.height *= c;

new_shape.u.rectangle.width *= c;

} else

new_shape.u.circle.radius *= c;

return new_shape;

}

15. [was #14]

(a) enum week_days {MON, TUE, WED, THU, FRI, SAT, SUN};

(b) typedef enum {MON, TUE, WED, THU, FRI, SAT, SUN} Week_days;

17. [was #16] All the statements are legal, since C allows integers and

enumeration values to be mixed without restriction. Only (a), (d), and (e) are safe. (b) is not meaningful if i has a value other than 0 or 1. (c) will not yield a meaningful result if b has the value 1.

Answers to Selected Programming Projects

1. [was #6; modified]

#include <stdio.h>

#define COUNTRY_COUNT \

((int) (sizeof(country_codes) / sizeof(country_codes[0])))

struct dialing_code {

char *country;

int code;

};

const struct dialing_code country_codes[] =

{{"Argentina", 54}, {"Bangladesh", 880},

{"Brazil", 55}, {"Burma (Myanmar)", 95},

{"China", 86}, {"Colombia", 57},

{"Congo, Dem. Rep. of", 243}, {"Egypt", 20}, {"Ethiopia", 251}, {"France", 33}, {"Germany", 49}, {"India", 91}, {"Indonesia", 62}, {"Iran", 98}, {"Italy", 39}, {"Japan", 81}, {"Mexico", 52}, {"Nigeria", 234}, {"Pakistan", 92}, {"Philippines", 63}, {"Poland", 48}, {"Russia", 7}, {"South Africa", 27}, {"South Korea", 82}, {"Spain", 34}, {"Sudan", 249}, {"Thailand", 66}, {"Turkey", 90}, {"Ukraine", 380}, {"United Kingdom", 44}, {"United States", 1}, {"Vietnam", 84}};

int main(void)

{

int code, i;

printf("Enter dialing code: ");

scanf("%d", &code);

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

if (code == country_codes[i].code) {

printf("The country with dialing code %d is %s\n", code, country_codes[i].country);

return 0;

}

printf("No corresponding country found\n");

return 0;

}

3. [was #8]

#include <stdio.h>

#include "readline.h"

#define NAME_LEN 25

#define MAX_PARTS 100

struct part {

int number;

char name[NAME_LEN+1];

int on_hand;

};

int find_part(int number, const struct part inv[], int np); void insert(struct part inv[], int *np);

void search(const struct part inv[], int np);

void update(struct part inv[], int np);

void print(const struct part inv[], int np);

/********************************************************** * main: Prompts the user to enter an operation code, * * then calls a function to perform the requested * * action. Repeats until the user enters the * * command 'q'. Prints an error message if the user * * enters an illegal code. * **********************************************************/ int main(void)

{

char code;

struct part inventory[MAX_PARTS];

int num_parts = 0;

for (;;) {

printf("Enter operation code: ");

scanf(" %c", &code);

while (getchar() != '\n') /* skips to end of line */ ;

switch (code) {

case 'i': insert(inventory, &num_parts);

break;

case 's': search(inventory, num_parts);

break;

case 'u': update(inventory, num_parts);

break;

case 'p': print(inventory, num_parts);

break;

case 'q': return 0;

defau …… 此处隐藏:3807字,全部文档内容请下载后查看。喜欢就下载吧 ……

C语言程序设计现代方法第16章答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/121648.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)