首页 > 编程语言 >实验6 C语言结构体、枚举应用编程

实验6 C语言结构体、枚举应用编程

时间:2024-06-10 13:43:56浏览次数:16  
标签:int void 编程 C语言 枚举 printf Date output 978

4. 实验任务4

 1 #include<stdio.h>
 2 #define N 10
 3 
 4 typedef struct {
 5     char isbn[20];
 6     char name[80];
 7     char author[80];
 8     double sales_price;
 9     int sales_count;
10 }Book;
11 
12 void output(Book x[],int);
13 void sort(Book x[],int n);
14 double sales_amount(Book x[],int);
15 
16 int main()
17 {
18     Book x[N]={{"978-7-229-14156-1","源泉","安·兰德",84,59},
19                 {"978-7-5133-5261-1", "李白来到旧金山", "谭夏阳",48,16},
20                 {"978-7-5617-4347-8", "陌生人日记", "周怡芳", 72.6,27},
21                 {"978-7-5722-5475-8", "芯片简史", "汪波", 74.9, 49},
22                 {"978-7-5046-9568-0", "数据化决策", "道格拉斯·W·哈伯德", 49, 42},
23                 {"978-7-5133-4388-6", "美好时代的背后", "凯瑟琳.布", 34.5, 39},
24                 {"978-7-1155-0509-5", "无穷的开始:世界进步的本源", "戴维·多伊奇", 37.5,55},
25                 {"978-7-5321-5691-7", "何为良好生活", "陈嘉映", 29.5 , 31},
26                 {"978-7-5133-5109-6", "你好外星人", "英国未来出版集团", 118,42},
27                 {"978-7-2011-4617-1", "世界尽头的咖啡馆", "约翰·史崔勒基", 22.5,44}};
28 
29     printf("图书馆销量排名:\n");
30     sort(x,N);
31     output(x,N);
32 
33     printf("\n图书馆销售总额:%.2lf\n",sales_amount(x,N));
34 
35     return 0;
36 }
37 void output(Book x[],int n)
38 {
39     int i;
40     
41         printf("ISBN号\t\t\t书名\t\t\t\t作者\t\t\t售价\t\t销售册数\n"); 
42     
43     for(i=0;i<n;++i)
44         printf("%-24s%-32s%-20s\t%-13.2lf\t%4d\n",x[i].isbn,x[i].name,x[i].author,x[i].sales_price,x[i].sales_count);
45 }
46 void sort(Book x[],int n)
47 {
48     int i,j,k;
49     Book min;
50 
51     for(i=0;i<n-1;++i)
52         {
53             for(j=1,min=x[0],k=0;j<n-i;++j)
54                 if(x[j].sales_count<min.sales_count)
55                     {
56                         min=x[j];
57                         k=j;
58                     }
59                 x[k]=x[j-1];
60                 x[j-1]=min;
61         }
62 }
63 double sales_amount(Book x[],int n)
64 {
65     int i;
66     double s=0;
67 
68     for(i=0;i<n;++i)
69         s+=x[i].sales_count*x[i].sales_price;
70 
71     return s;
72 }

5. 实验任务5

  1 #include<stdio.h>
  2 typedef struct
  3 {
  4     int year;
  5     int month;
  6     int day;
  7 }Date;
  8 
  9 void input(Date *pd);
 10 int day_of_year(Date d);
 11 int compare_dates(Date d1,Date d2);
 12 
 13 void test1();
 14 void test2();
 15 
 16 int main()
 17 {
 18     printf("测试1: 输入日期, 打印输出这是一年中第多少天\n");
 19     test1();
 20 
 21     printf("\n测试2: 两个人年龄大小关系\n");
 22     test2();
 23 
 24     return 0;
 25 }
 26 void test1()
 27 {
 28     Date d;
 29     int i;
 30 
 31     printf("输入日期:(以形如2024-06-01这样的形式输入)\n");
 32     for(i = 0; i < 3; ++i) {
 33         input(&d);
 34         printf("%04d-%02d-%02d是这一年中第%d天\n\n", d.year, d.month, d.day, day_of_year(d));
 35     }
 36 
 37 }
 38 void test2()
 39 {
 40     Date Alice_birth, Bob_birth;
 41     int i;
 42     int ans;
 43 
 44     printf("输入Alice和Bob出生日期:(以形如2005-08-11这样的形式输入)\n");
 45     for(i = 0; i < 3; ++i)
 46     {
 47 
 48         input(&Alice_birth);
 49         input(&Bob_birth);
 50         ans=compare_dates(Alice_birth,Bob_birth);
 51 
 52         if(ans==0)
 53             printf("Alice和Bob一样大\n\n");
 54         else if(ans == -1)
 55             printf("Alice比Bob大\n\n");
 56         else
 57             printf("Alice比Bob小\n\n");
 58     }
 59 
 60 }
 61 void input(Date *pd)
 62 {
 63     scanf("%d-%d-%d",&pd->year,&pd->month,&pd->day);
 64 }
 65 int day_of_year(Date d)
 66 {
 67     int i,s=0;
 68 
 69     for(i=1;i<d.month;++i)
 70         if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
 71             s+=31;
 72         else if(i==2)
 73             if(d.year%4==0&&d.year%100!=0 ||d.year%400==0)
 74                 s+=29;
 75             else 
 76                 s+=28;
 77         else
 78             s+=30;
 79 
 80     s+=d.day;
 81 
 82     return s;
 83 }
 84 int compare_dates(Date d1,Date d2)
 85 {
 86     if(d1.year>d2.year)
 87         return 1;
 88     else if(d1.year<d2.year)
 89         return -1;
 90     else if(d1.month>d2.month)
 91         return 1;
 92     else if(d1.month<d2.month)
 93         return -1;
 94     else if(d1.day>d2.day)
 95         return 1;
 96     else if(d1.day<d2.day)
 97         return -1;
 98     else
 99         return 0;
100 }

6. 实验任务6

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define N 20
 4 
 5 enum Role{admin,student,teacher};
 6 
 7 typedef struct 
 8 {
 9     char username[N];
10     char password[N];
11     enum Role type;
12 
13 }Account;
14 
15 void output(Account x[],int n);
16 
17 int main()
18 {
19     Account x[]={{"A1001", "123456", student},
20                     {"A1002", "123abcdef", student},
21                     {"A1009", "xyz12121", student}, 
22                     {"X1009", "9213071x", admin},
23                     {"C11553", "129dfg32k", teacher},
24                     {"X3005","921kfmg917",student}};
25     int n;
26     n=sizeof(x)/sizeof(Account);
27     output(x,n);
28 
29     return 0;
30 }
31 void output(Account x[],int n)
32 {
33     int i,k,m;
34     
35     for(i=0;i<n;++i)
36     {
37         printf("%-10s\t",x[i].username);
38 
39         for(k=0;x[i].password[k]!=0;k++)
40             printf("*");
41 
42         printf("  \t");
43         
44         m=x[i].type;
45 
46         if(m==0)
47             printf("admin");
48         else if(m==1)
49             printf("student");
50         else
51             printf("teacher");
52 
53         printf("\n");
54     }
55 }

7. 实验任务7

 

  1 #include<stdio.h>
  2 #include<string.h>
  3 typedef struct
  4 {
  5     char name[20];
  6     char phone[12];
  7     int vip;
  8 }Contact;
  9 
 10 void set_vip_contact(Contact x[],int n,char name[]);
 11 void output(Contact x[],int n);
 12 void display(Contact x[],int n);
 13 
 14 #define N 10
 15 
 16 int main()
 17 {
 18     Contact list[N]={{"刘一", "15510846604", 0},
 19                      {"陈二", "18038747351", 0},
 20                      {"张三", "18853253914", 0},
 21                      {"李四", "13230584477", 0},
 22                      {"王五", "15547571923", 0},
 23                      {"赵六", "18856659351", 0},
 24                      {"周七", "17705843215", 0},
 25                      {"孙八", "15552933732", 0},
 26                      {"吴九", "18077702405", 0},
 27                      {"郑十", "18820725036", 0}};
 28     int vip_cnt,i;
 29     char name[20];
 30 
 31     printf("显示原始通讯录信息:\n");
 32     output(list,N);
 33 
 34     printf("\n输入要设置的紧急联系人个数:");
 35     scanf("%d",&vip_cnt);
 36     printf("输入%d个紧急联系人姓名:\n",vip_cnt);
 37     for(i=0;i<vip_cnt;++i)
 38         {
 39             scanf("%s",name);
 40             set_vip_contact(list,N,name);
 41     }
 42 
 43     printf("\n显示通讯录列表:(按姓名字典升序排列,紧急联系人最先显示)\n");
 44     display(list,N);
 45     output(list,N);
 46 
 47     return 0;
 48 }
 49 void set_vip_contact(Contact x[],int n,char name[])
 50 {
 51     int i;
 52 
 53     for(i=0;i<n;++i)
 54         if(strcmp(name,x[i].name)==0)
 55             {
 56                 x[i].vip=1;
 57                 break;
 58             }
 59 }
 60 void display(Contact x[],int n)
 61 {
 62     int i,j,k=0;
 63     Contact t;
 64 
 65     for(i=0;i<n;++i)
 66         if(x[i].vip)
 67             {
 68                 t=x[i];
 69                 x[i]=x[k];
 70                 x[k++]=t;
 71         }
 72 
 73         for(i=0;i<k-1;++i)
 74             for(j=0;j<k-i-1;++j)
 75                 if(strcmp(x[j].name,x[j+1].name)>0)
 76                 {
 77                     t=x[j];
 78                     x[j]=x[j+1];
 79                     x[j+1]=t;
 80                 }
 81     for(i=k;i<n;++i)
 82         for(j=k;j<n-1;++j)
 83             if(strcmp(x[j].name,x[j+1].name)>0)
 84             {
 85                 t=x[j];
 86                 x[j]=x[j+1];
 87                 x[j+1]=t;
 88             }
 89 }
 90 void output(Contact x[],int n)
 91 {
 92     int i;
 93 
 94     for(i=0;i<n;++i)
 95     {
 96         printf("%-10s%-15s",x[i].name,x[i].phone);
 97         if(x[i].vip)
 98             printf("%5s","*");
 99         printf("\n");
100     }
101 }

 

 

 

 

标签:int,void,编程,C语言,枚举,printf,Date,output,978
From: https://www.cnblogs.com/zbb07/p/18240621

相关文章

  • Java-14_网络编程
    文章目录1.网络编程概述1.1软件架构1.2网络基础2.网络通信要素2.1如何实现网络中的主机互相通信2.2通信要素一:IP地址和域名2.2.1IP地址2.2.2域名2.3通信要素二:端口号2.4通信要素三:网络通信协议2.TCP与UDP协议2.1TCP协议与UDP协议2.2三次握手2.3四次挥手......
  • Socket编程权威指南(四)彻底解密 Epoll 原理
    在上一篇文章中,我们优化了基于Socket的网络服务器,从最初的select/poll模型进化到了高效的epoll。很多读者对epoll的惊人性能表示极大的兴趣,对它的工作原理也充满了好奇。今天,就让我们一起揭开epoll神秘的面纱,深入剖析其内部运作机制,进一步提升你的Linux网络编程......
  • C++Primer Plus 第12章 类和动态内存分配 12.10编程练习第1题new,delete的指向深度拷
    C++PrimerPlus第12章类和动态内存分配12.10编程练习第1题`提示:练习一定要动手操作涉及标准函数及关键词1,new[],delete[],strlen(),strcpy_s(),cout,endl,explicit例如:1,对于下面的类的声明:`提示:设计数组和字符串的new,delete文章目录C++PrimerPlus第12章类......
  • Java 18风暴来袭:解锁编程新纪元
    一、引言Java18的发布标志着Java语言在性能、安全性和开发效率方面的又一次飞跃。本次更新不仅带来了新的语言特性,还包括了一些实验性功能和工具的改进。这些新特性旨在帮助开发者编写更高效、更安全的代码,并提升开发体验。二、新特性概述1.默认使用UTF-8字符编码(JEP400)......
  • 【C语言从入门到入土】第四章数组
    第四章数组———————-数组的引入你所有的压力,都是因为你太想要了,你所有的痛苦,都是因为你太较真了。有些事不能尽你意,就是在提醒你改转弯了。如果事事都如意,那就不叫生活了,珍惜所有不期而遇,看淡所有的不辞而别。文章目录第四章数组4.1如何定义一个数组1.相同......
  • 程序分享--常见算法/编程面试题:最长公共前缀
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容,持续上传中。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满......
  • Python-金融编程第二版-GPT-重译--一-
    Python金融编程第二版(GPT重译)(一)原文:annas-archive.org/md5/d2f94efd019a2e2cb5c4fa9f260d63c译者:飞龙协议:CCBY-NC-SA4.0第一部分:Python与金融本部分介绍了Python在金融领域的应用。它包括三章:第一章简要讨论了Python的一般情况,并论述了为什么Python确实非常......
  • Python-金融编程第二版-GPT-重译--四-
    Python金融编程第二版(GPT重译)(四)原文:annas-archive.org/md5/d2f94efd019a2e2cb5c4fa9f260d63c译者:飞龙协议:CCBY-NC-SA4.0第八章:金融时间序列时间的唯一目的是让一切不是同时发生。阿尔伯特·爱因斯坦金融时间序列数据是金融领域最重要的数据类型之一。这是按日期和/......
  • Python-金融编程第二版-GPT-重译--三-
    Python金融编程第二版(GPT重译)(三)原文:annas-archive.org/md5/d2f94efd019a2e2cb5c4fa9f260d63c译者:飞龙协议:CCBY-NC-SA4.0第六章:面向对象编程软件工程的目的是控制复杂性,而不是创建它。PamelaZave介绍面向对象编程(OOP)是当今最流行的编程范式之一。正确使用时,它与过......
  • Python-金融编程第二版-GPT-重译--二-
    Python金融编程第二版(GPT重译)(二)原文:annas-archive.org/md5/d2f94efd019a2e2cb5c4fa9f260d63c译者:飞龙协议:CCBY-NC-SA4.0第四章:使用NumPy进行数值计算计算机是无用的。它们只能给出答案。巴勃罗·毕加索介绍本章介绍了Python的基本数据类型和数据结构。尽管Py......