栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C&&C++程序设计题 day5

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C&&C++程序设计题 day5

C&&C++程序设计题 day5
  • 第一题
    • 题目链接及简易描述
    • 解题思路
    • 代码
  • 第二题
    • 题目链接及简易描述
    • 解题思路
    • 代码
  • 第三题
    • 题目链接及简易描述
    • 解题思路
    • 代码

第一题 题目链接及简易描述

7-32 求交错序列前N项和
题目描述:
计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和,输出保留三位小数。

解题思路

通过观察发现,分子可以通过 for 循环得到 如 1 2 3 4这样的递增序列,而分母是 2 * 分子 - 1,并且不是每项都加或减,而是奇数次加,偶数次减,而且要注意数据类型,我这是 2* 分子 + 1这边的2变成2.0,这样能利用隐式转换使得结果变成double类型,不然 / 是趋零取整,现在可以写代码了

代码
#include 

int main(void)
{
    int x, i;
    double res;
    scanf("%d", &x);
    for (i = 1; i <= x; i++) {
        if (i % 2 == 1) {
            res += i / (2.0 * i - 1);
        } else {
            res -= i / (2.0 * i - 1);
        }
    }
    printf("%.3f", res);
    
    return 0;
}
第二题 题目链接及简易描述

7-33 统计素数并求和
题目描述:
输入两个数,输出这两个数之间的素数个数和各个素数的和

解题思路

编写一个函数判断素数,然后把两个数当作for的开始和结束,循环判断一次就行了

代码
#include 
int sushu(int);

int main(void)
{
    int l, r, cnt = 0, res = 0;
    scanf("%d %d", &l, &r);
    for (l; l<=r; l++) {
        if (sushu(l)) {
            cnt ++;
            res += l;
        }
    }
    printf("%d %d", cnt, res);
}

int sushu(int x)
{
    if (x == 1) {
        return 0;
    }
    for (int i = 2; i * i <= x; i ++) {
        if (x % i == 0) {
            return 0;
        }
    } return 1;
}
第三题 题目链接及简易描述

7-52 求简单交错序列前N项和
题目描述:
和第一题差不多,计算序列 1 - 1/4 + 1/7 - 1/10 + … 的前N项之和

解题思路

差不多了额11111额1

代码
#include 

int main(void)
{
    int x, i;
    double res;
    scanf("%d", &x);
    for (i = 1; i <= x; i++) {
        if (i % 2 == 1) {
           res += 1 / (3.0 * i - 2);  
        } else {
           res -= 1 / (3.0 * i - 2);  
        }
    }
    printf("sum = %.3f", res);
    
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873541.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号