题目主要是提取U P I等关键字,再输出计算结果.不难.可是第一遍不管怎么提交都是RE...╮(╯▽╰)╭
那叫一个想摔电脑....
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char s[1000];
double prefix(char c);
int main()
{
//freopen("input.txt","r",stdin);
int T;
int count = 1;
scanf("%d",&T);
getchar();
while (T--)
{
int numcount = 0;
double result = 1;
bool Pflag = false,Uflag = false, Iflag = false;
int i,k;
fgets(s,1000,stdin);
int len = strlen(s);
double I,U,P;
for (i = 0; i < len; i++)
{
if (s[i] == 'P' && s[i + 1] == '=')
{
Pflag = true;
numcount++;
P = atof(&s[i + 2]); //读取数值.
for (k = i; s[k] != 'W'; k++);
P *= prefix(s[k - 1]);
}
else if (s[i] == 'I' && s[i + 1] == '=')
{
Iflag = true;
numcount++;
I = atof(&s[i + 2]); //读取数值.
for (k = i; s[k] != 'A'; k++); //找到'A'
I *= prefix(s[k - 1]);
}
else if (s[i] == 'U' && s[i + 1] == '=')
{
Uflag = true;
numcount++;
U = atof(&s[i + 2]); //读取数值.
for (k = i; s[k] != 'V'; k++); //找到'V'
U *= prefix(s[k - 1]);
}
//接下来判断该输出哪一个变量
if (numcount == 2) //如果已经找到两个变量,终止搜索.
break;
}
printf("Problem #%d\n",count);
if (Pflag && Iflag)
printf("U=%.2fV\n\n",P / I);
else if (Pflag && Uflag)
printf("I=%.2fA\n\n",P / U);
else
printf("P=%.2fW\n\n",I * U);
count++;
}
return 0;
}
double prefix(char c)
{
if (c == 'k')
return 1000;
else if (c == 'M')
return 1000000;
else if (c == 'm')
return 0.001;
else
return 1;
}