void-man

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

读入一串字符串,期中包含电压,电流,功率期中的两个值,然你求出另外一个值,比较简单,就是读入时候

首先要根据单位识别读入的是哪个值,然后要把数值字符串转换成相应的浮点数,最后还要进行单位换算,给出结果

是挺麻烦复杂的,一定要小心

其次就是一些字符串读入的函数的一些区别比如gets()可以读入整个串,包括空格,它以回车符结束标志,详见随笔,scanf,gets()区别

直接上代码,慢慢看吧

#include <stdio.h>
#include
<string.h>
main()
{
int n;
char a[100];
float zheng,xiao,flag;

while(scanf("%d",&n)!=EOF)
{
getchar();
int i,j;
for(i=1;i<=n;i++)
{

float num[2];
char b[3];
gets(a);
// puts(a);
// putchar('\n');
int k=0;
float q;
for(j=0;j<strlen(a);j++)
{

if(a[j]=='=')
{zheng
=0.0,xiao=0.0,flag=0.1,q=1.0;
b[k]
=a[j-1];
// printf("%d %c ",j,a[j-1]);
j++;
while(a[j]>='0'&&a[j]<='9')
{zheng
=zheng*10.0+a[j]-'0';j++;
if(a[j]=='m')q=0.001;
else if(a[j]=='k')q=1000.0;
else if(a[j]=='M')q=1000000.0;
}
if(a[j]=='.')
{
j
++;
while(a[j]>='0'&&a[j]<='9')
{ xiao
=xiao+(a[j]-'0')*flag;j++;flag=flag*0.1;
if(a[j]=='m')q=0.001;
else if(a[j]=='k')q=1000.0;
else if(a[j]=='M')q=1000000.0;
}

}
num[k]
=(zheng+xiao)*q;
// printf("q= %f\n",num[k]);
k++;
}

}

printf(
"Problem #%d\n",i);
if((b[0]=='U'&&b[1]=='I')||(b[0]=='I'&&b[1]=='U'))
printf(
"P=%.2fW\n\n",num[0]*num[1]);
else if(b[0]=='U'&&b[1]=='P')
printf(
"I=%.2fA\n\n",num[1]/num[0]);
else if(b[0]=='P'&&b[1]=='U')
printf(
"I=%.2fA\n\n",num[0]/num[1]);
else if(b[0]=='P'&&b[1]=='I')
printf(
"U=%.2fV\n\n",num[0]/num[1]);
else if(b[0]=='I'&&b[1]=='P')
printf(
"U=%.2fV\n\n",num[1]/num[0]);
}


}
}
posted on 2011-04-17 12:47  void-man  阅读(230)  评论(0)    收藏  举报