这个题目做了好久。。。
思路不够清晰
//#define LOCAL #include <stdio.h> #include <string.h> #include <ctype.h> #include <math.h> #define MAXN 20 + 10 int number[MAXN]; int main() { #ifdef LOCAL freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); #endif int cases; int i, j; char type; char btemp, ctemp; float P, U, I; int count; bool flag1, flag2, flag3, flag4; int point; scanf("%d", &cases); for(i = 0; i < cases; i++) { // 数据初始化 P = 0; U = 0; I = 0; btemp = getchar();// 除掉数字后面的换行符 // 数据输入 ctemp = getchar(); for(int k = 0; k < 2; k++) { flag1 = false; flag2 = false; flag3 = false; flag4 = false; count = 0; // 计数器,保存获取的数字的位数 while(ctemp != '=') { type = ctemp; // 将'='前的字符保存在 type 中 ctemp = getchar(); } // 获取type后面的数字及单位 ctemp = getchar(); for(j = 0; ctemp != 'W' && ctemp != 'V' && ctemp != 'A'; j++) { if(isdigit(ctemp)) { number[j] = ctemp - '0'; count++; } else switch(ctemp){ case 'm': flag1 = true;break; case 'k': flag2 = true;break; case 'M': flag3 = true;break; case '.': { flag4 = true; point = j; j--; } } ctemp = getchar(); } if(type == 'P') { for(j = 0; j < count + 1; j++) { P += number[j] * pow(10.0, count - 1 - j); } if(flag4) P /= pow(10.0, count - point); if(flag1) P /= 1000; if(flag2) P *= 1000; if(flag3) P *= 1000000; } else if(type == 'U') { for(j = 0; j < count; j++) { U += number[j] * pow(10.0, count - 1 - j); } if(flag4) U /= pow(10.0, count - point); if(flag1) U /= 1000; if(flag2) U *= 1000; if(flag3) U *= 1000000; } else if(type == 'I') { for(j = 0; j < count; j++) { I += number[j] * pow(10.0, count - 1 - j); } if(flag4) I /= pow(10.0, count - point); if(flag1) I /= 1000; if(flag2) I *= 1000; if(flag3) I *= 1000000; } } while(ctemp != '\n')// 读完此行剩下的字符 ctemp = getchar(); // 数据输出 printf("Problem #%d\n", i + 1); if(P == 0) { printf("P=%.2fW\n", U * I); } else if(U == 0) { printf("U=%.2fV\n", P / I); } else if(I == 0) { printf("I=%.2fA\n", P / U); } printf("\n"); } return 0; }
本文深入探讨了一个使用C++语言解决数值计算问题的程序,包括从输入到输出的完整流程,涉及功率、电压和电流的转换与计算。程序通过多种条件判断和数学运算,实现了复杂数值的准确处理,并展示了如何通过标准输入输出进行数据交互。
433

被折叠的 条评论
为什么被折叠?



