分享

C 之顺序结构

 长沙7喜 2018-04-16

我们已经学习了数据输入输出、赋值语句以及基本的数据类型。下面举一些实例,通过阅读和模仿这些程序,让选手逐步熟悉程序的编写和巩固知识点,为以后各章的学习打好基础。

2.18 输入一个三位数,要求把这个数的百位数与个位数对调,输出对调后的数。

  【分析】先求出自然数的个位、十位、百位,然后个位与百位对调。

  程序如下:

#include

using namespace std;

int main()

{  int a,b,c,m,n;

   cin>>m;                                          //输入一个三位数

   a=m/100;                                 //百位数

   b=(m/10)%10;                         //十位数

   c=m%10;                     //个位数

   n=c*100+b*10+a;                  //重新组合对调后的数

  cout<><>输出结果

}

运行结果:

输入:234                          输出:n=432

2.19  已知某班有男同学x位,女同学y位,x位男生平均分是87分,y位女生的平均分是85,问全体同学平均分是多少分?

  【分析】男女生的人数需要用户输入,然后根据题意(x*87+y*85)/(x+y)求出全体同学的平均分。

   程序如下:

#include

using namespace std;

int main()

{

    int x,y;

    cin>>x>>y;                             //输入男女人数

    cout数据类型强制转换,按实数格式输出,4位小数

}

2.20  歌手大奖赛上6名评委给一位参赛者打分,6个人打分的平均分为9.6分;如果去掉一个最高分,这名参赛者的平均分为9.4分;如果去掉一个最低分,这名参赛者的平均分为9.8分;如果去掉一个最高分和一个最低分,这名参赛者的平均是多少?

  【分析】首先求出6名评委的总分,然后根据去掉最高分的总分和最低分的总分,求出最高分的分值和最低分的分值,最后总分减去最高分和最低分除以4即是答案。

  程序如下:

#include

int main()

{   floathigh,low,sc_all,sc_high,sc_low,ans;

    sc_all=6*9.6;                        //6名评委的总分

    sc_high=5*9.4;                        //求去掉最高分后的总分

    sc_low=5*9.8;             //求去掉最低分后的总分

    high=sc_all-sc_high;            //求最高分

    low=sc_all-sc_low;               //求最低分

    ans=(sc_all-high-low)/4;       //求平均分

   printf('%5.2f\n',ans);            //%5.2f按实数格式输出,保留2位小数

}                                                //运行结果: 9.60

 例2.21  传说古代的叙拉古国王海伦二世发现的公式,利用三角形的三条边长来求取三角形面积。已知△ABC中的三边长分别为a,b,c,求△ABC的面积。(提示:海伦公式

,其中p=(a+b+c)/2 )

  【分析】公式中p是三角形周长的一半,求出p后直接代入海伦公式中求得面积。

#include                        //Dev C++可调用

#include                      //Dev C++中可调用数学函数库cmath

int main()

{ float a,b,c,p,s;

  scanf('%f%f%f',&a,&b,&c);    //输入三角形的三边

  p=(a+b+c)/2;                          //求出p的值

  s=sqrt(p*(p-a)*(p-b)*(p-c));    //根据p求面面积,sqrt是开方函数

  printf('%0.3f\n',s);             //输出面积,0.3f按实际位数输出,保留3位小数

}

  运行结果:

   输入:3  4  5    输出:6.000

2.22  分钱游戏。甲、乙、丙三人共有24元钱,先由甲分钱给乙、丙两人,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。求原先各人的钱数分别是多少?

  【分析】设甲、乙、丙三人的钱数分别为ABC。用倒推(逆序)算法,从最后结果入手,按反相顺序,分步骤推算出每次各人当时的钱数: (在每个步骤中,各人钱数分别存在ABC中)

#include               //Dev C++可调用

int  main()                           //调用iostream库,使用printf语句编译通不过

{  int a,b,c;

   a=8; b=8; c=8;                 //对应于步骤①

   a=a/2;b=b/2;c=a+b+c;     //对应于步骤②

   a=a/2;c=c/2;b=a+b+c;     //对应于步骤③

   b=b/2;c=c/2;a=a+b+c;     //对应于步骤④

   printf('a=%-5db=%-5dc=%-5d\n',a,b,c);  //%-5d5位宽度输出,左对齐。

}

  运行结果:

a=13   b=7    c=4

2.23 求一元二次方程x2+3x+2=0的两个实数根。

【分析】方程的系数是常量,分别用ABC表示,运用数学求方程的根,采取如下方法 :

  先求出d=B2-4AC;(求根公式中需用开方运算的那部分)

  再用求根公式算出x1x2的值。(x1x2 = ? )

  输出x1x2

#include                     //Dev C++可调用

#include                   //Dev C++中可调用数学函数库cmath

#define A 1

#define B 3                            //常量说明,ABC表示方程系数

#define C 2

int main()

{

   int d;                                  //d为整型变量

   float x1,x2;                        //x1x2为实型变量

   d=B*B-4*A*C;

   x1=(-B+sqrt(d))/(2*A);        //求方程的根

   x2=(-B-sqrt(d))/(2*A);

   printf('x1=%-8.3fx2=%-8.3f\n',x1,x2);  //%-8.3f8位宽度,3位小数,左对齐

}

运行结果:

x1=-1.000 x2=-2.000

 

【上机练习2.2

1.有三个小朋友甲乙丙。甲有50粒糖果,乙有43粒糖果,丙有13粒糖果。现在他们做一个游戏。从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。问最后甲、乙、丙三人各有多少粒糖果?

2.输入两个正整数AB,编程交换这两个变量的值。

3.编写程序把一个三位整数反转,例如358反转成853

4.某车棚存有自行车和三轮车共65辆,它们的轮子数合计为150个,求该棚内存有的自行车和三轮车各是多少辆?

5.五位好朋友相聚。第一位朋友带来了很多糖块赠送给各位朋友,使每人的糖块在各自原有的基础上翻了一倍;接着第二位好友也同样向每人赠送糖块,他同样使每人的糖块在各人已有的数量上翻了一倍;第三、第四、第五位好友都照此办理。经过这样的赠送之后,每人的糖块恰好都为32块。问各位好友原先的糖块数分别是多少?


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多