c++基础部分(1)

来源:互联网 发布:淘宝ps卖自己 编辑:程序博客网 时间:2024/04/30 14:27

简单的屏幕输出小程序

#include <iostream.h> /*#:预处理标志 iostream是标准的输入输出库*/

int main(int argc, char *argv[]) //main主函数作为程序的执行入口

{

         std::cout<<"我初学c++\n";

         int x;

         std::cin>>x;

         std::cout<<x;

         return 0; /*由于该mian函数被声明为一个整型,因此返回了一个0,即 return 0;*/

}

 

在使用(std::)cout对象来输出信息的时候,它的后面要跟一个左移运算符”<<”,”<<”后面的内容都会被输出到屏幕上

“\n”是一个格式符号,有着换行的作用

在标准函数库中还有一个cin对象,它是用来接受键盘输入,它的使用方法与cout相反,cin后面加右移运算符”>>”

输出语句的使用

#include <iostream.h>

int main(int argc, char *argv[])

{

         std::cout<<"五年级一班数学成绩表\n";

         std::cout<<"首先是第一名许凡的成绩 \t"<<100;

         std::cout<<std::endl;

         std::cout<<"其次是第二名张友的成绩 \t"<<90+9;

         std::cout<<std::endl;

         /*5/8的前面加了一个float,它用来说明后面所跟的值的类型是个浮点数*/

         std::cout<<"最后是末一名林杰的成绩 \t"<<(float)5/8;

         std::cout<<std::endl;

         return 0;

}

 

“\t”该符号是一个制表符,作用相当于按了一下tab键

“endl”该符号除了具有”\n”的换行功能外,还调用输出流的flush函数,刷新缓冲区,让数据直写入文件或者屏幕上

std:: 是什么

std:: 是个名字空间标识符,c++标准库中的函数或者对象都是在名字空间std中定义的,所以我们要使用标准库中的函数或者对象都要在std来限定

对象cout是标准库所提供的一个对象,而标准库在名字空间中被指定为std,所以在使用cout前要加上std:: ,这样编译器就会明白我们调用的cout是命名空间std中的cout

std都是在什么时候使用?

一般来说,std都是要调用c++标准库时使用。

如:使用标准库iostream时,要写上std;非标准库文件iostream.h,不用写

使用using释放cout,endl

#include <iostream.h>

using std::cout; /**使用using 将cout,endl给释放出来,那么在代码中就不需要写了*/

using std:endl;

int main(int argc, char *argv[])

{

         cout<<"五年级一班数学成绩表\n";

         cout<<"首先是第一名许凡的成绩 \t"<<100;

         cout<<std::endl;

         cout<<"其次是第二名张友的成绩 \t"<<90+9;

         cout<<std::endl;

         /*5/8的前面加了一个float,它用来说明后面所跟的值的类型是个浮点数*/

         cout<<"最后是末一名林杰的成绩 \t"<<(float)5/8;

         cout<<std::endl;

         return 0;

}

更简单的方法,就是直接使用using namespace std来代替using std:: cout和usingstd::endl

#include <iostream.h>

using namespace std

int main(int argc, char *argv[])

{

         cout<<"五年级一班数学成绩表\n";

         cout<<"首先是第一名许凡的成绩 \t"<<100;

         cout<<std::endl;

         cout<<"其次是第二名张友的成绩 \t"<<90+9;

         cout<<std::endl;

         /*5/8的前面加了一个float,它用来说明后面所跟的值的类型是个浮点数*/

         cout<<"最后是末一名林杰的成绩 \t"<<(float)5/8;

         cout<<std::endl;

         return 0;

}

iostream和iostream.h的区别

iostream.h为非标准的输入输出流,这个.h的头文件是c语言格式的,由于当时还没有名字空间这个说法,所以也就不存在std这个名字空间标识符。自然用iostream.h也就用不着std或using namespace std了

iostream为标准输入输出流,它是c++规范的带有名称空间的头文件,它包含在std名字空间内

区别就是是否存在std名字空间的问题

名字空间的的好处

重名问题

此种做法是不冲突的

#include <iostream>

namespace a{

         int b=5;

}

namespace c{

         int b=6;

}

int main(int argc, char *argv[])

{

         int b=8;

         std::cout<<b<<" "<<a::b<<" "<<c::b<<std::endl;

         return 0;

}

下列做法导致冲突

b引起了歧义

注释

第一种:/**/à从格式符加星号开始,到加星号格式符结束;可以注释次标签里面的所有内容

第二种://à标准的c++注释,只能注释本行的内容

函数的演示

函数又叫方法,即实现某功能或服务的代码块

#include <iostream.h>

int show(){

         std::cout<<"hello world\n";

         return 1;

}

int main(int argc, char *argv[])

{

         show();

         std::cout<<"main函数结束\n";

         return 0;

}

函数的传参

#include <iostream.h>

int show(int a, int b){//a,b是形式上的参数

         return a+b;

}

int main(int argc, char *argv[])

{

         int a=3,b=4;

         cout<<"请输入两个整数\n";

         std::cin>>a;

         std::cin>>b;

         show(a,b);

         std::cout<<"a+b="<<show(a,b)<<endl;

         return 0;

}

 

函数的声明和定义

在程序中使用函数时,你必须先声明它然后再定义,声明的目的是告诉编译器你即将要定义的函数的名字是什么,返回值的类型是什么以及参数是什么。而定义则是告诉编译器这个函数的功能是什么,假如我们不声明,那么该函数就不能被其他函数调用。通常我们把函数声明叫做函数原型,而把函数定义叫函数实现。

#include <iostream.h>

int add(int,int); //函数的声明

int main(int argc, char *argv[])

{

         return 0;

}

//此方法成为函数的定义

int add(int a,int b){

         return a+b;

}

 

局部变量

在函数内部声明的变量为布局变量,局部变量的意思即该变量只存活于该函数中,假如该函数调用结束,那么该函数的寿命也就结束了。

全局变量

在任意函数外部定义的变量要做全局变量

c++的数据类型

c++有六种数据类型,它们分别是布尔型(boolean)、字符型(char)、双字符型(wchar_t)、整型(int)、单精度浮点型(float)和双精度浮点型(double)

再进行细分的话,整型又可以分为无符号型、长整型和短整型,双精度型还可以分为双精度型和长双精度型(除此之外静态变量(static)和外部变量(extern),寄存器变量和自动存储变量)

常量的值是不可以改变的,变量的值是可以改变的

什么是变量

其值是可以改变的量称为变量,一个变量应该有一个名字,这个名字叫做变量名。

比如说:“π“这个符号,它既是一个符号名,又代表数值3.1415926……

int a;

a=1; //这样变量a就代表数值1,或者说是变量a的值为1

也可以写成这样

int a=1;  //可以将定义变量和赋值合并为一句,注意此处为对a的初始化而不能叫做赋值

赋值操作是在定义a之后进行的,而初始化则是与定义a同步进行的。

变量是存储信息的地方,是内存中的地址,在这个地址中可以进行读取和存储,当然这只是临时存储,当关闭计算机后,信息则会丢失。

变量及数据如何存储在内存上

当你在运行一个程序时,程序自动将一部分数据从磁盘文件上加载到随机存取存储器上(也要RAM),所有的变量都在RAM中生成,程序员在谈到内存时通常都是指RAM.RAM不能将数据和变量永久的保存在内存上,因此当程序员运行结束或者断点,后,这些数据和变量便从内存中释放或者丢失。

由于内存的这种特性,因此当我们定义一个变量时,我们必须告诉编译器该数据的内型,然后编译器则根据我们定义的类型自动为变量预留空间,然后做好该类型的值的准备。

进制的换算

10进制就是使用数字0-9,逢10进1。

任何数值的0次幂是1。

10进制就是使用数字0-7逢8进1。

布尔型(boolean)

布尔型可表示两个逻辑值,1和0,即真或者假。

bool 英文发音为[bu:l],意思是逻辑的,英译过来是布尔

#include <iostream>

using namespace std;

int main(int argc, char *argv[])

{

/*

         bool check;

         check=false; */

//      bool check=0;//该语句定义了一个布尔型变量,初始化为0(false)

         bool check=true;

         if(check==true){

                   cout<<"hello world\n";

         }

         return 0;

}

字符型

字符型标量存放的是字符,这个字符指的是计算机字符集中的字符(ASCII码),字符型变量只占一个字节

#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])

{

         for(int i=32;i<128;i++){

                   cout<<(char)i;

         }

         return 0;

}

特殊字符:

特殊字符

含义

\a

铃声(警报器)

\b

回退

\f

换页

\n

换行

\r

回车

\t

TAB键

\v

垂直制表

\’

单引号

\”

双引号

\?

问号

\\

反斜杠

\000

八进制

\xhhh

十六进制

双字节型(宽字符型)

char型变量课存储一个字节的字符,它用来保存英文字符和标点符号是可以的,但是存储汉字、韩文与日文却不可以,因为他们占据两个字节,所以c++又提供了wchar_t类型,也就是双字节类型,又叫宽字符类型。

wcout用于输出宽字符

整型概述

最基本的是int,一个字节保存8位二进制数,4*8=32,按大小分为长整型和短整型long short

sizeof:计算占据内存空间的大小

整型变量的定义

c++的变量都必须定以后才能使用,定义的作用是告诉编译器该变量占用多少字节,以便于分配内存。而赋值则是将数值存储到该内存空间中。

整型数据溢出后不会报错,到达最大值后,又从最小值开始计数,因此要注意赋值范围

浮点型变量

float类型:

长度为4个字节,是32位二进制

符号位为零是正,为1是负

如果要想精确的话,控制位数在6~7位。

setprecision控制输出位数   #include<iomanip>

double类型:

长度为8个字节,是64位二进制

如果要想精确的话,可以控制位数在15~16位。

常量

其值不能改变的,初始化过后,不能赋值

枚举型常量(enum)

允许用文字来代替数字

#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])

{

         enum num{zero,one,two,three,four};

         cout<<zero<<"\t"<<one<<"\t"<<two<<"\t"<<three<<"\t"<<four<<endl;

         return 0;

}

用enum定义的值从0开始计算的,往后的值依次增加1

以星期计算为例:

#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])

{

enum day{

 Sunday,Monday,Tuesday,Wednesday,Thurday,Friday,Saturday};

day today;

today=Monday;

if(today==Sunday||today==Saturday){

         cout<<"周末休息\n";

}else{

         cout<<"工作日\n";

}

         return 0;

}

语句、块、表达式

语句是以分号作为结束标志,如果只有;,这也是一条语句,空语句,没有任何作用

语句中的空白一般忽略不计

块是以“{”开始,“}”结束,中间可以存放语句

凡是用于计算值的操作都可以看作是表达式,表达式总能返回一个值y=x=a+b

运算符

运算符是指可以进行运算操作的符号。而提供给运算符进行操作的数值我们把他们叫做操作符。所有的操作数由于都可以返回一个值,因此它们都是表达式。

c++有好几类运算符,其中最常见的是:

赋值运算符:实现对操作数赋值的功能 x=1 “=”就是赋值运算符

注意:常量都要放在右边,不能放在左右

数学运算符:实现对操作数进行数学运算的功能。1+2/ 1-2 “+”、“-”……都是运算符

求模运算符就是求出两个数的余数

#include <iostream.h>

int main(int argc, char *argv[])

{

         for(int i=0;i<60;i++){

                   if(i%6==0){

                            cout<<"\n";

                   }

                   cout<<i<<"\t";//\t是制表符

         }

         return 0;

}

例:

a+=6;

这行语句将赋值运算符“=“与数字运算符”+“联合起来使用,它表示将右边的值与左边的值相加的结果再赋给左边的值。

a+=6其实与a=a+6的作用是相同的 “+=“读作加等于

其它的组合运算符还有

自加与自减

在c++中使某个值增加1称为自加,反之,使某个值减少1则为自减

前置运算符表示在赋值之前先进行自加或者自减,比如说先使值加1然后再取该值

#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])

{

          int a=9;

          a++;

          cout<<"a执行自加后的值:"<<a<<endl;

          a--;

          cout<<"a执行自减后的值:"<<a<<endl;

         return 0;

}

 

先加:先执行自加,再取值

#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])

{

         int a=1;

         ++a;

         cout<<"++a ="<<a<<endl;

         return 0;

}

结果为:2

后加:先取值后增加

int a=1

a++;

         cout<<"a++ ="<<a<<endl;*/

结果为:1

表达式的优先级

乘法或者除法的优先级高于加法或者减法

如果有括号的话,先执行括号中的表达式,再是括号外的表达式

关系运算符

关系运算符用来对两个表达式的值进行比较

int x=1,y=2;

         if(x==y){

                   cout<<x;

         } else

         cout<<y;

         return 0;

 

注意区分赋值运算符“=“和关系运算符”==“。”==“用于比较两个值是否相等,而“=“用于将右边的值赋给左边。

c++中提供了6种关系运算符

①  !=  读作不等于

②  >    读作大于

③  <    读作小于

④  >=   读作大于等于

⑤  <=   读作小于等于

⑥  ==   读作等于

关系运算符的作用:用来对两个表达式的值进行比较,并根据比较的结果返回一个真值或者一个假值。是真值还是假值取决于使用的关系运算符。

if语句

关键字if用于判断其后括号中的表达式是否为真,假如为真,那么执行括号后面的语句,如果为假,那么执行下一条语句。

#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])

{

         int x=3;

         if(x==0){

                   cout<<"x等于0";

         }

         cout<<"x不等于0";

         return 0;

}

注意:if语句的后面不能加分号,其原因是分号也是一条语句,假如加了分号,那么if(x==0);就变成了两条语句,第一条语句为if(x==0),而第二条则是空语句。

else语句

当if为真时,执行if后面的语句,否则执行else后面的语句

else-if语句

if(表达式){

语句

}else if(表达式){

语句

}

else if(表达式){

语句

}

else if(表达式){

语句

}

语句

如果if语句不成立的话,则执行else if语句,else if 语句可以有多条,如果if 和else if语句都不满足的话,就执行最后的语句

if语句的嵌套

在if语句中添加了一个if语句或者多个if语句,则称为if语句的嵌套,表达式为

if(表达式){

   if(表达式){

      if(表达式){

语句

}else {

   if(表达式){

     语句

}

   }

}

带括号的嵌套语句

逻辑”与”运算符

逻辑“与”运算符(&&),如果运算符的两边都为真,那么才输出被判断的值

区别:”&&”和”&”是两种不同的运算符

#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])

{

         cout<<"请输入一个大于1的整数:\n";

         int x;

         cin>>x;

          if(x>1&&x<100){

                 cout<<"x大于1小于100\n";

        }

         return 0;

}

 

逻辑”或”运算符

#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])

{

         cout<<"请输入一个大于1的整数:\n";

         int x;

         cin>>x;

          if(x>1||x<100){

                 cout<<"x大于1小于100\n";

        }

         return 0;

}

当逻辑”或”运算符的两边的值的只有一边为真时,即可进行输出

逻辑”非”运算符

它只有一个准则,当你给的条件为假时,它才为真

逻辑运算符的优先级

一般的顺序是从左到右,如果你想改变优先级的顺序的话,那么就请用小括号来改变多个运算符的优先级

运算式的真假关系

计算机只能识别0和1,因此数字、符号、字母,计算机都能将其看为真值,空字符‘\0’的值为假值

三目运算符

#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])

{

         if(a>b){

                   z=a;

         } else{

                   z=b;

         }

         return 0;

}

通常这样的比较会简化为:

z=(a>b)?a:b

?表示左侧的表达式为真的话,则将a(问号左边)的值赋给z,否则将b(问号右边)的值赋给z

举例解释如何运算的:

 int a=1,b=2,z;

z=a>b?a:(a>b?a:b);

结果为:2

三目运算符的执行方向:从右至左

三目运算符一定要放在赋值语句中

三目运算符允许对不同型别的数值进行操作,也就是说可以同时操作一个浮点型变量和一个整型变量

当在运算时,三目运算符会自动转化为最高类型,进行计算和赋值。


后续部分将更新上来,等耐心等待

0 0
原创粉丝点击