P = U * I
有单位的转换。
就是个小模拟题。
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
for(int i = 1 ; i <= n; i++)
{
double U=0,P=0,I=0;
char c[1000];
int j = 0;
while((c[j] = getchar())!='=') j++;
if(c[j-1]=='U')
{
scanf("%lf",&U);
c[++j]=getchar();
if(c[j]=='m') U*=0.001;
else if(c[j]=='M') U *=1000000;
else if(c[j]=='k') U *=1000;
j++;
}
if(c[j-1]=='I')
{
scanf("%lf",&I);
c[++j]=getchar();
if(c[j]=='m') I*=0.001;
else if(c[j]=='M') I *=1000000;
else if(c[j]=='k') I *=1000;
j++;
}
if(c[j-1]=='P')
{
scanf("%lf",&P);
c[++j]=getchar();
if(c[j]=='m') P*=0.001;
else if(c[j]=='M') P *=1000000;
else if(c[j]=='k') P *=1000;
j++;
}
while((c[j] = getchar())!='=') j++;
if(c[j-1]=='U')
{
scanf("%lf",&U);
c[++j]=getchar();
if(c[j]=='m') U*=0.001;
else if(c[j]=='M') U *=1000000;
else if(c[j]=='k') U *=1000;
j++;
}
if(c[j-1]=='I')
{
scanf("%lf",&I);
c[++j]=getchar();
if(c[j]=='m') I*=0.001;
else if(c[j]=='M') I *=1000000;
else if(c[j]=='k') I *=1000;
j++;
}
if(c[j-1]=='P')
{
scanf("%lf",&P);
c[++j]=getchar();
if(c[j]=='m') P*=0.001;
else if(c[j]=='M') P *=1000000;
else if(c[j]=='k') P *=1000;
j++;
}
printf("Problem #%d\n",i);
if(P==0)
{
P = U*I;
printf("P=%.2lfW\n",P);
}
else if(I==0)
{
I = P / U;
printf("I=%.2lfA\n",I);
}
else if(U==0)
{
U = P / I ;
printf("U=%.2lfV\n",U);
}
printf("\n");
}
return 0;
}