文档章节

第十四章 结构和其他数据形式

yohoj
 yohoj
发布于 2015/06/05 12:04
字数 2243
阅读 2
收藏 0
点赞 0
评论 0

#include<stdio.h>
#include <string.h>


struct month{
	char sname[10];
	char lname[10];
	int n;
};

int main(void)
{
	int i,j;
	struct month name[12];
	char name1[10];
	char l[12][10]={"January",
					"February",
					"Martch",
					"April",
					"May",
					"June",
					"July",
					"August",
					"September",
					"October",
					"November",
					"December"};
	char s[12][10]={"Jan",
				   "Feb",
				   "Mar",
				   "Apr",
				   "May",
				   "Jun",
				   "Jul",
				   "Aug",
				   "Sep",
				   "Oct",
				   "Nov",
				   "Dec"};
	int num[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	for(i=0;i<12;i++)
	{
		for(j=0;j<10;j++)
		{
			name[i].sname[j]=s[i][j];
			name[i].lname[j]=l[i][j];
		}
		name[i].n=num[i];
	}
	scanf("%s",name1);
	for(i=0;i<12;i++)
	{
		if((strcmp(name1,name[i].lname)) == 0)
			break;
	}
	printf("%s %s %d",name[i].sname,name[i].lname,name[i].n);
	return 0;
	
}

#include<stdio.h>
#include<string.h>
int days(char *month1,struct sm months[12],int num[12]);
struct sm{
	char lmonth[10];//月份名
	char smonth[10];//缩写
	char nmonth[10];//月份号
};

int main()
{
	struct sm months[12];//十二个月
	int day,year;
	int two,i,j,sum;
	char month1[10];
	char n[12][10]={"1","2","3","4","5","6","7","8","9","10","11","12"};
	char l[12][10]={"January",
					"February",
					"Martch",
					"April",
					"May",
					"June",
					"July",
					"August",
					"September",
					"October",
					"November",
					"December"};
	char s[12][10]={"Jan",
				   "Feb",
				   "Mar",
				   "Apr",
				   "May",
				   "Jun",
				   "Jul",
				   "Aug",
				   "Sep",
				   "Oct",
				   "Nov",
				   "Dec"};
	int num1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	int num2[12]={31,29,31,30,31,30,31,31,30,31,30,31};
	//讲月份各个表示方法放到数据结构中
	for(i=0;i<12;i++)
	{
		for(j=0;j<10;j++)
		{
			months[i].smonth[j]=s[i][j];
			months[i].lmonth[j]=l[i][j];
			months[i].nmonth[j]=n[i][j];
		}
	}
	printf("请输入日,月和年:");
	scanf("%d",&day);
	while((gets(month1))==" "||(gets(month1))=="\n")
		continue;
	scanf("%d",&year);
	if((year % 4 == 0 && year % 100 != 0 ) ||year % 400 ==0)//润年时总天数
	{
		
		sum=days(month1,months,num2)+day;
	}
	else//平年时总天数
	{
		sum=days(month1,months,num1)+day;
	}
	printf("%d",sum);
}

int days(char *month1,struct sm months[12],int num[12])//除去当月的总天数计算函数
{
	int i,j;
	int sum=0;
	//定位到月份
	for(i=0;i<12;i++)
	{
		if((strcmp(month1,months[i].lmonth)) == 0 ||(strcmp(month1,months[i].smonth)) == 0 ||(strcmp(month1,months[i].nmonth))==0)
			break;
	}//计算除去当月的总天数
		for(j=0;j<i;j++)
		{
			sum=sum+num[j];
		}
	return sum;
}

#include<stdio.h>
#define MAXTITL 40
#define MAXAUTL 40
#define MAXBKS 100
struct book{
	char title[MAXTITL];
	char author[MAXAUTL];
	float value;
};

int main(void)
{
	struct book library[MAXBKS];
	int count = 0;
	int index,i,j,n;
	char ch1,ch[MAXBKS];
	int num[MAXBKS];

	printf("Please enter the book title.\n");
	printf("Press [enter] at the start of a line to stop.\n");
	while(count < MAXBKS && gets(library[count].title) != NULL && library[count].title[0] != '\0')
	{
		printf("Now enter the author,\n");
		gets(library[count].author);
		printf("Now enter the value.\n");
		scanf("%f",&library[count++].value);
		while(getchar() != '\n')
			continue;
		if(count < MAXBKS)
		{
			printf("Enter the next title.\n");
		}
	}
	if(count>0)
	{
		printf("Here is the list of your books:\n");
		for(index = 0;index<count;index++)
			printf("%s by %s: $%.2f\n",library[index].title,library[index].author,library[index].value);
		for(i=0;i<count;i++)
		{
			ch[i]=library[i].title[0];
			num[i]=library[i].value;
		}
		for(i=0;i<count;i++)
		{
			for(j=i+1;j<count;j++)
			{
				if(ch[j]<ch[i])
				{
					ch1=ch[j];
					ch[j]=ch[i];
					ch[i]=ch1;
				}
			}
		}
		for(i=0;i<count;i++)
		{
			for (j=i+1;j<count;j++)
			{
				if(num[j]<num[i])
				{
					n=num[j];
					num[j]=num[i];
					num[i]=n;
				}
			}
		}
			printf("Here is the list of your books:\n");
			for(i=0;i<count;i++)
			{
				for(j=0;j<count;j++)
				{
					if(library[j].title[0]==ch[i])
						printf("%s by %s: $%.2f\n",library[j].title,library[j].author,library[j].value);
				}
			}
			printf("Here is the list of your books:\n");
			for(i=0;i<count;i++)
			{
				for(j=0;j<count;j++)
				{
					if(library[j].value == num[i])
						printf("%s by %s: $%.2f\n",library[j].title,library[j].author,library[j].value);
				}
			}
		
	}
	else
		printf("No books?Too bad.\n");
	return 0;
}

#include<stdio.h>
#include<string.h>
void outputa(struct people df);
void outputb(struct people *);
struct fullname{
	char firstname[10];
	char secondname[10];
	char lastname[10];
};
struct people{
	long card;
	struct fullname handle;
};
int main(void)
{
	struct people df{
		302039823,
		{"Ewen"," ","Mkj"},
	};
	outputa(df);
	outputb(&df);
	return 0;
}

void outputa(struct people df)
{
	if((strcmp(df.handle.secondname," "))==0)
		printf("%s,%s - %ld",df.handle.firstname,df.handle.lastname,df.card);
	else
		printf("%s,%s %c.- %ld",df.handle.firstname,df.handle.lastname,df.handle.secondname[0],df.card);
}
void outputb(struct people *df)
{
	if((strcmp(df->handle.secondname," "))==0)
		printf("%s,%s - %ld",df->handle.firstname,df->handle.lastname,df->card);
	else
		printf("%s,%s - %ld",df->handle.firstname,df->handle.lastname,df->card);

}

#include<stdio.h>
#define CSIZE 4
float avera(float n[3]);
void output(struct student num[CSIZE],int i);
void outputg(struct student num[CSIZE],int i);
struct fullname{
	char fname[10];
	char lname[10];
};
struct student{
	struct fullname stu;
	float grade[3];
	float avr;
};

int main()
{
	int i=0;
	struct student num[CSIZE];
	printf("Enter the first name\n");
	printf("Press [enter] at the start of a line to stop.\n");
	while(gets(num[i].stu.fname)!=NULL&&num[i].stu.fname[0]!='\0'&&i < 4)
	{
		printf("Enter the last name\n");
		gets(num[i].stu.lname);
		printf("Enter the 3 scores\n");
		scanf("%f%f%f",&num[i].grade[0],&num[i].grade[1],&num[i].grade[2]);
		num[i].avr=avera(num[i].grade);
		while(gets(num[i].stu.fname) == "\n")
			continue;
		i++;
		printf("Enter the first name\n");
		printf("Press [enter] at the start of a line to stop.\n");
	}
	output(num,i);
	outputg(num,i);
	return 0;
}

float avera(float n[3])
{
	float sum=0;
	float a;
	int i;
	for(i=0;i<3;i++)
	{
		sum=sum+n[i];
	}
	a=sum/3;
	return a;
}

void output(struct student num[CSIZE],int i)
{
	int j;
	for(j=0;j<i;j++)
		printf("%s %s's grade:%.1f %.1f %.1f,the average is:%.2f\n",num[j].stu.fname,num[j].stu.lname,num[j].grade[0],num[j].grade[1],num[j].grade[2],num[j].avr);
	
}

void outputg(struct student num[CSIZE],int i)
{
	int j,k;
	float sum[3]={0};
	float ave[3];
	for(j=0;j<3;j++)
	{
		for(k=0;k<i;k++)
		{
		sum[j]=sum[j]+num[k].grade[j];
		}
		ave[j]=sum[j]/i;
		printf("%.2f ",ave[j]);
	}
	
}

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXTITL 40
#define MAXAUTL 40
#define MAXBKS 10
void read_file(struct book *p, char* filename);  
void display(struct book *p);
void change(struct book *p);
void add(struct book *p);
void reduce(struct book *p);
void write_file(struct book *p, char *str);
int count = 0;
 struct book {
	  char title[MAXTITL];  
	  char author[MAXAUTL];  
	  float value; 
	  };   
int main(void) 
{   
	struct book library[MAXBKS];   
	char command[10];   
	read_file(library,"book.dat");   
	puts("select the functions:\n");   
	puts("d: display all book            c: change a book\n");  
	puts("r: reduce a book               a: add books\n");  
	puts("other: save and quit:");  
	while( 1 )  
	{    
		gets(command);   
		switch( command[0] )         
		{     
			case 'd': 
			display(library); 
			break;    
			case 'c':
			change(library); 
			break;    
			case 'r': 
			reduce(library); 
			break;    
			case 'a': 
			add(library);  
			break;     
			default : 
			write_file(library,"book.dat"); 
			return 0;   
		}    
		printf("select: d/c/r/a/other:");  
	} 
}    
void read_file(struct book *p, char* filename)  
{   
	FILE * pbooks;  
	if ((pbooks = fopen(filename, "r+b")) == NULL)  
	{    
		printf("Can't open %s file\n", filename);   
		exit(1);  
	}   
	rewind(pbooks);
	while (count < MAXBKS &&  fread(p+count, sizeof (struct book), 1, pbooks) == 1)  
	{
		count++;
	}
	fclose(pbooks);   
	printf("read %s successfully! There are %d books.\n", filename, count); 
}     
void display(struct book *p) 
{  
	int i;   
	if ( count == 0 ) 
		printf("There is no book.\n");  
	printf("book list for %d books:\n",count);   
	for(i=0; i<count; i++)    
		printf("%s by %s: $%.2f\n",p[i].title, p[i].author, p[i].value); 
}    
void change(struct book *p) 
{  
	int i;   
	char title[MAXTITL];   
	printf("input the name of the book which you want change:");  
	gets(title);   
	for(i=0; i<count; i++)    
		if ( strcmp(p[i].title, title) == 0 )   
		{      
			puts("Please add new a book title.");     
			gets(p[i].title);     
			puts("Now enter the author.");     
			gets(p[i].author);       
			puts("Now enter the value.");      
			scanf("%f", &p[i].value);     
			getchar();      
			printf("the book has been changed!\n");     
			return;   
		}   
		printf("error!the book is not in the list\n");  
		return; 
}   
void reduce(struct book *p) 
{  
	int i;   
	char title[MAXTITL];  
	if(count == 0)  
	{    
		printf("error! book list is empty!");    
		return;  
	}   
	printf("input the name of the book which you want change:"); 
	gets(title);   
	for(i=0; i<count; i++)    
		if ( strcmp(p[i].title, title) == 0 )
		{     
			p[i] = p[count-1];    
			strcpy(p[count-1].title, "");    
			strcpy(p[count-1].author, "");    
			p[count-1].value=0;    
			count--;     
			printf("%s has been delete from book list\n", title);    
			return;   
		}   
		printf("error! %s is not in book list\n", title);  
		return; 
	}   
void add(struct book *p)
{   
	if (count == MAXBKS)  
	{    
		fputs("error!The book.dat file is full.", stderr);   
		return;  
	}   
	puts("Please add new book titles.");   
	puts("Press [enter] at the start of a line to stop.");   
	while (count < MAXBKS && gets(p[count].title) != NULL && p[count].title[0] != '\0')  
	{    
		puts("Now enter the author.");   
		gets(p[count].author);    
		puts("Now enter the value.");  
		scanf("%f", &p[count++].value);   
		getchar();   
		if (count < MAXBKS)    
			puts("Enter the next title.");  
		else    
			puts("The book list file is full.");
	}
}

void write_file(struct book *p, char *str)
{   
	FILE * pbooks;   
	pbooks = fopen(str, "r+b");//将文件以可写模式打开,目的是清空文件内容  pbooks = fopen(str, "r+b"); 
	fwrite(p, sizeof (struct book), count, pbooks);  
	fclose(pbooks);
}

#include<stdio.h>
#include<stdlib.h>
#define NUM 12
void xianshi();
void read_file(struct seat *plan,char name[10]);//读取函数
void nempty(struct seat plan[NUM]);//输出空位总数
void lempty(struct seat plan[NUM]);//输出还有未被预订的位置编号
void alp(struct seat plan[NUM]);
void customer(struct seat plan[NUM]);//预订座位
void delete_seat(struct seat plan[NUM]);//删除已预订的空位
void write_file(struct seat plan[NUM],char name[10]);//写入文件
int n=0;
struct seat{
	int num;
	bool used;
	char fname[10];
	char lname[10];
};
int main()
{
	int i;
	struct seat plan[NUM]={
		{1,true},
		{2,true},
		{3,true},
		{4,true},
		{5,true},
		{6,true},
		{7,true},
		{8,true},
		{9,true},
		{10,true},
		{11,true},
		{12,true}
	};
	char ch;
	read_file(plan,"yh.txt");
	printf("%d\n",n);
	for(i=0;i<n;i++)
	{
		printf("num %d %d assigned by %s %s\n",plan[i].num,plan[i].used,plan[i].fname,plan[i].lname);
	}
	xianshi();
	while((ch=getchar()) != 'f')
	{
		switch(ch)
		{
			case 'a':
				nempty(plan);
				break;
			case 'b':
				lempty(plan);
				break;
			case 'c':
				alp(plan);
				break;
			case 'd':
				customer(plan);
				break;
			case 'e':
				delete_seat(plan);
				break;
			default:
				puts("Enter a wrong word,please try again");
				break;
		}
		xianshi();
		ch=getchar();
	}
	write_file(plan,"yh.txt");

}

void xianshi()
{
	puts("To show a function, enter its letter label:");
	puts("a) Show number of empty seats");
	puts("b) Show list of empty seats");
	puts("c) Show alphabetical list of seats");
	puts("d) Assigv a customer to a seat assigbment");
	puts("e) Delete a seat assignment");
	puts("f) Quit");
	
}

void read_file(struct seat *plan,char name[10])
{
	FILE *fp;
	if((fp=fopen(name,"r+b"))==NULL)
	{
		printf("Read %s failed",name);
		exit(1);
	}
	rewind(fp);
	while(n<NUM && fread(plan+n,sizeof(struct seat),1,fp)==1)
	{
		n++;
	}
	fclose(fp);
	printf("read %s is successfully\n",name);
}

void nempty(struct seat plan[NUM])
{
	int i;
	int n=0;
	for(i=0;i<NUM;i++)
	{
		if(plan[i].used)
			n++;
	}
	printf("Here are %d seats is empty\n",n);
}
void lempty(struct seat plan[NUM])
{
	puts("These seats is empty.");
	int i;
	for(i=0;i<NUM;i++)
	{
		if(plan[i].used)
			printf("%d ",plan[i].num);
	}
	printf("\n");
}

void alp(struct seat plan[NUM])
{
	int i;
	for(i=0;i<NUM;i++)
	{
		printf("num %d",plan[i].num);
		if(plan[i].used==true)
			printf( "is empty");
		else
			printf("is assigned");
	}
}

void customer(struct seat plan[NUM])
{
	int i,n,m;
	puts("What's seat do you want?");
	scanf("%d",&n);
	while(plan[n-1].used==false)
	{
		puts("This seat is booked,please choose another!");
		scanf("%d",&n);
	}
	for(i=0;i<NUM;i++)
	{
		if(plan[i].num==n)
			m=i;
	}
	puts("Enter the first name:");
	scanf("%s",plan[m].fname);
	puts("Enter the lastname:");
	scanf("%s",plan[m].lname);
	plan[m].used=false;
}

void delete_seat(struct seat plan[NUM])
{
	int i,n;
	puts("What is the seat do you want to delete");
	scanf("%d",&n);
	for(i=0;i<NUM;i++)
	{
		if(plan[i].num==n)
		{
			plan[i].used=true;
		
		}
	}
}

void write_file(struct seat plan[NUM],char name[10])
{
	FILE *fp;
	if((fp=fopen(name,"r+b"))==NULL)
	{
		printf("Open %s faild",name);
		exit(1);
	}
	fwrite(plan,sizeof(struct seat),NUM,fp);
	puts("Write successfully");
	fclose(fp);
}


© 著作权归作者所有

共有 人打赏支持
yohoj
粉丝 0
博文 16
码字总数 14735
作品 0
宁波
《HTML+CSS3权威指南》笔记摘要 - 目录

主要是想借助这个平台让大家给我学习途中的错误和不好的地方给与纠正。 我会努力最短时间内完成更新,如果发现有错别字或者Code错误,请指出。 信息:建议使用Opera10以上或者Google浏览器测...

Contac ⋅ 2011/12/02 ⋅ 1

《跟我学Shiro》系列教程PDF完结版下载

Shiro目录 第一章 Shiro简介 第二章 身份验证 第三章 授权 第四章 INI配置 第五章 编码/加密 第六章 Realm及相关对象 第七章 与Web集成 第八章 拦截器机制 第九章 JSP标签 第十章 会话管理 ...

HenrySun ⋅ 2016/10/09 ⋅ 0

《Windows Server 2008 系统管理之道》 视频突击 电子文档 视频教程 下载

《Windows Server 2008 系统管理之道》 视频突击 清华出版社 系列 系统学习 彻底掌握Windows Server 2008 Windows Server Core 电子文档 下载网址 http://www.91xueit.com 视频教程下载网址 ...

onesthan ⋅ 2010/02/09 ⋅ 0

python核心编程--第十四章

14.1 可调用对象 许多的python对象都是我们所说的可调用的,即是任何能通过函数操作符“()”来调用的对象。要调用可调用对象,函数操作符得紧跟在可调用对象之后。python有4种可调用对象:...

fzyz_sb ⋅ 2013/06/19 ⋅ 4

ceph书籍与培训

基础篇 引言 第一章:ceph的前世今生 1.1 ceph的诞生 1.2 ceph的市场前景 第二章:ceph的根基-RADOS 2.1 ceph与分布式文件系统 2.2 RADOS的组成 2.2.1 MON简介 2.2.1 OSD简介 2.2.1 MDS简介 ...

秦牧羊 ⋅ 2015/06/10 ⋅ 5

运维工作解释

运维工作解释 2017/3/9 PC小记:《运维之下》的文档作者对运维工作的解释清晰明了,有利于工作的划分和职业的规划,因而值得整理后分享。 https://github.com/opera443399/ops/tree/master/d...

pcnk ⋅ 2017/03/09 ⋅ 0

Python核心编程:第十四章

14.1 可调用的对象 许多python对象都是可调用的,即能通过函数操作符“()”来调用对象。 Python有四种可调用的对象:函数,方法,类,以及一些类的实例 14.1.4类的实例 python给类提供了名...

finndai ⋅ 2016/11/21 ⋅ 0

【原创】《深入剖析Tomcat》读书笔记

第一章 一个简单的Web服务器 第二章 一个简单的servlet容器 第三章 连接器 第四章 Tomcat的默认连接器 第五章 servlet容器 第六章 生命周期 第七章 日志记录器 第八章 载入器 第九章 Sessio...

pandudu ⋅ 2015/12/22 ⋅ 0

BIRT-商业智能报表工具开发案例指南

打算近期出版一本全面介绍BIRT使用的书籍,能够帮助大家全面了解BIRT的方方面面,用丰富的案例和源码,例子,诠释这个报表设计工具,展现工具,开源框架,扩展框架的种种优点特性。 初稿内容...

birtbird ⋅ 2013/01/10 ⋅ 6

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vim编辑模式、命令模式

编辑模式 vim要从一般模式进入编辑模式只要按字母 i 、I、a、A、o、O键就可以了 要从编辑模式回到一般模式按键盘上的Esc键即可。 按键 作用 i 在当前字符前插入 I 在光标所在行的行首插入 o ...

黄昏残影 ⋅ 22分钟前 ⋅ 0

OSChina 周五乱弹 —— 如果有一天不当程序员了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享off的单曲《我唱情歌给你听》 《我唱情歌给你听》- off 手机党少年们想听歌,请使劲儿戳(这里) @小小编辑 :#如果不做程序...

小小编辑 ⋅ 29分钟前 ⋅ 4

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种...

人觉非常君 ⋅ 今天 ⋅ 0

多线程如何控制执行顺序

线程的生命周期说明: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、...

MarinJ_Shao ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Django第一期

安装Django 去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令: python setup.py install ...

大不了敲一辈子代码 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部