[转载] va  537 - artificial intelligence?
原文地址: va 537 - artificial intelligence？作者:灯心中的你人工智能？就是利用物理公式p=u*i进行计算的。 输入:包含多组数据,每组数据的第一行为一个整数n,表示有n中情况(case),接下来的n行每行有一个字符串,串中包含了p、u、i三者中的两者,让你计算出第三者。 输出:第一行为problem #k,k为第几种情况。第二行计算出的p、i或u的值。第三行为一个空行。 注意:(1)输入的字符串中的"="只会在数字域(data field)出现。 (2)数字中间没有空格(blank)、制表符(tab)。 (3)p的单位有w(瓦)、mw(毫瓦)、kw(千瓦)、mw(兆瓦)四种,计算时要进行转化,最后用w表示。u和i类似。 解题思想:(1)因为每个字符串会给出两个参数的值,所以就会有两个等号出现。首先确定两个等号的位置,用mark[0]和mark[1]表示。 (2)判断变量所用的单位:m,m,k,进行单位转化。 (3)找到给出的是p、u、i中的哪两个值,确定计算的公式:p=i*u,i=pu,u=pi. (4)将数字字符串转化成do ble型数字,进行计算。这里用到了atof函数,将字符型转化成浮点型,包含在stdlib.h头文件中。类似的还有函数itoa,atoi. (5)注意局部字符数组s[15]要及时清空,否则会导致计算结果有误差。 (6)主函数中的getchar不可少。 原代码如下:#incl destdio.h #incl destring.h #incl destdlib.h #incl dectype.h char inp t[1000]； void p_is(int x,int y) { int i,j,k,q； do ble p=1.0； for(i=x+1；；i) if(inp t[i]== v )break； for(j=y+1；；j) if(inp t[j]== a ) break； if(inp t[i-1]== m ) p=p1000； if(inp t[i-1]== m ) p=p*； if(inp t[i-1]== k ) p=p*1000； if(inp t[j-1]== m ) p=p1000； if(inp t[j-1]== m ) p=p*； if(inp t[j-1]== k ) p=p*1000； char s[15]； for(k=x+1,q=0；ki；k) if(！ isalpha(inp t[k])) s[q]=inp t[k]； p*=atof(s)； memset(s,0,sizeof(s))；及时清空,很重要 for(k=y+1,q=0；kj；k) if(！ isalpha(inp t[k])) s[q]=inp t[k]； p*=atof(s)； printf("p=%.2lfwn",p)；