传送门POJ 2810 - Take Your Vitamins
字符串处理的题. 没什么难度, 不过我被精度坑了一下.
哎...
吐槽一下题目, 题目没说明是不是可能全部的药都大于1%的, 那这个时候是输出那句话还是不输出(╯‵□′)╯ ┴─┴
详情见代码
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
char name[1000];
double A, R;
char unit[1000];
char temp[1000][1000];
int main()
{
//freopen("input.txt", "r", stdin);
int k = 0;
while (scanf("%lf", &A))
{
memset(name, 0, sizeof(name));
memset(unit, 0, sizeof(unit));
if (A < 0)
{
printf("Provides no significant amount of:\n");
if (k > 0) //说明有待处理的数据
{
for (int i = 0; i < k; i++)
printf("%s\n", temp[i]);
}
break;
}
scanf("%s%lf", unit, &R);
getchar();
fgets(name, 1000, stdin); //name后面有个回车符, 必须处理.
name[strlen(name) - 1] = '\0';
double pec = A / R * 100;
if (pec < 1) //放到待处理的数组里.
{
strcpy(temp[k++], name);
continue;
}
else
printf("%s %.1f %s %.0f%%\n", name, A, unit, pec);
}
return 0;
}