练习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. Tkinter最佳实践(半小时)

    概述: 简介 Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和 ...

  2. 自己实现LinkedList

    public class MyLinkedList<E> { private Node first; private int size; public int size(){ return ...

  3. 【linux】linux命令lsof和grep命令的配合使用---linux根据端口查看PID,根据PID关键字高亮显示

    lsof命令,根据端口,查看进程PID lsof -i: ps命令+grep命令 --color参数,根据PID查看进程详情,高亮显示关键字 ps -ef | grep --color=always

  4. Python爬取猫眼电影《飞驰人生》47858万条评论并对其进行数据分析

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Yura不说数据说 ,PYuraL PS:如有需要Python学习资 ...

  5. c# jetbrains rider使用一段时间后

    先上一个官方的对比图吧.https://www.jetbrains.com/rider/compare/rider-vs-visual-studio/index.html 功能上直接超越visual ...

  6. arcgis api for javascript 学习(五) 实现地图绘制工具

    1.本文实现的功能为鼠标与地图之间的交互,能够在地图上绘制不同形状的图形 2.代码部分主要讲到的为Graphic函数的相关功能 <!DOCTYPE html> <html> & ...

  7. 软工个人项目(Java实现)

    一. Github地址: https://github.com/RuiBingo/PersonalWork 二.个人PSP表格: PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟) Plan ...

  8. LeetCode——Department Top Three Salaries(巧妙使用子查询)

    The Employee table holds all employees. Every employee has an Id, and there is also a column for the ...

  9. JDK10源码分析之HashMap

    HashMap在工作中大量使用,但是具体原理和实现是如何的呢?技术细节是什么?带着很多疑问,我们来看下JDK10源码吧. 1.数据结构 采用Node<K,V>[]数组,其中,Node< ...

  10. [20190929]bash使用bc计算的相关问题.txt

    [20190929]bash使用bc计算的相关问题.txt --//快放假没什么事情,使用bash写一些小程序,转化number到oracle number编码,使用bc计算功能,发现一些小问题--/ ...