标签:define struct switch car sele 奖学金 height while temp
练习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", 173, 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 0; }
练习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 < 180) std->height = 180; if (std->weight > 80) std->weight = 80; } 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 0; }
练习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 = { 0, 0, 0 }; 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 0; }
练习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 = 0; i < n - 1; i++) { for (j = n - 1; j > i; j--) if (a[j - 1].height > a[j].height) swap_Student(&a[j - 1], &a[j]); } } int main(void) { int i; Student std[] = { {0 }, { 0 }, { 0 }, { 0 }, { 0 }, }; for (i = 0; i < NUMBER; i++) { printf("姓名 身高 体重 奖学金\n "); scanf("%s %i %lf %d", &std[i].name, &std[i].height,& std[i].weight, &std[i].schols); } for (i = 0; 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 == 1) { puts("\n按身高排序。"); for (i = 0; i < NUMBER; i++) printf("%-8s %6d%6.1f%7ld\n", std[i].name, std[i].height, std[i].weight, std[i].schols); } return 0; }
练习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 0; /* 无法行驶 */ c->pt = dest; /* 更新当前位置(向dest移动) */ c->fuel -= d; /* 更新燃料(减去行驶距离d所消耗的燃料) */ return 1; /* 成功行驶 */ } int main(void) { Car mycar = { { 0.0, 0.0 }, 90.0 }; int move_method; double x_distance; double y_distance; while (1) { int select; Point dest; /* 目的地的坐标 */ put_info(mycar); /* 显示当前位置和剩余燃料 */ printf("开动汽车吗【Yes···1 / No···0】:"); scanf("%d", &select); if (select != 1) break; printf("两种方法,1输入目的地,2输入X方向和Y方向的行驶距离:"); scanf("%d", &move_method); switch (move_method) { case 1: printf("目的地的X坐标:"); scanf("%lf", &dest.x); printf(" Y坐标:"); scanf("%lf", &dest.y); break; case 2: 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 0; }
标签:define struct switch car sele 奖学金 height while temp
原文地址:https://www.cnblogs.com/nightswatch-candle/p/11939231.html