• 数列计算I(整理四舍五入)


                                                    问题 C: 数列计算I(点击)

                                                                     时间限制: 1 Sec  内存限制: 128 MB
                                                                                提交: 496  解决: 250
                                                                    [提交] [状态] [讨论版] [命题人:admin]

    题目描述

    有一列数是:4/7, 7/11, 11/18, 18/29, 29/47, 47/76 „„请找出这个数列的规律,编写程序计算并输出这个数列的第 N 项(要求是分数形式),并计算这个数列的前 N 项和(结果四舍五入保留两位小数)。(其中:3≤N≤30)。 

    输入

    只有一行,包含1个符合题目要求的正整数N。

    输出

    共有两行。
    第一行如样例中的一个特定格式的分数表示这个数列的第N项;
    第二行仅包含一个数表示这个数列的前N项的和。

    样例输入

    复制样例数据

    6
    

    样例输出

    47/76
    3.68

    思路:

    主要是四舍五入问题 当时编译器还有问题 刚才才刚刚发现 明明强制转换了变四舍五入 运行后还是错误的答案 但是提交了就正确

    浪费了不少时间。

    代码:

    #include<stdio.h>
    int main()
    {
        int a[35],i,n;
        double sum[35];
        a[1]=4,a[2]=7;
        for(i=3;i<=31;i++){
            a[i]=a[i-1]+a[i-2];          //打表把每个分数的分子保存进数组 其实还可以更简单:将分母保
        }                                //存下来每次都直接计算sum 但是开始没想起来 就在下面多加了个
        sum[1]=4.0/7.0;                  //for循环
        for(i=2;i<=30;i++){
            sum[i]=sum[i-1]+(a[i]/(a[i+1]*1.0));
        }
        scanf("%d",&n);
        printf("%d/%d
    ",a[n],a[n+1]);
        printf("%.2lf
    ",(int)(sum[n]*100+0.5)/100.0);  //四舍五入方法(小数位)
        return 0;
    }
    

    方法总结:

    1.不保留小数的四舍五入:

    加头文件:#include<math.h>

    int a=round(a1)     //a代表转换后的值  a1代表转换前的浮点型数

    2.保留一位小数的四舍五入:

    a=(int)(a1*10+0.5)/10.0;     //a 和a1 的含义同上

    3.保留两位小数的四舍五入:

    a=(int)(a1*100+0.5)/100.0;     //a 和a1 的含义同上

    注意:最后所除的一定是浮点型的10.0 和100.0 不然就会错误

               其他小数点后位数的转换可以以此类推

    测试:

    #include<stdio.h>
    #include<math.h>
    int main()
    {
    	double a1=1.5,a2=1.44,b1=1.44,b2=1.46,c1=1.445,c2=1.444;
    	int a11=round(a1);
    	int a12=round(a2);
    	double b11=(int)(b1*10+0.5)/10.0;
    	double b12=(int)(b2*10+0.5)/10.0;
    	double c11=(int)(c1*100+0.5)/100.0;
    	double c12=(int)(c2*100+0.5)/100.0;
    	printf("%d %d %.1lf %.1lf %.2lf %.2lf
    ",a11,a12,b11,b12,c11,c12);
    	return 0;
    } 

    结果:

  • 相关阅读:
    杭电 1176 免费馅饼
    IE 8 浏览器 F12 调试功能无法使用
    SqlServer 经常使用分页方法总结
    cocos2d-x 2.0下怎样让BOX2D DEBUG DRAW的方法笔记
    在DIV中自己主动换行
    linux之SQL语句简明教程---主键,外来键
    java数据库连接池技术简单使用
    Windows和linux双系统——改动默认启动顺序
    程序员实用的 MySQL sql 语句
    android 多项对话框
  • 原文地址:https://www.cnblogs.com/ldu-xingjiahui/p/12407479.html
Copyright © 2020-2023  润新知