便签(串)

便签(串)

时间: 1ms        内存:1M

描述:

用串的块链存储并一次性输出你认识的3个人的信息,包括姓名,年龄,性别,身高。

输入:

输出:

示例输入:

(这里只输入一个)
Wen Gehua
21
boy
172.3

示例输出:

name:Wen Gehua
age:21
sex:boy
height:172.3

提示:

参考答案(内存最优[924]):

#include <stdio.h>
#include <string.h>
struct fri
{
	char mes[1000];
	struct fri *next;
}fr[3];
int main()
{	
	int zimu(char a);
	int i;
	int n=0;
    struct fri *head,*p;
	int count;
	p=head=&fr[0];
	fr[0].next=&fr[1];
	fr[1].next=&fr[2];
	fr[2].next=NULL;
	while(p!=NULL&&gets(p->mes))
	{
		if(!zimu(p->mes[0])) 
		{	
			continue;
		}
	for(i=0;i<4;i++)
	{
		if(i==0) 
		{	
			count=strlen(p->mes)+1;
		}
		else
		{
			gets(&p->mes[count]);
			count=strlen(p->mes)+1;
		}
		if(i!=3)p->mes[strlen(p->mes)]='#';
	}
	p=p->next;
	n++;
	}
	if(p==&fr[1]) fr[0].next=NULL;
	if(p==&fr[2]) fr[1].next=NULL;
	p=head;
	while(p!=NULL)
	{	i=0;
		printf("name:");
		for(;i<strlen(p->mes);i++)
		{	
			if(p->mes[i]!='#')
			printf("%c",p->mes[i]);
			else
			{
				i++;break;
			}
		}
		printf("\nage:");
			for(;i<strlen(p->mes);i++)
		{
			if(p->mes[i]!='#')
			printf("%d",p->mes[i]-'0');
			else
			{
				i++;break;
			}
		}
		printf("\nsex:");
			for(;i<strlen(p->mes);i++)
		{
			if(p->mes[i]!='#')
			printf("%c",p->mes[i]);
			else
			{
				i++;break;
			}
		}
		printf("\nheight:");
			for(;i<strlen(p->mes);i++)
		{
			if(p->mes[i]!='#')
			{
				if(p->mes[i]!='.')
			printf("%d",p->mes[i]-'0');
				else printf("%c",p->mes[i]);
			}
			else
			{
				i++;break;
			}
		}
		printf("\n");
		p=p->next;
	}
	return 0;
}  
	int zimu(char a)
	{
		if(a>='a'&&a<='z')return 1;
		else if(a>='A'&&a<='Z')return 1;
		else return 0;
	}

参考答案(时间最优[0]):

#include <stdio.h>
#include <string.h>
struct fri
{
	char mes[1000];
	struct fri *next;
}fr[3];
int main()
{	
	int zimu(char a);
	int i;
	int n=0;
    struct fri *head,*p;
	int count;
	p=head=&fr[0];
	fr[0].next=&fr[1];
	fr[1].next=&fr[2];
	fr[2].next=NULL;
	while(p!=NULL&&gets(p->mes))
	{
		if(!zimu(p->mes[0])) 
		{	
			continue;
		}
	for(i=0;i<4;i++)
	{
		if(i==0) 
		{	
			count=strlen(p->mes)+1;
		}
		else
		{
			gets(&p->mes[count]);
			count=strlen(p->mes)+1;
		}
		if(i!=3)p->mes[strlen(p->mes)]='#';
	}
	p=p->next;
	n++;
	}
	if(p==&fr[1]) fr[0].next=NULL;
	if(p==&fr[2]) fr[1].next=NULL;
	p=head;
	while(p!=NULL)
	{	i=0;
		printf("name:");
		for(;i<strlen(p->mes);i++)
		{	
			if(p->mes[i]!='#')
			printf("%c",p->mes[i]);
			else
			{
				i++;break;
			}
		}
		printf("\nage:");
			for(;i<strlen(p->mes);i++)
		{
			if(p->mes[i]!='#')
			printf("%d",p->mes[i]-'0');
			else
			{
				i++;break;
			}
		}
		printf("\nsex:");
			for(;i<strlen(p->mes);i++)
		{
			if(p->mes[i]!='#')
			printf("%c",p->mes[i]);
			else
			{
				i++;break;
			}
		}
		printf("\nheight:");
			for(;i<strlen(p->mes);i++)
		{
			if(p->mes[i]!='#')
			{
				if(p->mes[i]!='.')
			printf("%d",p->mes[i]-'0');
				else printf("%c",p->mes[i]);
			}
			else
			{
				i++;break;
			}
		}
		printf("\n");
		p=p->next;
	}
	return 0;
}  
	int zimu(char a)
	{
		if(a>='a'&&a<='z')return 1;
		else if(a>='A'&&a<='Z')return 1;
		else return 0;
	}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注