结构体的处理(以c++primer plus 第六章习题4为例)

 1 const unsigned int strsize = 50;
 2 struct bop     //结构体就像一个数据类型如int  使用前应该先给他一个变量如本题中的bop
 3 {
 4     char fullname[strsize];     // real name
 5     char title[strsize];        // job title
 6     char bopname[strsize];      // secret BOP name
 7     int preference;             // 0 = fullname, 1 = title, 2 = bopname
 8 };
 9 void display_by_name(const struct bop *bopArray, unsigned int size)  //const 最小授权  结构体不会被改变     boparray还是一个数组   数组在传递的时候  一般用地址传递  就是指针传递     传递数组时要带上它的数组规模
10 {
11     for (size_t i = 0; i < size; i++)
12     {
13         cout << bopArray[i].fullname << endl;        //调用结构体中成员的方式
14     }
15 }
16 void display_by_title(const struct bop *bopArray, unsigned int size)
17 {
18     for (size_t i = 0; i < size; i++)
19     {
20         cout << bopArray[i].title << endl;
21     }
22 }
23 void display_by_bopname(const struct bop *bopArray, unsigned int size)
24 {
25     for (size_t i = 0; i < size; i++)
26     {
27         cout << bopArray[i].bopname << endl;
28     }
29 }
30 void display_by_preference(const struct bop *bopArray, unsigned int size)
31 {
32     for (size_t i = 0; i < size; i++)
33     {
34         if (bopArray[i].preference == 0)
35         {
36             cout << bopArray[i].fullname << endl;
37         }
38         else if (bopArray[i].preference == 1)
39         {
40             cout << bopArray[i].title << endl;
41         }
42         else if (bopArray[i].preference == 2)
43         {
44             cout << bopArray[i].bopname << endl;
45         }
46     }
47 }
48 void p6_4(void)
49 {
50     const struct bop bopArray[5] = {                             //给结构体变量初始化的方式
51         {"Wimp Macho", "YYY", "Y----", 0},
52         {"XXXXXXXX", "2XXXX", "3XXXXX", 1},
53         {"AAAAAAAA", "2AAAA", "3AAAAA", 2},
54         {"BBBBBBBB", "2BBBB", "3BBBBB", 0},
55         {"CCCCCCCC", "4CCCC", "3CCCCC", 1}
56     };
57     char choice = 0;
58
59     cout << "Benevolent Order of Proframers Report" << endl;
60     cout << left << setw(30) << "a. display by name" << "b. display by title" << endl;
61     cout << left << setw(30) << "c. display by bopname" << "d. display by preference" << endl;
62     cout << left << setw(30) << "q. quit" << endl;
63     cout << "Enter your choice:";
64
65     while (cin >> choice)
66     {
67         if (choice == ‘q‘)
68         {
69             break;
70         }
71         switch (choice)
72         {
73         case ‘a‘:
74             display_by_name(bopArray, 5);
75             break;
76
77         case ‘b‘:
78             display_by_title(bopArray, 5);
79             break;
80
81         case ‘c‘:
82             display_by_bopname(bopArray, 5);
83             break;
84
85         case ‘d‘:
86             display_by_preference(bopArray, 5);
87             break;
88
89         default:
90             break;
91         }
92         cout << "Next choice:";
93     }
94     cout << "Bye!" << endl;
95     return;
96 }

原文地址:https://www.cnblogs.com/gc612/p/9736791.html

时间: 2024-10-20 11:09:07

结构体的处理(以c++primer plus 第六章习题4为例)的相关文章

C Primer Plus 第十一章 习题总结……2015.5.10

C Primer Plus         第五版 第十一章  字符串和字符串函数 1.没有加上字符串结尾标志 空字符'\0': 2.#include<stdio.h> int main(void) { char note[]="See you at snack bar: "; char *ptr; ptr=note; puts(ptr); puts(++ptr); note[7]='\0'; puts(note); puts(++ptr); return 0; } 3.#

C++Primer 第十六章

//1.模板定义以关键字template开始,后跟一个模板参数列表,此列表不能为空.编译器用推断出的模板参数来实例化一个特定版本的函数.类型参数前必须使用class或者typename(推荐使用typename). template <typename T> bool comp(T t0, T t1){return t0 > t1;} //2.除了定义类型参数外,还可以在模板中定义非类型参数.一个非类型参数表示一个值(必须是常量表达式,实际使用过程中,最好只使用整形,而不要使用其他类型)

c primer plus 第六章编程练习2

使用嵌套循环产生下列图案:$$$$$$$$$$$$$$$ #include<stdio.h> int main(void){ int i,j; for(i=0;i<5;i++){ for(j=0;j<=i;j++){ printf("$"); } printf("\n"); } return 0; }

C primer 第六章习题6.13

//编写程序包含8个元素的int类型数组,用for循环设置数组元素,用do while循环显示元素值. #include <stdio.h>int main(void){       int num[8],index,i,pow; for (index=0,i=0,pow=1;index<=7;index++){                pow*=2;                num[index]=pow;            do    {            i++;

【C++ Primer】 第六章 函数基础

函数基础 练习 练习6.6 1 #include<iostream> 2 using namespace std; 3 4 double myADD(double num1, double num2) 5 { 6 double result = num1 + num2; 7 static unsigned iCnt = 0; 8 ++iCnt; 9 cout << "该函数累计执行了" << iCnt << "次" &

结构体的基础知识及存储分配

一.结构体的访问 1.结构体成员的的直接访问,如下结构体: struct  A{ int a; long *b; char c[20]; }; struct A   com; 结构体成员通过操作符"."访问,表达式com.a的结果是个数组名,可以把它使用在任何可以使用数组名的地方,com.a[4],将选择一个数组元素. 2.结构体成员的间接访问 struct A *p; 可以使用(*p).a访问结构体成员,但这种形式有点不简洁所以使用操作符"->"来访问结构体

C++学习笔记(六)--结构体

1.一种自定义的类型--结构体定义: struct 结构体名称 { //成员表列也称作域 还可以包括函数,即函数成员,不过一般结构体类型中不包含,而是放在类中. 类型名 成员名; };这种结构体类型类似于数据库中的记录例: struct Me{ char name[20]; char IDnumber[20]; int age; };此时只是声明了一个Me类型,并未在内存中分配存储单元,只有定义了结构体类型的变量后,才会分配内存,类似int,float这些类型一样. 2.声明结构体变量的方法:

结构体指针的学习

#include <stdio.h>struct Point{  /* 定义结构体 */double x;double y;double z;};int main(){    struct Point a={100,100,0}; /* 对点A进行初始化 */    struct Point b;    struct Point *c;    c=&b; /* 将b的地址给c */    (*c).x=a.x; /* 对c所代表的地址进行赋值,实质上是对b进行赋值 */    (*c)

Linux C中结构体初始化

    在阅读GNU/Linux内核代码时,我们会遇到一种特殊的结构初始化方式.该方式是某些C教材(如谭二版.K&R二版)中没有介绍过的.这种方式称为指定初始化(designated initializer).下面我们看一个例子,Linux-2.6.x/drivers/usb/storage/usb.c中有这样一个结构体初始化项目: static struct usb_driver usb_storage_driver = { .owner = THIS_MODULE, .name = "