①每件作品都要标明著者、作品标题、作品诞生年份及其所属分类。
② Painting类要求显示画的宽和高等尺寸信息。
③ Music类要求显示能够代表其内容的关键信息,例如"D Major"。
④ Chamber类要求显示其中包括的演奏人员的数目。
编写一个存储艺术作品的程序。艺术作品分为三类:Painting、Music和Chamber,Chamber是Music中的一类。要求如下所述。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 #include<stdio.h> enum art_class{ PAINTING, MUSIC, CHAMBER, ART_CLASS_MAX }; typedef struct art_s{ #define AUTHOR_STR_MAX (20) #define TITLE_STR_MAX (20) #define DATE_STR_MAX (50) #define ARTICLE_DESC_STR_MAX (100) char author[AUTHOR_STR_MAX]; char title[TITLE_STR_MAX]; char date[DATE_STR_MAX]; enum art_class class; union{ struct{ int widgh; int height; }painting; union{ struct{ char description[ARTICLE_DESC_STR_MAX]; }music; struct{ char description[ARTICLE_DESC_STR_MAX]; int musicians_num; }chamber; }u; }; }art_t; #define get_painting_info(c) (c)->painting #define get_music_info(c) (c)->u.music #define get_chamber_info(c) (c)->u.chamber int main() { art_t art[10]; char *author="夜雨*飘雪"; char *title="No.1"; char *date = "2021年11月3日"; char *description = "没谁了"; memcpy(art[0].author,author,strlen(author)+1); memcpy(art[0].title,title,strlen(title)+1); memcpy(art[0].date,date,strlen(date)+1); art[0].class = CHAMBER; memcpy(get_chamber_info(&art[0]).description,description,strlen(description)+1); get_chamber_info(&art[0]).musicians_num=2; printf("author is %s\n",art[0].author); printf("title is %s\n",art[0].title); printf("date is %s\n",art[0].date); printf("class is %d\n",art[0].class); printf("description is %s\n",get_chamber_info(&art[0]).description); printf("musicians_num is %d\n",get_chamber_info(&art[0]).musicians_num); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
- ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
- ¥15 如何在炒股软件中,爬到我想看的日k线
- ¥15 seatunnel 怎么配置Elasticsearch
- ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
- ¥15 (标签-MATLAB|关键词-多址)
- ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
- ¥500 52810做蓝牙接受端
- ¥15 基于PLC的三轴机械手程序
- ¥15 多址通信方式的抗噪声性能和系统容量对比