您的位置:首页 > 其它

1028. 人口普查(20)

2016-02-20 21:12 417 查看
题目:http://www.patest.cn/contests/pat-b-practise/1028

1.代码—未解决堆栈溢出:

#include<stdio.h>

struct person
{
char name[10];
char a[20];
};

int main()
{
struct person p[10000];
int n,i,y_num,max_num,min_num;
scanf("%d",&n);

int bigger(char a[10],char b[10]);

for (i=0;i<n;i++)
scanf("%s %s",p[i].name,p[i].a);

//确定最年长和最年轻下表
y_num = n;
for (i=0;i<n;i++)
{
if (bigger("2014/09/07",p[i].a)&&bigger(p[i].a,"1814/09/05"))
{
max_num = i;
min_num = i;
break;
}
}

for (i=0;i<n;i++)
{
if (bigger("2014/09/07",p[i].a)&&bigger(p[i].a,"1814/09/05"))
{
if (bigger(p[i].a,p[min_num].a))
min_num = i;
if (bigger(p[max_num].a,p[i].a))
max_num = i;
}
else
y_num--;
}

if (y_num>0)
{
printf("%d %s %s",y_num,p[max_num].name,p[min_num].name);
}
else
printf("0");

return 0;
}

int bigger(char a[10],char b[10])
{
int i;
for (i=0;i<10;i++)
{
if (a[i]-b[i]>0)
return 1;
if (a[i]-b[i]<0)
return 0;
}
return 0;
}


2.百度了一下,发现可以在for循环内直接处理数据,因为每次循环变量空间能够得到释放。

for循环内处理代码:http://blog.csdn.net/wyxdexyq/article/details/40371239
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: