【算法笔记题解】《算法笔记知识点记录》第二章——快速入门2[选择结构、循环结构和数组](2)

简介: 【算法笔记题解】《算法笔记知识点记录》第二章——快速入门2[选择结构、循环结构和数组](2)

🍔2.4 选择结构

地址合集:2.4循环结构


问题 A: 例题5-1-1 连续自然数求和

题目描述

求1+2+3+…+100

要求用while语句实现


输入


输出

要求的和,末尾输出换行。


样例输入


样例输出

5050


解题思路

让咋咋呗。


#include<stdio.h>
int main(){
    int i = 1, sum = 0;
    while(i <= 100){
        sum += i;
        i++;
    }
    printf("%d\n",sum);
    return 0;
}


问题 B: 例题5-1-2 连续自然数求和

题目描述

求1+2+3+…+100

要求用do…while语句实现


输入

输出

计算结果,注意末尾输出换行。


样例输入


样例输出

5050


解题思路


让咋咋呗。while后面的;别丢了


#include<stdio.h>
int main(){
    int i = 1, sum = 0;
    do{
        sum += i;
        i++;
    }while(i<=100);
    printf("%d\n",sum);
    return 0;
}


问题 C: 例题5-1-3 连续自然数求和

题目描述

求1+2+3+…+100

要求用for语句实现

输入


输出

计算结果,注意末尾输出换行。


样例输入

样例输出

5050

解题思路


让咋咋呗。有没有感觉for很好用?


#include<stdio.h>
int main(){
    int sum = 0;
    for(int i = 1;i <= 100; ++i)
        sum += i;
    printf("%d\n",sum);
    return 0;
}


问题 D: 例题5-1-4 连续自然数求和

题目描述

求1+2+3+…+100

要求在程序中使用break语句。


输入

要求输入的数据一定是一个正整数。


输出

计算的结果,连续N个自然数的和,末尾输出换行。

样例输入

100


样例输出

5050


解题思路

让咋咋呗。这里就是先判断i值再++的,所以等于N就可以跳出了。


#include<stdio.h>
int main(){
    int sum = 0,N;
    scanf("%d",&N);
    for(int i = 1;; ++i){
        sum += i;
        if(i == N)  break;
    }
    printf("%d\n",sum);
    return 0;
}


问题 E: 例题5-1-5 连续自然数求和

题目描述

编程实现求1+2+3+…和的程序,要求得到使使和数大于1000的最小正整数。


输入


输出

输出使1+2+3+…+N>1000的最小正整数N,末尾输出换行。


样例输入


样例输出

45


解题思路


让咋咋呗。


#include<stdio.h>
int main(){
    int sum = 0,i = 1;
    for(i = 1;; ++i){
        sum += i;
        if(sum > 1000) break;
    }
    printf("%d\n",i);
    return 0;
}


问题 F: 例题5-6 矩阵输出

题目描述

输出以下4*5的矩阵

1 2 3 4 5

2 4 6 8 10

3 6 9 12 15

4 8 12 16 20

要求使用循环实现,注意每行输出5个数字,每个数字占3个字符的宽度,右对齐。


输入


输出

每行输出5个数字,每个数字占3个字符的宽度,右对齐。


样例输入


样例输出

1 2 3 4 5

2 4 6 8 10

3 6 9 12 15

4 8 12 16 20

解题思路


让咋咋呗。


#include<stdio.h>
int main(){
    for(int i = 1;i < 6;++i)    printf("%3d",i);
    puts("");   //输出换行
    for(int i = 2;i < 11;i+=2)    printf("%3d",i);
    puts("");   //输出换行
    for(int i = 3;i < 16;i+=3)    printf("%3d",i);
    puts("");   //输出换行
    for(int i = 4;i < 21;i+=4)    printf("%3d",i);
    puts("");   //输出换行
    return 0;
}


问题 G: 例题5-7 求圆周率pi的近似值

题目描述

用如下公式


求圆周率PI的近似值,直到发现某一项的绝对值小于10-6为止(该项不累加)。

要求输出的结果总宽度占10位,其中小数部分为8位。

程序中使用浮点型数据时,请定义为双精度double类型。

如果需要计算绝对值,可以使用C语言数学库提供的函数fabs,如求x的绝对值,则为fabs(x).


输入

输出

PI=圆周率的近似值

输出的结果总宽度占10位,其中小数部分为8位。

末尾输出换行。


样例输入


样例输出

PI=3.14159065


解题思路


让咋咋呗。不过浮点数不让我比较大小,只能做差来比较了!!


#include<stdio.h>
int main(){
    double pi = 1;
    for(int i = 1;(1.0/(2*i + 1)) - 1e-6 > 0;i++){
        if(i % 2 == 1)  pi -= 1.0/(2*i + 1);
        else pi += 1.0/(2*i + 1);
    }
    printf("PI=%10.8f\n",4 * pi);
    return 0;
}


问题 H: 例题5-8 Fibonacci数列

题目描述

输入一个正整数n,求Fibonacci数列的第n个数。Fibonacci数列的特点:第1,2个数为1,1。从第3个数开始,概述是前面两个数之和。即:

要求输入的正整数n不超过50.


输入

一个不超过50的正整数


输出

Fibonacci数列的第n个数,末尾输出换行。


样例输入

20


样例输出

6765


解题思路


我仔细想了想,还是用数组把。函数也还没学是吧?之后再用递归。这里想想。还能压缩空间,我好可怕。。。不懂可以问我


#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    if(n <= 2){
        printf("%d\n",1);
        return 0;
    }
    int a = 1, b = 1;
    for(int i = 2;i < n;i++){
        int c = a + b;
        a = b;
        b = c;
    }
    printf("%d\n",b);
    return 0;
}


问题 I: 习题5-10 分数序列求和

题目描述

有如下分数序列


求出次数列的前20项之和。

请将结果的数据类型定义为double类型。


输入

输出

小数点后保留6位小数,末尾输出换行。


样例输入


样例输出

32.660261


解题思路


这个东东好像分子就是上一个分子的和,分母就是上一个分子?这不就是斐波拉西数列嘛?刚才的思路变成分数求和就好了0.0


#include<stdio.h>
int main(){
    double ans = 0;
    double a = 1.0, b = 2.0;
    for(int i = 0;i < 20; i++){
        ans += b / a;
        double c = a + b;
        a = b;
        b = c;
    }
    printf("%.6f\n",ans);
    return 0;
}


相关文章
|
22天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
25 3
|
1月前
|
存储 缓存 算法
如何通过优化算法和代码结构来提升易语言程序的执行效率?
如何通过优化算法和代码结构来提升易语言程序的执行效率?
|
1月前
|
算法 API 计算机视觉
人脸识别笔记(一):通过yuface调包(参数量54K更快更小更准的算法) 来实现人脸识别
本文介绍了YuNet系列人脸检测算法的优化和使用,包括YuNet-s和YuNet-n,以及通过yuface库和onnx在不同场景下实现人脸检测的方法。
49 1
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
64 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
存储 算法
动态规划算法学习一:DP的重要知识点、矩阵连乘算法
这篇文章是关于动态规划算法中矩阵连乘问题的详解,包括问题描述、最优子结构、重叠子问题、递归方法、备忘录方法和动态规划算法设计的步骤。
101 0
|
1月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
14 0
|
1月前
|
算法
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
31 0
|
29天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
6天前
|
算法 数据安全/隐私保护 索引
OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度
本项目展示了在MATLAB 2022a环境下,通过选择映射(SLM)与相位截断星座图(PTS)技术有效降低OFDM系统中PAPR的算法实现。包括无水印的算法运行效果预览、核心程序及详尽的中文注释,附带操作步骤视频,适合研究与教学使用。
|
14天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。