POJ3299

这篇博客详细解析了POJ3299的解题思路,强调了三个重要环节:正确接收输入数据、翻译数学公式为C语言表达式,以及理解题目要求。博主指出题目要求求解任意两个变量的关系,而非局限于样例中的T和D。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

POJ3299题解

POJ3299

解题重点在如下几个地方

第一:正确接收来自输入流的数据
第二:将数学公式正确翻译成C语言公式
第三:题目意思是任给两个变量求第三个,而不是像输入样例那样只给你T、D

SOURCE

代码质量如下:

Problem: 3299       User: 20132430222
Memory: 212K        Time: 0MS
Language: C         Result: Accepted

附源码

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define MAXLEN 100
int main()
{
    char ch;
    float T[MAXLEN],D[MAXLEN],H[MAXLEN];
    int flag[MAXLEN];
    int i=0; 
    //while(4==scanf("%c %f %c %f\n",&ch1,&T[i],&ch2,&D[i])){
    //  //getchar();
    //  i++;
    //}
    int flagT = 0,flagD = 0,flagH = 0;
    while(1){
        scanf("%c",&ch);
        if(ch=='E')
            break;
        switch(ch){
            case 'T':
                scanf("%f ",&T[i]);
                flagT = 1;
                break;
            case 'D':
                scanf("%f ",&D[i]);
                flagD = 1;
                break;
            case 'H':
                scanf("%f ",&H[i]); 
                flagH = 1;
                break;
        }
        scanf("%c",&ch);
        switch(ch){
            case 'T':
                scanf("%f\n",&T[i]);
                flagT = 1;
                break;
            case 'D':
                scanf("%f\n",&D[i]);
                flagD = 1;
                break;
            case 'H':
                scanf("%f\n",&H[i]); 
                flagH = 1;
                break;
        }
        if(flagT==1&&flagD==1)
            flag[i]=1;
        if(flagT==1&&flagH==1)
            flag[i]=2;
        if(flagD==1&&flagH==1)
            flag[i]=3;
        flagT = 0;
        flagD = 0;
        flagH = 0;
        i++;
    }
    int j;
    for(j=0;j<i;j++){
        switch(flag[j]){
            case 1:
                H[j] = T[j] + 0.5555*((6.11*pow(2.718281828,(5417.7530*((1.0/273.16)-(1.0/(D[j]+273.16))))))-10.0);
                printf("T %.1f D %.1f H %.1f\n",T[j],D[j],H[j]); 
                break;
            case 2:
                D[j] = (1.0/((1.0/273.16)-((log((((H[j]-T[j])/0.5555)+10.0)/6.11))/5417.7530)))-273.16;
                printf("T %.1f D %.1f H %.1f\n",T[j],D[j],H[j]); 
                break;
            case 3:
                T[j] = H[j] - 0.5555*((6.11*pow(2.718281828,(5417.7530*((1.0/273.16)-(1.0/(D[j]+273.16))))))-10.0);
                printf("T %.1f D %.1f H %.1f\n",T[j],D[j],H[j]); 
                break;
        }

    }
    //system("pause");
    return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值