您现在的位置是:首页 >技术杂谈 >2023-04-23 学习记录--C/C++-邂逅C/C++(中)网站首页技术杂谈

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

小呀小萝卜儿 2023-06-06 00:00:02
简介2023-04-23 学习记录--C/C++-邂逅C/C++(中)

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

上一篇:邂逅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("请输入两个实数,以逗号隔开:
"); // 提示信息
    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
", a, b); // 最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

二、常见表达式形式 ⭐️

1、赋值表达式(=)🎀

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

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

+ - * /
求余%

3、关系表达式 🎀

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

4、逻辑表达式 🎀

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

5、三目表达式 🎀

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

example:🎈

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

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

#include <stdio.h>
int main()
{
    /** 使用变量/常量前必须先声明 */
    char ch; // 字符
    /** 引导用户输入一个字符 */
    printf("请输入一个字符:
"); // 提示信息
    scanf("%c", &ch);             // 用户输入
    /** 若是大写字母,则将其转换成小写字母 */
    ch >= 'A' && ch <= 'Z' ? ch += 32 : ch;
    /** 输出结果 */
    printf("最后得到的字符是:%c
", ch); // 最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    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("请输入成绩等级(大写字母):
");
    scanf("%c", &grade);
    /** switch语句【注意:字符用的是单引号】*/
    switch (grade)
    {
    case 'A':
    case 'B':
    case 'C':
        // A、B、C等均执行这个语句
        printf("该生分数为60~100
"); // 最后一个输出语句,一定要记得加上换行符(
)
        break;
    case 'D':
        printf("该生分数为<60
"); // 最后一个输出语句,一定要记得加上换行符(
)
        break;
    default:
        printf("输入错误
"); // 最后一个输出语句,一定要记得加上换行符(
)
        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
", sum); // 最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    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
", product); // 最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    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
", sum); // 【注意】printf中,与long long类型对应的是%lld;最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    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	", i); // 	相当于tab键
    }
    printf("
"); // 最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    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	", i); // 	相当于tab键
    }
    printf("
"); // 最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    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
", sum); // 最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    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
", sum); // 【注意】printf中,与long long类型对应的是%lld;最后一个输出语句,一定要记得加上换行符(
)
    /** 程序正常运行结束 */
    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
", sum);

    return 0;
}

在这里插入图片描述

十、n++n-- ⭐️

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

十一、数组 ⭐️

在这里插入图片描述

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

十二、函数 ⭐️

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。