蓝色大气网站模板,网站导航上的图片做多大尺寸,多种成都网站建设,沈阳有什么服务网站目录
一、变量和数据类型
1、变量
2、标识符
3、作用域
4、常量
5、数据类型
1.基本数据类型-整型
2.char类型
3.bool类型
4.浮点类型
5.字面值常量
二、运算符
1、算数运算符
2、赋值运算符
3、复合赋值运算符
4、关系和逻辑运算
1.关系运算符 -------结果是…目录
一、变量和数据类型
1、变量
2、标识符
3、作用域
4、常量
5、数据类型
1.基本数据类型-整型
2.char类型
3.bool类型
4.浮点类型
5.字面值常量
二、运算符
1、算数运算符
2、赋值运算符
3、复合赋值运算符
4、关系和逻辑运算
1.关系运算符 -------结果是一个bool值
2.逻辑运算符
3.条件运算符
5、位运算符
1.移位运算符
2.位逻辑运算符
三、流程控制语句
1、条件分支
1.if
2.switch
2、循环
1.while
2.do while
3.for
九九乘法表例程
3、跳转
1.break
2.continue
3.goto 1、输出hello world
#includeiostream
using namespace std;
int main()
{cout hello world! endl;return 0;
}
std::cout流来输出文本信息。其中是输出运算符它用来将文本信息插入到输出流中。hello world!是要输出的文本信息std::endl是表示插入换行符的操作符它会在输出文本的末尾插入一个换行符使得输出的文本在控制台上单独占据一行。最终执行该代码会在控制台上输出hello world!并换行。
一、变量和数据类型
1、变量
想要使用变量必须先做“声明”也就是告诉计算机要用到的数据叫什么名字同时还要指明保存数据所需要的空间大小。比如: int a;
这里包含两个信息:一个是变量的名字叫做“a”它对应着计算机内存中的一个位置;另一个是变量占据的空间大小这是通过前面的“int”来指明的表示我们需要足够的空间来存放一个“整数类型”( integer数据。
变量声明 数据类型 变量名
#includeiostream
using namespace std;
int main()
{int a 10, b;cout a a endl;b 20;cout b b endl;//cin.get();//等待键盘输入}
运行结果 2、标识符
每个变量都有一个名字就是所谓的“变量名”。在C中变量、函数、类都可以有自己专门的名字这些名字被叫做“标识符”。
标识符由字母、数字和下划线组成;不能以数字开头;标识符是大小写敏感的长度不限。
例如 int a; char name;
标识符命名要求 不能使用C关键字; 不能用连续两个下划线开头也不能以下划线加大写字母开头这些被C保留给标准库使用; 函数体外的标识符不能以下划线开头; 要尽量有实际意义不要定义a、b而要定义name、age);变量名一般使用小写字母; 自定义类名一般以大写字母开头; 如果包含多个单词一般用下划线分隔或者将后面的单词首字母大写;
3、作用域
在C中有“作用域”(scope的概念就是指程序中的某一段、某一部分。一般作用域都是以花括号{}作为分隔的就像之前我们看到的函数体那样。
同一个名字在本同的作用域中,可以指代不同的实体(变量、函数、类等等)。定义在所有花括号外的名字具有“全局作用域”(global scope)而在某个花括号内定义的名字具有“块作用域”。一般把具有全局作用域的变量叫做“全局变量”具有块作用域的变量叫做“局部变量”。
#includeiostream
using namespace std;int number 0; //全局变量int main()
{int number 666; //局部变量cout number number endl;
}
全局变量和局部变量同名的时候会输出什么样的结果可以思考一下哟
输出结果 为什么输出的是666而不是0呢输出结果是以作用域更小的为准就相当于局部变量覆盖了全局变量。那新的问题来了那我想使用全部变量怎么办呢 4、常量
用变量可以灵活地保存数据、访问数据。不过有的时候我们希望保存的数据不能更改这种特殊的变量就被叫做“常量”。在C中有两种方式可以定义常量: (1使用符号常量 这种方式是在文件头用#define来定义常量也叫作“宏定义”。 define PI 3.14 跟#include一样井号“#”开头的语句都是“预处理语句”在编译之前预处理器会查找程序中所有的“PI并把它替换成3.14。这种宏定义的方式是保留的c语言特性在C中一般不推荐。 (2使用const限定符 这种方式跟定义一个变量是一样的,只需要在变量的数据类型前再加上一个const关键字这被称为“限定符”。 //定义常量 const float Pi 3.14; //不能修改常量值只能初始化一次 const修饰的对象一旦创建就不能改变所以必须初始化。
跟使用#define定义宏常量相比const定义的常量有详细的数据类型而且会在编译阶段进行安全检查在运行时才完成替换所以会更加安全和方便。
#includeiostream
using namespace std;int main()
{const float Pi 3.14; //常量cout Pi Pi endl;}
输出结果 5、数据类型
1.基本数据类型-整型 C定义的基本整型包括char、 short、int、long和C11新增的long long类型此外特殊的布尔类型bool本质上也是整型。 short类型至少为16位2字节)int至少2字节而且不能比 short短long至少4字节而且不能比int短long long至少8字节而且不能比 long短。
现在一般系统中short和 long 都选择最小长度也就是short为16位、long为32位、long long 为64位;而int则有不同选择。我们一般使用的电脑操作系统比如 Windows 7、Windows 10、Mac Os等等的实现中int 都是32位的。
#includeiostream
using namespace std;int main()
{short a 666;int b 888;long c 1;long long d 2;cout a a endl;cout b b endl;cout c c endl;cout d d endl;cout a的类型大小 sizeof a endl;cout b的类型大小 sizeof b endl;cout c的类型大小 sizeof c endl;cout d的类型大小 sizeof d endl;
}
运行结果 2.char类型
最常用的字符编码集就是ASCII码它用0~127表示了128个字符这包括了所有的大小写字母、数字、标点符号、特殊符号以及一些计算机的控制符。比如字母“A”的编码是65,I数字字符“o”的编码是48。
在程序中如果使用char类型的变量,我们会发现,打印出来就是一个字符;而它的底层是一个整数也可以做整数计算。 #includeiostream
using namespace std;int main()
{char a 65;char b a 1;cout a a endl;cout a1 (a1) endl;cout b b endl;cin.get();
}
运行结果 3.bool类型
在程序中往往需要针对某个条件做判断结果只有两种:“成立”和“不成立”;如果用逻辑语言来描述就是“真”和“假”。真值判断是二元的所以在c语言中可以很简单地用“1”表示“真”fo”表示“假”。
C支持c语言中的这种定义同时为了让代码更容易理解引入了一种新的数据类型——布尔类型bool。bool类型只有两个取值: true和 false这样就可以非常明确地表示逻辑真假了。bool类型通常占用8位1个字节)。
#includeiostream
using namespace std;int main()
{bool b true;cout b b endl;cout b占据长度为 sizeof b endl;cin.get();
}
运行结果 4.浮点类型
跟整数对应浮点数用来表示小数主要有单精度float和双精度double 两种类型double的长度不会小于float。通常float会占用4个字节(32位)而double会占用8个字节(64位)。此外C还提供了一种扩展的高精度类型longdouble一般会占12或16个字节。|
除了一般的小数在C中还提供了另外一种浮点数的表示法那就是科学计数法也叫作“E表示法”。比如:5.98E24表示5.98×10的24次方;9.11e-31表示9.11×10的31次方。
#includeiostream
using namespace std;int main()
{float a 1.23;double b 1.23e3;cout b b endl;cout a a endl;cin.get();
}
运行结果 5.字面值常量
(1整型字面值
整型字面值就是我们直接写的一个整数比如 30。这是一个十进制数。而计算机底层是二进制的,所以还支持我们把一个数写成八进制和十六进制的形式。以0开头的整数表示八进制数;以0x或者0X开头的代表十六进制数。例如: 30十进制数 036八进制数 0x1E 十六进制数 这几个数本质上都是十进制的30在计算机底层都是一样的。
在C中一个整型字面值默认就是int类型前提是数值在int能表示的范围内。如果超出int范围那么就需要选择能够表示这个数的、长度最小的那个类型。
具体来说对于十进制整型字面值如果int不够那么选择long;还不够就选择long long不考虑无将号类型);而八进制和十六进制字面值则会优先用无符号类型unsigned int,不够的话再选择long,之后依次是unsigned long、longlong和 unsigned long long。
这看起来非常复杂很容易出现莫名其妙的错误。所以一般我们在定义整型字面值时会给它加上一个后缀明确地告诉计算机这个字面值是什么类型。 默认什么都不加是int类型; l或者L表示long 类型; II或者LL表示long long类型; u或者u表示unsigned无符号类型;
我们一般会用大写L避免跟数字1混淆;而u可以和i或LL组合使用。例如9527uLL就表示这个数是unsigned long long类型。
(2浮点型字面值
前面已经提到可以用一般的小数或者科学计数法表示的数来给浮点类型赋值这样的数就都是“浮点型字面值”。浮点型字面值默认的类型是double。如果我们希望明确指定类型也可以加上相应的后缀: f或者F表示float类型 I或者L表示long double类型
这里因为本身数值是小数或者科学计数法表示所以工不会跟long 类型混淆。 (3字符和字符串字面值
字符就是我们所说的字母、单个数字或者符号,字面值用单引号引起来表示。字符字面值默认的类型就是char底层存储也是整型。
而多个字符组合在一起就构成了“字符串”。字符串字面值是一串字符用双引号引起来表示。 ‘A’字符字面值 Hello World!”字符串字面值
转义字符
有一类比较特殊的字符字面值我们是不能直接使用的。在ASCll码中我们看到除去字母、数字外还有很多符号其中有一些本身在C语法中有特殊的用途比如单引号和双引号;另外还有一些控制字符。如果我们想要使用它们就需要进行“转义”这就是“转义字符”。 二、运算符
1、算数运算符 这里需要注意的是同一个运算符在不同的场合可能表达不同的含义。比如“一”可以是“减号”也可以是“负号”:如果直接放在一个表达式前面就是对表达式的结果取负数这是一元运算符;如果连接两个表达式就是两者结果相减是二元运算符。
#includeiostream
using namespace std;int main()
{//算数运算符cout 1 2 1 2 endl;cout 1 2 * 3 - 4 1 2 * 3 - 4 endl;int a 2, b 4, c 7;cout a b a b endl;cout a * b c a * b c endl;cout c / a c / a endl; //两个整型数相除结果还是整数float d 10;cout d / b d / b endl; //小数和整数相除结果是小数cout c % b c % b endl; //取模运算只能用于整数cout -c % b -c % b endl;cin.get();
}
运算结果 2、赋值运算符
在C中用等号“”表示一个赋值操作这里的“”就是赋值运算符。需要注意的是赋值运算符的左边必须是一个可修改的数据对象比如假设我们已经定义了一个int类型的变量a那么 a 1; 这就是赋值。
赋值运算有以下一些规则: 赋值运算的结果就是它左侧的运算对象;结果的类型就是左侧运算对象的类型; 如果赋值运算符两侧对象类型不同就把右侧的对象转换成左侧对象的类型; C11新标准提供了一种新的语法:用花括号括起来的数值列表可以作为赋值右侧对象。这样就可以非常方便地对一个数组赋值了;赋值运算满足右结合律。也就是说可以在一条语句中连续赋值结合顺序是从右到左; 赋值运算符优先级较低一般都会先执行其它运算符最后做赋值; 3、复合赋值运算符
实际应用中我们经常需要把一次计算的结果再赋值给参与运算的某一个变量。最简单的例子就是多个数求和比如我们要计算a、b、c的和那么可以专门定义一个变量sum用来保存求和结果: 常见的C复合运算符包括 a b 表示将a和b相加并将结果赋给a- a - b 表示将a减去b并将结果赋给a* a * b 表示将a和b相乘并将结果赋给a/ a / b 表示将a除以b并将结果赋给a% a % b 表示a对b取余并将结果赋给a
4、关系和逻辑运算
1.关系运算符 -------结果是一个bool值 这里要注意区分的是在C语法中一个等号“”表示的是赋值两个等号“”才是真正的“等于”。
关系运算符的相关规则: 算术运算符的优先级高于关系运算符而如果加上括号就可以调整计算顺序; 关系运算符的返回值为布尔类型如果参与算术计算true的值为1false的值为0;
#includeiostream
using namespace std;int main()
{//关系运算符int a 1, b 2, c 3;cout a b (a b) endl;cout c a b (c (a b)) endl;cin.get();
}
运算结果 2.逻辑运算符
一个关系运算符的结果是一个布尔类型ture或者false)就可以表示一个条件的判断;如果需要多个条件的叠加就可以用逻辑“与或非”将这些布尔类型组合起来。这样的运算符叫做“逻辑运算符”。
逻辑非 !):一元运算符将运算对象的值取反后返回真值反转;
逻辑与):二元运算符两个运算对象都为 true时结果为true否则结果为false;
逻辑或(|):二元运算符两个运算对象只要有一个为 true 结果就为true都为false则结果为false;
#includeiostream
using namespace std;int main()
{//逻辑运算符int a 1, b 2, c 3;cout a b c 5 (a b c 5) endl;cout a b || c 5 (a b || c 5) endl;cin.get();
}
运行结果 这里需要注意的规则有: 如果将一个算术类型的对象作为逻辑运算符的操作数那么值为О表示false非o值表示true; 逻辑与和逻辑或有两个运算对象在计算时都是先求左侧对象的值再求右侧对象的值;如果左侧对象的值已经能决定最终绪果那么右侧就不会执行计算:这种策略叫做“短路求值”;
#includeiostream
using namespace std;int main()
{//短路求值int i 0,j 0;1 2 i;cout i i endl;1 2 || j;cout j j endl;cin.get();
}
运行结果 3.条件运算符
C还从C语言继承了一个特殊的运算符叫做“条件运算符”。它由“?”和“:”两个符号组成需要三个运算表达式形式如下: 条件判断表达式?表达式1∶表达式2
它的含义是:计算条件判断表达式的值如果为true就执行表达式1返回求值结果;如果为false 则跳过表达式1执行表达式2返回求值结果。这也是C中唯一的一个三元运算符。
#includeiostream
using namespace std;int main()
{//条件运算符int i 0;int a 5, b 2, max;cout (1 2 i ? true : false) endl;cout max ((a b) ? a : b) endl;cin.get();
}
运行结果 5、位运算符
之前介绍的所有运算符主要都是针对算术类型的数据对象进行操作的;所有的算术类型占用的空间都是以字节(byte8位)作为单位来衡量的。在C中还有一类非常底层的运算符可以直接操作到具体的每一位bit数据这就是“位运算符”。
位运算符可以分为两大类:移位运算符和位逻辑运算符。下面列出了所有位运算符的优先级和用法。 1.移位运算符
移位运算符有两种:左移运算符“”和右移运算符“”。 #includeiostream
using namespace std;int main()
{//位运算符unsigned char bits 0xA8; //10101000cout hex;cout bits右移2位 (bits 2) endl; //0010 1010cin.get();
}
运行结果 2.位逻辑运算符
计算机存储的每一个“位”(bit都是二进制的有0和1两种取值这跟布尔类型的真值表达非常类似。于是自然可以想到两个位上的“O”或“1”都可以执行类似逻辑运算的操作。
位逻辑运算符有:按位取反“~”位与“”位或“|”和位异或“^”。 按位取反“~”:一元运算符类似逻辑非。对每个位取反值也就是把1置为0、0置为1; 位与“”:二元运算符类似逻辑与。两个数对应位上都为1结果对应位为1;否则结果对应位为0; 位或“|”:二元运算符类似逻辑或。两个数对应位上只要有1结果对应位就为1;如果全为О则结果对应位为0; 位异或“^”:两个数对应位相同则结果对应位为0;不同则结果对应位为0;
三、流程控制语句
1、条件分支
C提供了两种按条件分支执行的控制语句:if 和switch。
1.if
if 语句主要就是判断一个条件是否为真(true),如果为真就执行下面的语句如果为假则跳过。具体形式可以分为两种:一种是单独一个if一般称为“单分支”;另一种是if ... else ...称为“双分支”。 (1)单分支
单分支是最简单的if用法判断的条件用小括号括起来跟在if后面然后是如果条件为真要执行的语句。基本形式为: #includeiostreamusing namespace std;int main()
{//输入用户年龄判断后显示欢迎信息cout 请输入您的年龄 endl;int age;cin age;cin.get();if (age 18){cout 欢迎登录 endl;}elsecout 少儿不宜 endl;cin.get();
}
运行结果 (2嵌套分支多分支)
程序中的分支有可能不只两个这时就需要对if分支或者else分支再做条件判断和拆分了这就是“嵌套分支”。 #includeiostreamusing namespace std;int main()
{//输入用户年龄判断后显示欢迎信息cout 请输入您的年龄 endl;int age;cin age;cin.get();if (age 18){cout 欢迎登录 endl;if(age 35){cout 继续加油年轻人 endl;}}else{ cout 少儿不宜 endl;if (age 12){cout 少年好好学习 endl;}elsecout 小朋友别乱玩 endl;}cin.get();
}
运行结果 嵌套分支如果比较多代码的可读性会大幅降低。所以还有一种更加简单的嵌套分支写法那就是if ... else if ..具体形式如下: #includeiostreamusing namespace std;int main()
{//输入用户年龄判断后显示欢迎信息cout 请输入您的年龄 endl;int age;cin age;cin.get();if(age 12){cout 小朋友别乱玩 endl;}else if (age 18){cout 少年好好学习 endl;}else if (age 35){cout 好好玩 endl;}else if (age 60){cout 继续加油中轻人 endl;}else{cout 好好休息 endl;}cin.get();
}
运行结果: 2.switch 这里switch后面的括号里是一个表达式对它求值然后转换成整数类型跟下面每个case后面的值做比较;如果相等就进入这个case指定的分支执行后面的语句直到swith 语句结束或者遇到break退出。需要注意的是: case关键字和后面对应的值合起来叫做一个“case标签”; case标签必须是一个整型的常量表达式; 任何两个case标签不能相同; break语句的作用是“中断”会直接跳转到switch语句结构的外面; 如果没有break 语句那么匹配某个case标签之后程序会从上到下一直执行下去;这会执行多个标签下面的语句可能发生错误; 如果没有匹配上任何case标签的值程序会执行default标签后面的语句; default是可选的表示“默认要执行的操作”。
#includeiostreamusing namespace std;int main()
{cout 请输入您的成绩 endl;char score;cin score;cin.get();switch (score){case A:cout 你真棒获得优秀的成绩 endl; break;case B:cout 良好 endl; break;case C:cout 中等 endl; break;case D:cout 加油吧 endl; break;default:break;}cin.get();
}
运行结果 2、循环
C中的循环语句有while、do while和 for三种。
1.while
while只需要给定一个判断条件只要条件为真就重复地执行语句。形式如下: 要执行的语句往往会有多条这就需要用花括号将它们括起来。这个块一般被称为“循环体”。
一般来说用来控制while循环的条件中一定会包含变量通常叫做“循环变量”;而它或者在条件中变化或者在循环体中变化这样才能保证循环能够终止退出。
#includeiostreamusing namespace std;int main()
{cout 循环即将开始...\n endl;int i 1;while (i 10){cout 现在是第 i 循环 endl;i;}cin.get();
}
运行结果 2.do while
do while和 while非常类似区别在于do while是先执行循环体中的语句然后再检查条件是否满足。所以do while至少会执行一次循环体。
do while语法形式如下: #includeiostreamusing namespace std;int main()
{cout 循环即将开始...\n endl;int i 1;while (i 10){cout 现在是第 i 循环 endl;i;}cout ------------------------- endl;do{cout 现在是倒数 --i 次循环 endl;} while (i 1);cin.get();
}
运行结果 3.for
for循环的经典语法形式是: 关键字for和它后面括号里的部分叫做“for语句头”。for语句头中有三部分用分号分隔主要作用是: 初始化语句负责初始化一个变量这个变量值会随着循环迭代而改变一般就是“循环变量”: 中间的条件是控制循环执行的关键为真则执行下面的循环体语句为假则退出。条件一般会以循环变量作为判断标准; 最后的表达式会在本次循环完成之后再执行一般会对循环变量进行更改;
这三个部分并不是必要的根据需要都可以进行省略。如果省略某个部分需要保留分号表示这是一个空语句。
#includeiostreamusing namespace std;int main()
{cout 循环即将开始... endl;for (int i 1; i 10; i){cout hello i endl;}cout 循环结束 endl;cin.get();
}
运行结果 九九乘法表例程
#includeiostreamusing namespace std;int main()
{//使用嵌套for循环实现九九乘法表//i:行号j:列号for (int i 1; i 9; i){for (int j 1; j i; j){cout i * j i * j \t;}cout endl;}cin.get();
}
运行结果 3、跳转
在流程控制语句中还有一类“跳转语句”主要用来中断当前的执行过程。C中有四种跳转语句: breakcontinuegoto 以及return 0
1.break
#includeiostreamusing namespace std;int main()
{int i 1;while (true){cout hello world,i i endl;if (i 5){break;}}cin.get();
}
运行结果 2.continue
continue语句表示“继续”执行循环也就是中断循环中的本次迭代、并开始执行下一次迭代。很明显continue只能用在循环语句中同样针对最近的一层循环有效。
#includeiostreamusing namespace std;int main()
{//逢7过for (int num 1; num 100; num){cout \t;//如果是7的倍数或者含7就跳过if (num % 7 0 || num % 10 7 || num / 10 7)continue;cout num;//如果是10的倍数则换行if (num % 10 0){cout endl endl;}}cin.get();
}
运行结果 3.goto
goto语句表示无条件地跳转到程序中的另一条语句。goto的语法形式为: 这里的“标签”可以认为是一条语句的“名字”跟变量类似只不过它是指代一条语句的标识符。定义标签也非常简单只要在一条语句前写出标识符然后跟上冒号就可以了比如: #includeiostreamusing namespace std;int main()
{int i 1;
p1:do{cout i i endl;} while (i 10);if (i 15){goto p1;}cin.get();
}
运行结果