C语言之计算等式

题目描述

编程在算式123 45 67 8 9=N的下划线部分填上加号(+)或减号(-),使该等式成立。要求程序运行时输出该等式。(保证数据存在满足的等式)

输入要求

输入一个整数N。

输出要求

输出满足条件的等式。若不存在满足的等式,则输出"impossible"(输出不包括引号)

输入样例

100

输出样例

123+45-67+8-9=100

代码实现

这是之前的代码,图省事直接穷举了……我就说这个浏览量怎么和其他的不一样……真的献丑……后面有改进的版本。

#include <stdio.h>


int main()

{




int n; 

  scanf("%d",&n);
if (n==123+45+67+8+9) printf("123+45+67+8+9=%d\n",n);
       else if (n==123+45+67+8-9) printf("123+45+67+8-9=%d\n",n);
                 else if (n==123+45+67-8+9) printf("123+45+67-8+9=%d\n",n);
                        else if (n==123+45+67-8-9) printf("123+45+67-8-9=%d\n",n);
                                else if (n==123+45-67+8+9) printf("123+45-67+8+9=%d\n",n);
                                        else if (n==123+45-67+8-9) printf("123+45-67+8-9=%d\n",n);
                                                else if (n==123+45-67-8+9) printf("123+45-67-8+9=%d\n",n);
                                                         else  if (n==123+45-67-8-9) printf("123+45-67-8-9=%d\n",n);
                                                                  else if (n==123-45+67+8+9) printf("123-45+67+8+9=%d\n",n);
                                                                        else if (n==123-45+67+8-9) printf("123-45+67+8-9=%d\n",n);
                                                                                else if (n==123-45+67-8+9) printf("123-45+67-8+9=%d\n",n);
                                                                                        else if (n==123-45-67+8+9) printf("123-45-67+8+9=%d\n",n);
                                                                                                 else  if (n==123-45-67+8-9) printf("123-45-67+8-9=%d\n",n);
                                                                                                           else if (n==123-45-67-8+9) printf("123-45-67-8+9=%d\n",n);
                                                                                                                   else  if (n==123-45+67-8-9) printf("123-45+67-8-9=%d\n",n);
                                                                                                                             else if (n==123-45-67-8-9) printf("123-45-67-8-9=%d\n",n); 
                                                                                                                                    else printf("impossible\n");






            
return 0;


}

改良版

#include <stdio.h>
#include <stdlib.h>

int main()

{
	int n;
	int s1,s2,s3,s4,i,j,k,t,sum,flag;
    char x1,x2,x3,x4; //输出字符
    sum=0;
    flag=0;
    s1=-1;s2=-1;s3=-1;s4=-1; //计算时-1,+1来代替加减符号
	scanf("%d",&n);
    for(i=0;i<=1;i++) //四个循环,总共16个等式
    {
        s1=-s1; //使用!的话会变成逻辑值吧,代码sum的结果会发生改变
        for(j=0;j<=1;j++)
        {
            s2=-s2;
            for(k=0;k<=1;k++)
            {
                s3=-s3;
                for(t=0;t<=1;t++)
                {
                    s4=-s4;
                    sum=123+s1*45+s2*67+s3*8+s4*9; //计算等式的值和输入值进行比较
                    if(sum==n)
                        {   if(s1==1) x1='+';else x1='-';
                            if(s2==1) x2='+';else x2='-';
                            if(s3==1) x3='+';else x3='-';
                            if(s4==1) x4='+';else x4='-';//把-1,+1转化为字符输出
                            printf("123%c45%c67%c8%c9=%d\n",x1,x2,x3,x4,n);
                            flag=1; //如果可以有多个等式可以满足条件时的保险
                        }

                }

            }

        }

    }
    if(!flag) printf("impossible\n"); //没有满足的等式输出不可能
    return 0;
}

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: Harris-Benedict等式是一种用于计算人体基础代谢率(BMR)的公式。它可以用C语言编写,具体实现方法如下: ```c #include <stdio.h> int main() { int gender, age, height, weight; double bmr; printf("请输入您的性别(男性输入1,女性输入2):"); scanf("%d", &gender); printf("请输入您的年龄:"); scanf("%d", &age); printf("请输入您的身高(单位:厘米):"); scanf("%d", &height); printf("请输入您的体重(单位:千克):"); scanf("%d", &weight); if (gender == 1) // 男性 { bmr = 88.36 + (13.4 * weight) + (4.8 * height) - (5.7 * age); } else if (gender == 2) // 女性 { bmr = 447.6 + (9.2 * weight) + (3.1 * height) - (4.3 * age); } else // 性别输入错误 { printf("性别输入错误!\n"); return ; } printf("您的基础代谢率为:%.2f 千卡/天\n", bmr); return ; } ``` 以上代码中,我们首先定义了四个变量,分别表示性别、年龄、身高和体重。然后通过`scanf`函数从用户输入中获取这些值。接着,根据用户的性别和其他参数,使用Harris-Benedict等式计算基础代谢率。最后,使用`printf`函数输出计算结果。 需要注意的是,Harris-Benedict等式只是一种估算人体基础代谢率的公式,实际值可能会因为个体差异、环境因素等原因而有所偏差。因此,在实际应用中,需要结合其他因素进行综合评估。 ### 回答2: Harris-Benedict等式是一种用于计算基础代谢率(BMR)的公式,它是根据性别、年龄、身高和体重等因素来计算一个人每天基本需要的能量消耗。该公式最初由J. Arthur Harris和Francis G. Benedict于1919年提出,现在已成为临床和营养学界中广泛使用的标准。 C语言是一种广泛使用的计算机编程语言,具有高效、可移植、可扩展性和快速的特点,因此在科学研究和计算中也被广泛使用。 在C语言中,使用Harris-Benedict等式可以通过计算公式中的各项参数来得到一个人的BMR。在这个公式中,性别、年龄、身高和体重等因素都是需要输入的参数。通过使用C语言中的变量和运算符,我们可以将此等式转换为可计算的程序代码。 例如,以下是一个使用C语言实现Harris-Benedict等式的程序代码: #include <stdio.h> int main() { // 输入用户的性别、年龄、身高和体重 char gender; int age; double height, weight; printf("请输入您的性别(M表示男性,F表示女性):"); scanf("%c", &gender); printf("请输入您的年龄:"); scanf("%d", &age); printf("请输入您的身高(单位:米):"); scanf("%lf", &height); printf("请输入您的体重(单位:千克):"); scanf("%lf", &weight); // 根据性别、年龄、身高和体重计算BMR double bmr; if (gender == 'M') { bmr = 88.36 + (13.4 * weight) + (4.8 * height * 100) - (5.7 * age); } else { bmr = 447.6 + (9.2 * weight) + (3.1 * height * 100) - (4.3 * age); } // 输出计算结果 printf("您的每日基础代谢率为:%.2lf 千卡\n", bmr); return 0; } 在上面的代码中,我们首先使用scanf()函数获取用户的性别、年龄、身高和体重等信息,并存储到相应的变量中。然后,根据用户输入的性别、年龄、身高和体重等因素,使用对应的Harris-Benedict等式计算BMR,并将结果存储到一个变量bmr中。最后,使用printf()函数输出计算结果。 总之,Harris-Benedict等式可以使用C语言实现,可以根据用户输入的性别、年龄、身高和体重等因素计算出每天基本需要的能量消耗,并且计算过程可以用代码实现。而C语言作为一种高效、可移植和快速的编程语言,可以很好地用于科学计算和编程。 ### 回答3: Harris-Benedict等式是一个常用的公式,用于计算人体基础代谢率和日常能量需求。这个公式基于个体的性别、年龄、身高和体重等因素进行计算,并适用于大多数健康人群。使用C语言编写Harris-Benedict等式需要使用基本的算术运算、条件语句和函数调用等基础知识。 首先,我们需要定义变量来存储输入的数据,例如身高、体重、年龄和性别。我们可以使用scanf函数获取用户输入的值,并将它们存储在相应的变量中。然后,我们需要根据性别选择使用不同的公式进行计算。对于男性,Harris-Benedict等式如下: BMR = 88.362 + (13.397 × weight in kg) + (4.799 × height in cm) - (5.677 × age in years) 而对于女性,则为: BMR = 447.593 + (9.247 × weight in kg) + (3.098 × height in cm) - (4.330 × age in years) 根据计算得到的基础代谢率,我们可以使用再乘以一个适当的活动系数来估算每日所需能量。例如,如果一个人的BMR是1500千卡,并且他每天从事轻度体力活动,那么他每天所需的能量大约是1500 × 1.375 = 2062.5千卡。 这个公式是比较简单的,但是需要注意的是,它只能提供一个大致的估算值,实际的代谢率和能量需求还受到其他因素的影响,如肌肉质量、体脂率、身体状况、饮食模式和环境等因素。因此,使用Harris-Benedict等式进行计算时,应结合其他方法和实践经验来综合评估一个人的代谢率和能量需求情况。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值