2023-04-23 学习记录--C/C++-邂逅C/C++(中)

news2024/11/17 3:56:11

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

上一篇:邂逅C/C++(上)

一、if语句 ⭐️

(一)、格式 🍭

if(语句1执行条件)
{
	。。。(语句1)
}
else if(语句2执行条件)
{
	。。。(语句2)
}
。。。
else
{
	。。。(语句n)
}

注意 💐:若if/else if/else后的语句只有一条时,其大括号可以省略

(二)、举例 🍭

需求:输入两个实数a、b,按数值由小到大的顺序输出这两个数

/**
 * 需求:输入两个实数a、b,按数值由小到大的顺序输出这两个数
*/

#include <stdio.h>
int main()
{
    /** 使用变量/常量前必须先声明 */
    double a, b, t; // t为中间变量
    /** 引导用户输入两个实数a、b */
    printf("请输入两个实数,以逗号隔开:\n"); // 提示信息
    scanf("%lf,%lf", &a, &b);            // 用户输入
    /** 实现两个数之间的升序(从小到大排序):若a>b,则两者交换位置 */
    if (a > b)
    {
        t = a; // 把a赋值给中间变量t
        a = b; // 把b赋值给a
        b = t; // 把中间变量t(此时为a的值)赋值给b,从而实现a、b位置的交换
    }
    /** 输出结果 */
    printf("排序后的结果为:%f,%f\n", a, b); // 最后一个输出语句,一定要记得加上换行符(\n)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

二、常见表达式形式 ⭐️

1、赋值表达式(=)🎀

比如a=1; 就是把1赋值给变量a

2、算术表达式/数值表达式 🎀

+ - * /
求余%

3、关系表达式 🎀

大于>
大于等于>=
小于<
小于等于<=
等于==
不等于!=

4、逻辑表达式 🎀

(两边均满足):&&
(两边满足一个):||
(取反):!

5、三目表达式 🎀

格式 🌈:表达式1 ? 表达式2 : 表达式3
解析 📚:判断 是否满足表达式1 -> 执行表达式2 -> 执行表达式3
举例 👁:1 < 2 ? printf("回答正确\n") : printf("咋回事涅\n"); // 回答正确

example:🎈

需求:输入一个字符,判断它是否为大写字母,若是则将其转换成小写字母,若不是则不转换,然后输出最后得到的字符。

/**
 * 需求:输入一个字符,判断它是否为大写字母,若是则将其转换成小写字母,若不是则不转换,然后输出最后得到的字符。
 */

#include <stdio.h>
int main()
{
    /** 使用变量/常量前必须先声明 */
    char ch; // 字符
    /** 引导用户输入一个字符 */
    printf("请输入一个字符:\n"); // 提示信息
    scanf("%c", &ch);             // 用户输入
    /** 若是大写字母,则将其转换成小写字母 */
    ch >= 'A' && ch <= 'Z' ? ch += 32 : ch;
    /** 输出结果 */
    printf("最后得到的字符是:%c\n", ch); // 最后一个输出语句,一定要记得加上换行符(\n)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

知识点 💐:

  • 1、判断是否是大写字母ch >= 'A' && ch <= 'Z'
  • 2、判断是否是小写字母ch >= 'a' && ch <= 'z'
  • 3、大小写字母相互转换:【ASCII码表里,大写字母前面小写字母后面,相差32ASCII码值】
    • 大写字母 = 小写字母 - 32;
    • 小写字母 = 大写字母 + 32;

三、switch语句 ⭐️

(一)、格式 🍭

switch (整型变量或字符型变量)
{
case 常量1:
    语句1;
    break;
case 常量2:
    语句2;
    break;
。。。 
case 常量n:
    语句n;
    break;
default:
    语句n+1;
    break;
}

注意 💐:switch()括号中变量类型整型字符型

(二)、多个case标记共用一组语句 🍭

比如:常量1、常量2共用一组语句,即常量1和常量2时都会执行该语句,写法如下:

switch (整型变量或字符型变量)
{
case 常量1:
case 常量2:
    常量1、常量2共用语句;
    break;
。。。 
case 常量n:
    语句n;
    break;
default:
    语句n+1;
    break;
}

(三)、举例 🍭

需求:有ABCD四等级,A等、B等、C等对应60~100,D等对应<60,请编一程序,成绩等级由键盘输入,输出分数段。

/**
 * 需求:有ABCD四等级,A等、B等、C等对应60~100,D等对应<60,请编一程序,成绩等级由键盘输入,输出分数段。
 */

#include <stdio.h>
int main()
{
    /** 使用变量/常量前必须先声明 */
    char grade; // 等级
    /** 引导用户输入成绩等级 */
    printf("请输入成绩等级(大写字母):\n");
    scanf("%c", &grade);
    /** switch语句【注意:字符用的是单引号】*/
    switch (grade)
    {
    case 'A':
    case 'B':
    case 'C':
        // A、B、C等均执行这个语句
        printf("该生分数为60~100\n"); // 最后一个输出语句,一定要记得加上换行符(\n)
        break;
    case 'D':
        printf("该生分数为<60\n"); // 最后一个输出语句,一定要记得加上换行符(\n)
        break;
    default:
        printf("输入错误\n"); // 最后一个输出语句,一定要记得加上换行符(\n)
        break;
    }
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

四、用while语句循环做数学运算 ⭐️

若用while语句循环求n个数相加n个数相乘,其通用解题思路如下:💐

  • 1、写出固定格式
  • 2、定义三个变量:【注意:为防止溢出,定义时应注意正确定义第二、三变量类型
    • int i=1
    • 若是求和sum=0,若是求乘积product=1
    • a=第一项的值
  • 3、加入while语句
  • 4、找出相加或相乘的总项数,然后在 while()括号里 写上:i<=总项数
  • 5、在大括号里写入三个表达式
    • i+=1;
    • 若是求和sum+=a; ,若是求乘积product*=a;
    • a的形式表现出第n项与第(n-1)项的关系表达式
      如:第n项=第(n-1)项加2 写成 a+=2;(用a替换 第n项第(n-1)项
  • 6、输出结果检查循环的开头与结尾

example1:🎈

需求:求2+4+6+…+100

/**
 * 需求:求2+4+6+...+100
 */

#include <stdio.h>
int main()
{
    /** 定义三个变量 */
    int i = 1, sum = 0, a = 2;
    /** while语句 */
    while (i <= 50) // 50为相加的总项数
    {
        i += 1;
        sum += a;
        a += 2; // 由题干观察可知,第n项与第(n-1)项的关系式为:第n项=第(n-1)项+2
    }
    /** 输出结果 */
    printf("计算结果是:%d\n", sum); // 最后一个输出语句,一定要记得加上换行符(\n)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

example2:🎈

需求 🌈:求2×4×6×…×100

注意】坑 💥 —— 溢出:因为从2乘到100是一个很大的值,超出任何整型的范围,所以最终乘积结果product需使用double来定义(因为我是入门,所以先不考虑精度进行处理了),不然输出为0

/**
 * 需求:求2×4×6×...×100
 */

#include <stdio.h>
int main()
{
    /** 定义三个变量 */
    int i = 1;
    double product = 1, a = 2; // 注意:因为从2乘到100是一个很大的值,超出任何整型的范围,所以最终乘积结果product需使用double来定义,不然输出为0
    /** while语句 */
    while (i <= 50) // 50为相乘的总项数
    {
        i += 1;
        product *= a;
        a += 2; // 由题干观察可知,第n项与第(n-1)项的关系式为:第n项=第(n-1)项+2
    }
    /** 输出结果 */
    printf("计算结果是:%f\n", product); // 最后一个输出语句,一定要记得加上换行符(\n)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

example3:🎈

需求:求1到20的阶乘的和(1! + 2! + … + 20!)。

在这里插入图片描述

/**
 * 需求:求1到20的阶乘的和(1! + 2! + ... + 20!)
 */

#include <stdio.h>
int main()
{
    /** 定义三个变量 */
    int i = 1;
    long long sum = 0, a = 1; // 【注意】使用long long类型防止溢出;因为1的阶乘是1,所以a=1
    /** while语句 */
    while (i <= 20) // 20为相加的总项数
    {
        i += 1;
        sum += a; // 累加阶乘
        a *= i;   // 计算阶乘 由题干观察可知,第n项与第(n-1)项的关系式为:第n项=第(n-1)项*n
    }
    /** 输出结果 */
    printf("计算结果是:%lld\n", sum); // 【注意】printf中,与long long类型对应的是%lld;最后一个输出语句,一定要记得加上换行符(\n)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

坑💥:【重要

  • sum(总和)、a(各项值)需要使用long long类型防止溢出
  • printf中,与long long类型对应的是%lld

五、用while语句循环 ⭐️

(一)、格式 🍭

根据条件是否满足判断是否执行。

while(条件)
{
	。。。
}

(二)、举例 🍭

需求:输出100~300之间(包括100与300)的整数。

/**
 * 需求:输出100~300之间(包括100与300)的整数。
 */

#include <stdio.h>
int main()
{
    /** 使用变量/常量前必须先定义 */
    int i = 99;
    /** while语句 */
    while (i < 300)
    {
        i += 1;
        printf("%d\t", i); // \t相当于tab键
    }
    printf("\n"); // 最后一个输出语句,一定要记得加上换行符(\n)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

六、用break语句提前终止循环 ⭐️

break:是跳出整个循环系不再执行这个循环了

七、用continue语句提前结束本次循环 ⭐️

(一)、定义 🍭

continue只是这次循环结束了不再执行continue后的语句,而直接跳入了下一次循环

(二)、举例 🍭

需求:输出100~300之间(包括100与300)不能被4整除的整数。

/**
 * 需求:输出100~300之间(包括100与300)不能被4整除的整数。
 */

#include <stdio.h>
int main()
{
    /** 使用变量/常量前必须先定义 */
    int i = 99;
    /** while语句 */
    while (i < 300)
    {
        i += 1;
        // 若能被4整除,就不执行continue后面的语句(这里是输出对应整数值),直接跳入下一次循环
        if (i % 4 == 0)
            continue;
        printf("%d\t", i); // \t相当于tab键
    }
    printf("\n"); // 最后一个输出语句,一定要记得加上换行符(\n)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

八、用do...while语句循环 ⭐️

(一)、格式 🍭

do...while语句是一来就先执行一次再根据条件是否满足判断是否执行

do
{
	。。。
} while (条件); // 注意要加分号

(二)、举例 🍭

需求:求2+4+6+…+100

/**
 * 需求:求2+4+6+...+100
 */

#include <stdio.h>
int main()
{
    /** 定义三个变量 */
    int i = 1, sum = 0, a = 2;
    /** while语句 */
    do
    {
        i += 1;
        sum += a;
        a += 2;        // 由题干观察可知,第n项与第(n-1)项的关系式为:第n项=第(n-1)项+2
    } while (i <= 50); // 50为相加的总项数
    /** 输出结果 */
    printf("计算结果是:%d\n", sum); // 最后一个输出语句,一定要记得加上换行符(\n)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

九、用for语句循环 ⭐️

(一)、格式 🍭

for(语句1;语句2;语句3)
{
	。。。
}

(二)、举例 🍭

需求:求1到20的阶乘的和(1! + 2! + … + 20!)

写法一、🍒

/**
 * 需求:求1到20的阶乘的和(1! + 2! + ... + 20!)
 */

#include <stdio.h>
int main()
{
    /** 定义三个变量 */
    int i = 1;
    long long sum = 0, a = 1; // 【注意】使用long long类型防止溢出;因为1的阶乘是1,所以a=1
    /** for语句 */
    for (; i <= 20;) // 语句1和语句3可以提出来,但分号必须保留;20为相加的总项数
    {
        a *= i;   // 计算阶乘 由题干观察可知,第n项与第(n-1)项的关系式为:第n项=第(n-1)项*n
        sum += a; // 累加阶乘
        i += 1;
    }
    /** 输出结果 */
    printf("计算结果是:%lld\n", sum); // 【注意】printf中,与long long类型对应的是%lld;最后一个输出语句,一定要记得加上换行符(\n)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

写法二、🍒

/**
 * 需求:求1到20的阶乘的和(1! + 2! + ... + 20!)
 */
 
#include <stdio.h>

int main() {
    int i, j;
    long long sum = 0; // 使用long long类型防止溢出

    for (i = 1; i <= 20; i++) {
        long long factorial = 1; // 阶乘从1开始
        for (j = 1; j <= i; j++) {
            factorial *= j; // 计算阶乘
        }
        sum += factorial; // 累加阶乘
    }

    printf("1! + 2! + ... + 20! = %lld\n", sum);

    return 0;
}

在这里插入图片描述

十、n++n-- ⭐️

  1. n++n=n+1n+=1 在功能上是相似的,都是对变量n进行加1操作;
  2. n--n=n-1n-=1 在功能上是相似的,都是对变量n进行减1操作。

十一、数组 ⭐️

在这里插入图片描述

详情请查看我的另一篇博文哦~

十二、函数 ⭐️

在这里插入图片描述

详情请查看我的另一篇博文哦~

十三、排序的两种方法 ⭐️

在这里插入图片描述

  1. 冒泡法/沉底法
  2. 选择法

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6.1 欧拉方法与改进欧拉方法

6.1.1 欧拉方法 欧拉方法是一种数值解常微分方程&#xff08;ODE&#xff09;的方法&#xff0c;可以用于近似求解给定的初值问题。它是以欧拉命名的瑞士数学家莱昂哈德欧拉所发明的&#xff0c;因此得名。 欧拉方法的基本思路是将连续的常微分方程转化为离散的形式。具体而言…

全功能药效团图谱(Full-feature pharmacophore map)是什么?怎么绘制?

药效团和全功能药效团图谱是什么&#xff1f; 药效团是指与靶点相互作用并导致生物活性的化学基团或者分子结构片段。【药效团通常包括氢键受体/供体、疏水部位、离子化部位等关键成分】 "全功能药效团图谱" &#xff08;Full-feature pharmacophore map&#xff0…

.net6 core web项目发布部署到Linux,以守护进程服务的形式部署启动,nginx实现转发

一、发布项目 1、以文件夹形式 2、目标运行时选对应的平台&#xff08;Linux-x64&#xff09; 3、文件夹选项&#xff1a;在发布前删除所有现有文件 二、部署项目&#xff08;安装.net6环境&#xff1a;参考Linux安装 dotnet sdk 6.0&#xff09; &#xff08;1&#xff09;…

toRef

toRef就是把什么东西变成ref 用这个页面来讲解 改成这样就用不了&#xff0c;失去了响应的功能 为什么会这样&#xff1f; 看这个页面&#xff0c;其实这个Proxy的实现就响应式的原理&#xff0c;但是let namep.name实际上就是let name张三&#xff0c;只是把这个值给了name&…

Android 日志框架使用

在实际开发中&#xff0c;经常会遇到需要打印日志并保存到文件中&#xff0c;便于后面取日志分析代码运行情况&#xff0c;当然如果只是打印日志不需要记录文件&#xff0c;使用android自带的log工具就完全够了&#xff0c; Log打印日志会记录到系统日志中&#xff0c;可以取出…

光敏电阻传感器模块资料

实物项目案例 实物图&#xff1a; PCB图&#xff1a; 原理图&#xff1a; 用途&#xff1a; 光线亮度检测,光线亮度传感器&#xff0c;智能小车寻光模块 模块特色&#xff1a; 1、采用灵敏型光敏电阻传感器 2、比较器输出&#xff0c;信号干净&#xff0c;波形好&#x…

【Leetcode】10. 正则表达式匹配

10. 正则表达式匹配&#xff08;困难&#xff09; 题解 如果从左向右进行匹配的话&#xff0c;需要考虑字符后是否有 * 。 因此选择从右向左扫描更为简单。 *前面肯定有一个字符&#xff0c;它像是一个拷贝器&#xff0c;能够复制前面的单个字符&#xff0c;甚至也可以把这个…

Java 1.8新特性

接口的默认方法 Java 8允许给接口添加一个非抽象的方法实现&#xff0c;只需要使用default关键字即可&#xff0c;这个特征又叫做扩展方法 interface Formula {double calculate(int a);default double sqrt(int a) {return Math.sqrt(a);} }Formula接口在拥有calculate方法之…

【Linux初阶】进程的相关概念 | 进程管理 查看进程 获取进程标识符 fork进程创建

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;进程的概念&#xff0c;进程管理初识&#xff08;描述、管理进程&#xff09;&#xff0c;查看进程的基础方法…

【Nav2】ROS2 Eloquent中使用robot_state_publisher发布松灵Scout mini的urdf

【背景】 本来打算把ROS1版本的松灵Scout mini 模型描述文件直接移植到ROS2的工作空间里去&#xff0c;用robot_state_publisher加载出来&#xff0c;结果行不通&#xff1b;于是找到了ROS2版本的Scout mini 模型描述&#xff0c;结果因为我用的是 Eloquent 版本&#xff0c;而…

MobTech MobPush|A/B测试提升运营决策

在实际推送过程中&#xff0c;我们常常有这样的困惑&#xff1a; 我们如何确定哪种推送内容更能吸引用户&#xff1f; 我们如何衡量推送效果的提升程度&#xff1f; 我们如何优化推送方案&#xff0c;实现更高的ROI&#xff1f; 为了解决这些困惑&#xff0c;我们需要一种科…

碳中和成“必答题”,宁德时代创造产业“零碳”新维度

文 | 智能相对论 作者 | leo陈 2021年&#xff0c;麻省理工学院的教授索尔格里菲斯出版了《零碳未来》一书&#xff0c;这本著作总结了数十年的研究经验和数据&#xff0c;紧迫地提出&#xff0c;我们需要可以利用现有技术和资源快速应对气候变化的“零碳行动方案”。 既要保…

Netty时间轮源码解析

Netty主要应用用于网络通信&#xff0c;Netty还有一个非常重要的应用领域&#xff0c;即时通信系统IM, 在IM聊天系统中&#xff0c;有成千上万条条链路&#xff0c; Netty是如何管理这些链路的呢 &#xff1f; Netty还有一套自带的心跳检测机制&#xff0c;这套检测机制的原理是…

HCIP-7.0华为交换机技术基础学习

交换机基础 1、交换机工作原理1.1、VLAN虚拟局域网1.1.1、VLAN帧格式1.1.2、VLAN的划分方式&#xff1a;1.1.3、PVID1.1.4、Access端口类型1.1.5、Trunk端口类型1.1.6、Hybird端口类型 1.2、MUX VLAN应用场景和原理1.2.1、MUX VLAN原理1.2.2、MUX VLAN配置 1、交换机工作原理 …

软件测试—用例篇(上)

软件测试—用例篇 &#x1f50e;测试用例的概念&#x1f50e;测试用例的好处&#x1f50e;测试用例的设计方法&#x1f338;基于需求的设计方法&#x1f338;等价类划分法&#x1f338;边界值分析法&#x1f338;判定表 &#x1f50e;结尾 &#x1f50e;测试用例的概念 为了实…

【Python】如何用pyth做游戏脚本(太简单了吧)

文章目录 前言一、开发前景二、开发流程3.1、获取窗口句柄&#xff0c;把窗口置顶3. 2、截取游戏界面&#xff0c;分割图标&#xff0c;图片比较 二、程序核心-图标连接算法&#xff08;路径寻找&#xff09;四、开发总结五、源码总结 前言 简述&#xff1a;本文将以4399小游戏…

使用@Import注解给容器中快速导入一个组件

注册bean的方式 向Spring容器中注册bean通常有以下几种方式&#xff1a; 包扫描给组件标注注解&#xff08;Controller、Servcie、Repository、Component&#xff09;&#xff0c;但这种方式比较有局限性&#xff0c;局限于我们自己写的类Bean注解&#xff0c;通常用于导入第…

软测如果这么学,培训班都得倒闭,直接省去上万元的学费

俗话说外行看热闹&#xff0c;内行看门道。 写这篇文章&#xff0c;是希望把我的一些我认为是非常有价值的经验总结出来&#xff0c;能够帮助刚做测试不久的新同学&#xff0c;或者是测试经验丰富的老同学以共享。 希望我们可爱的新同学&#xff0c;准备要在测试领域耕耘的伙…

Git推出大文件储存工具Git LFS,但它真的好用吗?

Git LFS&#xff08;全称为Git Large File Storage&#xff0c;Git大文件存储&#xff09;被许多团队用来管理和存储大文件。本篇文章将解释Git LFS是什么&#xff0c;它的功能和使用场景&#xff0c;以及它究竟是不是管理大文件的最佳版本控制工具。 什么是Git LFS&#xff0…

共治、共建、共享!龙蜥社区第 16 次运营委员会会议顺利召开!

4 月 14 日&#xff0c;龙蜥社区在凝思软件召开了第 16 次运营委员会会议&#xff0c;本次会议由统信软件运营委员会委员崔开主持。来自阿里云、红旗软件、海光、Intel、联通软研院、浪潮信息、凝思软件、普华基础软件、统信软件、万里红、新华三、中科方德等理事单位的 23 位委…