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("请输入两个实数,以逗号隔开:\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
码表里,大写字母在前面,小写字母在后面,相差32
个ASCII
码值】
大写字母 = 小写字母 - 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--
⭐️
n++
和n=n+1
和n+=1
在功能上是相似的,都是对变量n
进行加1
操作;n--
和n=n-1
和n-=1
在功能上是相似的,都是对变量n
进行减1
操作。
十一、数组 ⭐️
详情请查看我的另一篇博文哦~
十二、函数 ⭐️
详情请查看我的另一篇博文哦~
十三、排序的两种方法 ⭐️
- 冒泡法/沉底法
- 选择法