题很简单,但是由于粗心,导致各种纠结,WA了N多次。。。。。
AC代码如下:
1 #include<stdio.h> 2 #include<string.h> 3 4 void func(char str[]) 5 { 6 int len, i, j, con, dot, n; 7 double value[100], sum; 8 char s[100]; 9 len=strlen(str); 10 memset(value, 0, sizeof(value)); 11 for (i=0; i<len; i++) 12 { 13 if (str[i] == '=') 14 { 15 sum=0; 16 dot=1; 17 con=str[i-1]; 18 for (j=i+1; j<len; j++) 19 { 20 if(str[j]!='.' && (str[j]<'0'||str[j]>'9')) 21 { 22 s[j-i-1]='\0'; 23 break; 24 } 25 s[j-i-1]=str[j]; 26 } 27 i=j; 28 n=strlen(s); 29 for (j=0; j<n; j++) 30 { 31 if (s[j] >= '0' && s[j] <='9') 32 { 33 sum=sum*10+s[j]-'0'; 34 } 35 else 36 { 37 for (j=j+1; j<n; j++) 38 { 39 sum=sum*10+s[j]-'0'; 40 dot*=10; 41 } 42 } 43 } 44 value[con]=1.0*sum/dot; 45 if (str[i] == 'm') 46 value[con]*=0.001; 47 if (str[i] == 'k') 48 value[con]*=1000; 49 if (str[i] == 'M') 50 value[con]*=1000000; 51 } 52 } 53 if (!value['U']) 54 printf("U=%.2lfV\n",1.0*value['P']/value['I']); 55 if (!value['P']) 56 printf("P=%.2lfW\n",1.0*value['U']*value['I']); 57 if (!value['I']) 58 printf("I=%.2lfA\n",1.0*value['P']/value['U']); 59 } 60 61 int main() 62 { 63 int T, i; 64 char str[20000]; 65 scanf("%d%*c", &T); 66 for (i=0; i<T; i++) 67 { 68 gets(str); 69 printf("Problem #%d\n",i+1); 70 func(str); 71 printf("\n"); 72 } 73 return 0; 74 }