当前位置: 首页 > news >正文

C++菜鸟教程 - 从入门到精通 第二节

一.上节课的补充(数据类型)

        1.前言

                继上节课,我们主要讲解了输入,输出和运算符,我们现在来补充一下数据类型的知识

                上节课遗漏了这个知识点,非常的抱歉

                顺便说一下,博主要上高中了,更新会慢,2-4周更新一次

                对了,正好赶上中秋节,小编跟大家说一句:中秋节快乐!

        2.int类型

                上节课,我们其实只用了int类型

                int类型,是整数类型,它们存贮的是整数,不能存小数(浮点数)

                定义变量的方式很简单

int a;           //定义一个变量,初始值为0,可以在后面对其进行赋值
a=5;             //将a赋值为5
int b=7;         //定义一个变量,初始值为7,可以在后面改变其值

                这里要注意了,int类型的存储数值是有上限的,一旦超过上限,这个数值就会变成随机数

                int存储上限:2^31 - 1 = 2147483647  

                int会占用4个字节

_____________________________________________________________________________

        顺便把内存的事讲了

                        我们来说说内存的事

                        字节: 存储信息的基本单位Byte => B 
                        位: 信息存储的最小单位    bit => b
                        一位就是一个二进制 

                        1TB=1024GB
                        1GB = 1024MB
                        1MB = 1024KB
                        1KB = 1024B
                        1B = 8bit 

                        你可能会问,为什么"进率"是1024呢?

                请看:

1024  512  256  128  64  32  16  8  4  2  1
        1024 = 2的10次方

这回就没有问题了吧 

再来讲讲CPU,硬盘,内存 

CPU 内存 硬盘
        硬盘: 容量大, 速度慢         
              永久存在的 

        内存: 容量一般, 速度较快
              断电信息就没了 

        CPU: 容量极小, 速度极快     

 OK?

_____________________________________________________________________________

好了,我们说回数据类型

        3.long long类型

                long long类型,是长整数类型,它们存贮的也是整数,不能存小数(浮点数)

                long long类型和int类型的区别:很简单,long long储存上限比int大不少

                long long 类型占用8个字节

long long a=3;
long long b;
b=7;

                和int类型的复制方式没什么区别,我就不做赘述

        4.char类型

                char,是字符类型(不是字符串),可以存储单个字符(不能存储多个!) 

                char类型较小,只占用1个字节

char c='b';
char s;
s='1';

                一定注意,字符旁边是单引号,不要加双引号,否则就会报错!

        5.string类型

                string,是字符串类型,可以存储任意个字符(没有上限!) 

                想用string,需要先导入<string>头文件

#include <string>

                然后就可以了

#include <string>
string a="1a2b3c4d";
string b;
b="XYZ";

这里又和char不一样,字符串两边是双引号,大家不要弄混了哈!

字符串也能相加!

你没听错,string类型可以做加法运算(only 加法)

#include <iostream>	       //头文件
#include <string>
using namespace std;       //命名空间
string a,b;                //变量
int main(){a="ABCD";              //为变量赋值b="EFG";a+=b;                  //加法运算开始!  同a=a+bcout<<a;               //检验结果return 0;
}

这总会有用,就是比较少

        6.float类型

                float类型是浮点类型,用于存储浮点数(小数)
                float,占4个字节,小数部分最大存储上限为7位 

float a=1.25;
float b;
b=7.6;

                在c++14中,输出float数会直接自动将其化为最简输出(1.250000 化为1.25)

float c=1.2500000;  
cout<<c;     
//这里c输出的是1.25

        7.double类型

               double类型,也是浮点类型,但是它小数部分最大存储上限为15位,默认用这个

                它占8个字节,被称为双精度浮点类型,float是单精度浮点类型

double a=3.4;
double b;
b=4.333;

               C++14中,double类型也是直接自动将其化为最简输出

        8.bool类型  

                这就是布尔类型了,只有true和false两种状态

                条件表达式的返回值就是bool类型

                bool只占一个字节,较少

bool b=true;
bool c;
c=false;

          9.来做题

                温度转换

                        题目描述

                        编一程序,将摄氏温度换为华氏温度。公式为:f=9/5*c+32。其中f为华氏温度,c是                          摄氏温度。

                        输入

                        输入一行,只有一个整数c

                        输出

                        输出只有一行,包括1个实数。(保留两位小数)

                样例输入
50
                样例输出
122.00
题目分析

已知,转换公式为 f=9/5*c+32

根据样例输入输出可知,c是int类型,f是float类型,只需设置好变量,再将公式带入,完成!

保留两位小数用iomanip中的setprecision()函数即可

 代码
#include <iostream>
#include <cstdio>
#include <iomanip>    //这里面有保留小数的函数
using namespace std;
int c;                //设置变量
double f;
int main(){cin>>c;           //输入摄氏度f=9*1.0/5*c+32;   //直接套入公式cout<<fixed<<setprecision(2)<<f<<endl;            //输出freturn 0;         //完结撒花
}

               OK,我们继续.

二.我们来讲if语句

        1.if-如果

关于if语句的使用,我们上节课讲题的时候已经提到过,这里再来说一下

if(条件表达式){要执行的代码(一行或多行);
}

if语句会判断你给它的条件表达式,若为true,这执行里面的代码,否则直接跳过

这里先不做例题,下文会做的.

很简单吧,要是有什么问题评论区问我,我详细回答

        2.if...else-如果否则

else,英文是否则的意思,在c++中也是如此

if(条件表达式){要执行的代码;
}
else{          //不用写条件表达式要执行的代码;
}

上文说了,if语句会判断你给它的条件表达式,若为false,不执行里面的代码(直接跳过)

else语句会在if语句判定为false后执行它里面的语句

                举个例子

                看这个代码:

if(1+2==4){cout<<"1+2=4";
}
else{cout<<"1+2≠4";
}

来看if语句,很显然,1+2不等于4,判定为false,执行else中的语句

输出"1+2≠4"

        例题-旅游计划

题目描述

期末考试结束了,小华语文、数学、英语三门功课分别考了x、y、z分,小华的家长说,如果小华三门功课的平均分在90分或者90分以上,那么就去北京旅游,如果在90分以下,那么就去南京玩。

请从键盘读入小华三门功课的成绩,编程计算出小华暑期旅游的目的地,如果去北京,则输出“beijing”,如果去南京,则输出“nanjing”。(只要输出双引号中间的拼音,不要输出双引号)

输入

三个整数,代表小华三门功课的考试成绩。

输出

按题目要求输出小华旅游的目的地。

样例输入

90 95 91

样例输出

beijing

题目分析 

该题可以使用if...else语句,先计算出三科平均分,再进行判断,若大于等于90,则输出"beijing"

若小于90,则输出"nanjing".

 代码

#include <iostream>       //头文件,不用多说
#include <cstdio>
using namespace std;      //命名空间
int x,y,z;                //三科成绩,x,y,z变量(建议使用题中说的变量名称)
int main(){cin>>x>>y>>z;         //输入三科成绩if((x+y+z)/3>=90) cout<<"beijing"<<endl;   //进行判断(x+y+z)/3>=90 是条件表达式(算出平均数再比较是否大于等于90,若是,输出"beijing")                             else cout<<"nanjing"<<endl;                //若三科平均分低于90,则输出"nanjing"return 0;             //结束程序
}

        3.if...else if...else-多分支语句

        else if 语句里面是可以写条件的,顺序就是:if不成立,看第一个else if ,第一个else if不成立,看第二个else if......          以此类推,直到else语句

注意,else if 必须与if搭配使用,没有if的话是不能用的

总结一下,一个if语句后面可以加无限多个else if语句,可以用else语句作为这一套if判断的末尾(也可以没有)

        来个题-三角形的分类

题目描述

给定三个角度 a,b 及 c。请判断这三个角在平面上能组成什么样的三角形:

  • 如果不能组成三角形,输出 Error
  • 如果能组成等边三角形,输出 Equilateral
  • 如果能组成等腰直角三角形,输出 Isosceles right
  • 如果能组成等腰三角形,输出 Isosceles
  • 如果能组成直角三角形,输出 Right
  • 如果能组成不等边三角形,输出 Scalene

输入格式

  • 第一行:第一个角的角度 a
  • 第二行:第二个角的角度 b
  • 第三行:第三个角的角度 c

输出格式

根据题目要求输出对应的文字

数据范围

  • 1≤a,b,c≤180

样例数据

        输入
60
60
60
        输出
Equilateral

题目分析  

上过小学的都知道,三角形的内角和等于180度,否则无法构成三角形(能否组成三角形的因素)

我们来逐一解决                                       (不会的赶紧记概念呀)

  • 如果不能组成三角形,输出 Error    判断三角形内角和即可
  • 如果能组成等腰直角三角形,输出 Isosceles right  有一个角是直角,且其余两角均为45度
  • 如果能组成直角三角形,输出 Right   有一个直角,但组不成等腰直角三角形即为直角三角形
  • 如果能组成等边三角形,输出 Equilateral  这个就简单了,三角均等于60度即可
  • 如果能组成等腰三角形,输出 Isosceles   也很easy,有两个角度数相等
  • 如果能组成不等边三角形,输出 Scalene   以上条件均不满足,就是左边这位了

代码

#include <iostream>
#include <cstdio>
using namespace std;
int a,b,c;                       //变量
int main(){cin>>a;cin>>b;                      //输入三个角的度数cin>>c;if(a+b+c==180){              //内角和=180度,否则构不成三角形if(a==90 or b==90 or c==90){           //有一个角是直角(直角三角形,等腰直角三角形)if(a==45 or b==45 or c==45) cout<<"Isosceles right";   //判断是否是等腰直角三角形else cout<<"Right";                //若不是等腰直角三角形,就是直角三角形} else if(a==60 and b==60 and c==60) cout<<"Equilateral";   //判断是否是等边三角形(正三角形)else if(a==b or a==c or b==c) cout<<"Isosceles";          //判断是否是等边三角形(有两条边相等)else cout<<"Scalene";           //否则就是不等边三角形 }else cout<<"Error";       //无法组成三角形的情况return 0;
}

好了,明白了吗,不明白在评论区提问,随时欢迎!

三.for循环

for,是遍历循环,主要作用是遍历数组.

for循环讲解

for(int i=1;i<=100;i++){cout<<i<<endl;
}

这个代码的作用是,依次输出1-100的这些数.

来重点讲一下int i=1;i<=n;i++这块代码

int i=1  就是设置一个变量为1(也可以是其他数,从这个数开始)

i<=n     假设输入了一个变量n,这里就可以用了(灵活性很高嘛).

当然了,可以直接输入数(就像上文代码一样)

i++       就是i做自增,自增是什么,看 C++菜鸟教程 - 从入门到精通 第一节

就比如int i=1;i<=100;i++

就是i一开始是1,每次循环做一次自增(自身+1),一直到它不再<=100(或着说>100)

编程求1*2*3*...*n

题目描述

编程求1*2*3*...*n

输入

输入一行,只有一个整数n(1<=n<=10)

输出

输出只有一行(这意味着末尾有一个回车符号),包括1个整数。

样例输入 

5

样例输出

120

题目分析

这个题很简单,只需先输入n,再循环n次,进行乘法运算即可,只要熟练掌握了for循环的知识点就好

还需要利用for循环中遍历的特性,使那个"Ⅰ",每次+1,就能很轻松的乘出来

代码 

#include <iostream>
#include <cstdio>
using namespace std;
int n,d=1;            //d的初始值必须为1,若为0,无法进行乘法运算
int main(){cin>>n;           //输入nfor(int i=1;i<=n;i++){          //for遍历,循环n次d*=i;	                    //i其实就是次数,每次都会+1,用d直接*=i即可} cout<<d;          //完成了,可喜可贺return 0;
}

怎么样,for循环,好用吗?

四.for循环嵌套

一个for循环中有另一个for循环,即为for循环的嵌套,总循环次数为第一个for循环次数*第二个for循环次数

这有一个题

题目描述

N!=1*2*...*N;
例5!=1*2*3*4*5=120.
编程求1!+2!+3!+...+N!.

输入

输入一行,只有一个整数n (1<=n<=10) 

输出

输出只有一行(这意味着末尾有一个回车符号),包括1个整数。

样例输入

3

样例输出

9

!,阶乘的意思,5的阶乘就是从1乘到5(1*2*3*4*5),其他数的阶乘也是如此

题目分析 

使用循环嵌套,第一次for循环N次,第二次for循环第一次循环的"Ⅰ"次

第二次for循环中,求"Ⅰ"的阶乘,进入第一次循环后,用新变量进行累加

代码

只给你们第二重循环代码,其余自己写,下节课公布答案!

for(int j=1;j<=i;j++){c*=j;
}

 c是自定义的变量,代表一个数的阶乘

好了,下节课再见!


http://www.mrgr.cn/news/27945.html

相关文章:

  • AE抠像roto添加和删除区域以及渲染导出
  • vscode报错:Connecting with SSH time-out.
  • Spring Boot 多环境开发配置详解:Profiles 的使用指南
  • Docker+Django项目部署-从Linux+Windows实战
  • aws ses 设置发件人昵称
  • 使用LangGraph开发太阳能节能计算智能体
  • 如何在GitHub上克隆仓库:HTTPS、SSH和GitHub CLI的区别
  • 通义灵码在Visual Studio上
  • 垃圾回收相关概念
  • Java21新特性
  • mac中git操作账号的删除
  • 【更新】上市公司-供应链金融水平数据(2000-2023年)
  • 统信服务器操作系统【d版字符系统升级到dde图形化】配置方法
  • 遗传算法(GA算法)求解实例---旅行商问题 (TSP)
  • 【思博伦】史上最详细思博伦测试仪使用精讲(三)!图解超赞超详细!!!
  • 基于AgentUniverse在金融场景中的多智能体应用探索
  • 动态规划---判断子序列
  • 七、排序-算法总结
  • 日志工具类
  • Linux——应用层自定义协议与序列化
  • 【30天玩转python】装饰器与闭包
  • 光伏板热斑缺陷检测数据集
  • 浮点数在内存中的存储详解(超详细)
  • JavaScript高级——循环遍历加监听
  • PointNet++改进策略 :模块改进 | PointNetXt ,利用训练测量大幅提升PointNet模型性能
  • 如何迈向IT行业的成功之路