用scanf接收string的输入和用printf输出string需要特别注意,格式如下
#include <stdio.h>
#include <string>
using namespace std;
int main()
{
string a;
a.resize(100);
scanf("%s", &a[0]);
printf("%s",a.c_str());
return 0;
}
下面是本题的解答:
#pragma warning(disable:4996)
#include<iostream>
#include<string>
using namespace std;
int main()
{
string name, maxname, minname;
name.resize(10);
maxname.resize(10);
minname.resize(10);
int year, month, day, maxyear = 1814, maxmonth = 9, maxday = 6, minyear = 2014, minmonth = 9, minday = 6;
int n, count = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
getchar();
scanf("%s %d/%d/%d", &name[0], &year, &month, &day);
if (year * 365 + month * 31 + day > 2014 * 365 + 9 * 31 + 6 || year * 365 + month * 31 + day < 1814 * 365 + 9 * 31 + 6)
continue;
count++;
if (year * 365 + month * 31 + day >= maxyear * 365 + maxmonth * 31 + maxday)
{
maxyear = year;
maxmonth = month;
maxday = day;
maxname = name;
}
if (year * 365 + month * 31 + day <= minyear * 365 + minmonth * 31 + minday)
{
minyear = year;
minmonth = month;
minday = day;
minname = name;
}
}
if (count == 0)
printf("0");
else
printf("%d %s %s", count, minname.c_str(), maxname.c_str());
}