练习12-1

/*
用表示学生的结构体来显示高尾的信息
*/ #include <stdio.h> #define NAME_LEN 64 /* 姓名的字符数 */ /*=== 表示学生的结构体 ===*/
struct student {
char name[NAME_LEN]; /* 姓名 */
int height; /* 身高 */
float weight; /* 体重 */
long schols; /* 奖学金 */
}; int main(void)
{
struct student takao = { "Takao", , 86.2 }; printf("姓名 = %s,%p\n", takao.name, &takao.name);
printf("身高 = %d,%p\n", takao.height,&takao.height);
printf("体重 = %.1f,%p\n", takao.weight, &takao.weight);
printf("奖学金 = %ld,%p\n", takao.schols, &takao.schols); return ;
}

练习12-2

/*
拥有超能力的洋子(在结构体中引入typedef名)
*/ #include <stdio.h> #define NAME_LEN 64 /* 姓名的字符数 */ /*=== 表示学生的结构体 ===*/
typedef struct student {
char name[NAME_LEN]; /* 姓名 */
int height; /* 身高 */
float weight; /* 体重 */
long schols; /* 奖学金 */
} Student; /*--- 将std指向的学生的身高变为180cm,体重变为80kg ---*/
void hiroko(Student* std)
{
if (std->height < ) std->height = ;
if (std->weight > ) std->weight = ;
} int main(void)
{
int height, weight, schols;
printf("身高是:体重是:奖学金是:");
scanf("%d%d%d", &height, &weight, &schols);
Student sanaka = { "Sanaka", height, weight, schols }; hiroko(&sanaka); printf("姓名 = %s\n", sanaka.name);
printf("身高 = %d\n", sanaka.height);
printf("体重 = %.1f\n", sanaka.weight);
printf("奖学金 = %ld\n", sanaka.schols); return ;
}

练习12-3

/*
返回结构体的函数
*/ #include <stdio.h> /*=== xyz结构体 ===*/
struct xyz {
int x;
long y;
double z;
}; /*--- 返回具有{x,y,z}的值的结构体xyz ---*/
struct xyz scan_xyz()
{
int x;
long y;
double z;
struct xyz temp;
printf("x=,y=,z=");
scanf("%d%ld%lf", &x, &y, &z);
temp.x = x;
temp.y = y;
temp.z = z;
return temp; } int main(void)
{
struct xyz s = { , , };
s = scan_xyz(); printf("xyz.x = %d\n", s.x);
printf("xyz.y = %ld\n", s.y);
printf("xyz.z = %f\n", s.z); return ;
}

练习12-4

/*
将5名学生的身高按升序排列
*/ #include <stdio.h>
#include <string.h> #define NUMBER 5 /* 学生人数 */
#define NAME_LEN 64 /* 姓名的字符数 */ /*=== 表示学生的结构体 ===*/
typedef struct {
char name[NAME_LEN]; /* 姓名 */
int height; /* 身高 */
double weight; /* 体重 */
int schols; /* 奖学金 */
} Student; /*--- 将x和y指向的学生进行交换 ---*/
void swap_Student(Student* x, Student* y)
{
Student temp = *x;
*x = *y;
*y = temp;
} /*--- 将学生数组a的前n个元素按身高进行升序排列 ---*/
void sort_by_height(Student a[], int n)
{
int i, j; for (i = ; i < n - ; i++) {
for (j = n - ; j > i; j--)
if (a[j - ].height > a[j].height)
swap_Student(&a[j - ], &a[j]);
}
} int main(void)
{
int i; Student std[] = { { }, { }, { }, { }, { },
}; for (i = ; i < NUMBER; i++) { printf("姓名 身高 体重 奖学金\n ");
scanf("%s %i %lf %d", &std[i].name, &std[i].height,& std[i].weight, &std[i].schols);
} for (i = ; i < NUMBER; i++)
printf("%-8s %6d %6.1f %7ld \n",
std[i].name, std[i].height, std[i].weight, std[i].schols); sort_by_height(std, NUMBER); /* 按身高进行升序排列 */ int choice;
printf("是否按身高排列,是->1,否->0\n");
scanf("%d", &choice); if (choice == ) {
puts("\n按身高排序。");
for (i = ; i < NUMBER; i++)
printf("%-8s %6d%6.1f%7ld\n",
std[i].name, std[i].height, std[i].weight, std[i].schols);
}
return ;
}

练习12-5

#include <math.h>
#include <stdio.h> #define sqr(n) ((n) * (n)) typedef struct {
double x; /* X坐标 */
double y; /* Y坐标 */
} Point; typedef struct {
Point pt; /* 当前位置 */
double fuel; /* 剩余燃料 */
} Car; double distance_of(Point pa, Point pb)
{
return sqrt(sqr(pa.x - pb.x) + sqr(pa.y - pb.y));
} void put_info(Car c)
{
printf("当前位置:(%.2f, %.2f)\n", c.pt.x, c.pt.y);
printf("剩余燃料:%.2f升\n", c.fuel);
} int move(Car* c, Point dest)
{
double d = distance_of(c->pt, dest); /* 行驶距离 */
if (d > c->fuel) /* 行驶距离超过了燃料 */
return ; /* 无法行驶 */
c->pt = dest; /* 更新当前位置(向dest移动) */
c->fuel -= d; /* 更新燃料(减去行驶距离d所消耗的燃料) */
return ; /* 成功行驶 */
} int main(void)
{
Car mycar = { { 0.0, 0.0 }, 90.0 };
int move_method;
double x_distance;
double y_distance;
while () {
int select;
Point dest; /* 目的地的坐标 */ put_info(mycar); /* 显示当前位置和剩余燃料 */ printf("开动汽车吗【Yes···1 / No···0】:");
scanf("%d", &select);
if (select != ) break; printf("两种方法,1输入目的地,2输入X方向和Y方向的行驶距离:");
scanf("%d", &move_method);
switch (move_method)
{
case :
printf("目的地的X坐标:"); scanf("%lf", &dest.x);
printf(" Y坐标:"); scanf("%lf", &dest.y);
break;
case :
printf("X方向行驶距离:"); scanf("%lf", &x_distance);
printf("Y方向行驶距离:"); scanf("%lf", &y_distance);
dest.x = x_distance + mycar.pt.x;
dest.y = y_distance + mycar.pt.y;
break;
}
if (!move(&mycar, dest))
puts("\a燃料不足无法行驶。");
} return ;
}

明解C语言 入门篇 第十二章答案的更多相关文章

  1. 明解C语言 入门篇 第五章答案

    练习5-1 /* 依次把1.2.3.4.5 赋值给数组的每个元素并显示(使用for语句) */ #include <stdio.h> int main(void) { int i; ]; ...

  2. 明解C语言 入门篇 第四章答案

    练习4-1 #include <stdio.h> int main(void) { int no; int x; do{ printf("请输入一个整数:"); sca ...

  3. 明解C语言 入门篇 第三章答案

    练习3-1 #include <stdio.h> int main() { int x; int y; puts("请输入两个整数."); printf("整 ...

  4. 明解C语言 入门篇 第二章答案

    练习2-1 #include <stdio.h> int main() { int x; int y; int percent; puts("请输入两个整数"); pr ...

  5. 明解C语言 入门篇 第一章答案

    练习1-1 #include <stdio.h> int main() { int a; a = 15; int b; b = 37; int c; c = a - b; printf(& ...

  6. 明解C语言 入门篇 第八章答案

    练习8-1 #include<stdio.h> #define diff(x,y)(x-y) int main() { int x; int y; printf("x=" ...

  7. 明解C语言 入门篇 第十三章答案

    练习13-1 /* 打开与关闭文件 */ #include <stdio.h> int main(void) { ]; FILE* fp; printf("请输入你要打开的文件& ...

  8. 明解C语言 入门篇 第十一章答案

    练习11-1 /* 用指针实现的字符串的改写 */ #include <stdio.h> int main(void) { "; printf("p = \" ...

  9. 明解C语言 入门篇 第十章答案

    练习10-1 #include <stdio.h> void adjust_point(int*n) { ) *n = ; ) *n = 0; } int main() { int x; ...

随机推荐

  1. 解决上一篇bean.xml中<bean>标签报错“ Error while downloading 'http://www.springframework.org/schema/beans/spring-beans.xsd........”

    在xml文件中,头部报错如题 一开始查询,说是头部少了“<?xml version="1.0" encoding="UTF-8"?>”,但是我并没有 ...

  2. ansible小结(八)ansible-playbook简单使用

    ansbile-playbook是一系统ansible命令的集合,其利用yaml 语言编写,运行过程,ansbile-playbook命令根据自上而下的顺序依次执行.同时,playbook开创了很多特 ...

  3. My97Datepicker 日历控件的使用

    如果显示中乱码可以再改变lang  js包 中的  以防乱码 var $lang = {errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\ ...

  4. iota: Golang 中优雅的常量

    阅读约 11 分钟 注:该文作者是 Katrina Owen,原文地址是 iota: Elegant Constants in Golang 有些概念有名字,并且有时候我们关注这些名字,甚至(特别)是 ...

  5. 故事2:.net程序员成长经历

    啊,最近一段时间在学习asp.net mvc ,一直没有接着写了,加上白天工作很忙,每天都很辛苦的哈,那咱接着说上一个故事哈. 当时第二天开始复习java面试题,非常的期待,从来没有去过公司,不知道别 ...

  6. python基础(31):进程(一)

    1. 什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行 ...

  7. MySQL学习——查询表里的数据

    MySQL学习——查询表里的数据 摘要:本文主要学习了使用DQL语句查询表里数据的方法. 数据查询 语法 select [distinct] 列1 [as '别名1'], ..., 列n [as '别 ...

  8. LinuxShell脚本——函数

    LinuxShell脚本——函数 摘要:本文主要学习了Shell中函数的定义和使用. 函数的定义 Shell函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接 ...

  9. CAD制图初学入门教程:怎么在CAD中绘制箭头

    在接触CAD的时候大家有没有和小编一样感觉无所适从,所以下面就来和大家分享一个CAD制图初学入门教程,在CAD中绘制箭头.在CAD图形上进行标注内容的时候一般都会使用箭头来进行指示,那具体怎么在CAD ...

  10. 五个常用的CSS简写

    1,margin/padding. (演示仅为margin,padding同理,需注意的是padding没有auto) 2.background. background: [background-co ...