第2章 基本编程语句

    技术2022-05-19  26

     

    第2章 基本编程语句

    1.声明与定义:

    (1)声明语句只声明名称,未分配存储空间。定义则为名称分配空间。可以声明多次,但只能定义一次。

    (2)int a = 3; //有初始化的定义

    int a; a = 3;//定义后赋值,与上面效果相同。

    2.if语句条件中定义的变量只能在整个if语句范围内使用

    ifint a = b) cout << a << endl;  //b赋给a,若b不为 则输出a

    a ++; //编译出错:a无定义,a只在if语句范围内使用

    3.条件表达式:(xa:b) = 32;之中ab必须为相同的数据类型。如不同则只能用if语句:if(x) a = 32;else b = 32;

    4.1Switch括号中的表达式只能对整型、字符型或枚举型即整数或整数的子集进行测试,不能测试范围或浮点值。

      (2)每个case常量表达式的值必须互不相同:case 'A':a++;case 65:a++;//编译出错,因为Aascii码为65

      (3case语句只起语句标号作用,casedefault并不改变控制流程,与break联用才能保证多路分支的正确实现。

      (4Case语句顺序可任意。

      (5Switch语句可嵌套即case中还可以包含switch语句。

    5.循环:

     (1for循环将循环变量和初始化放在循环外部去描述,可以使循环变量在循环结束后仍然存在。

    int n = 1;

    for(;n*n - 6*n - 13 <= 0;++n);

    cout << n << endl;

     (2While循环式for循环的特例:for(;i < 100; => while(i < 100)

     (3)有些循环不能确定循环次数,此时可以利用while循环表示成一种无条件判断的无限循环形式。egint n = 1; 

    While(1) //也可作:for(;;)

    if(n*n -6*n-13>0) break; else ++n; cout << n <<endl;

      (4)continue结束本次循环,break终止整个循环。

      (5)Goto语句可以方便的跳出深循环,使用try/catch捕获异常也可以。

      (6)For循环比while好的地方在于循环条件者中的局部变量可以不必公开化,而且for循环体简单易读。

    6.流状态

    cout << showpos << 12 <<endl;  //showpos:0和正数前显示+

    cout << hex << 18 << " " << showbase << 18 <<endl; //hex十六进制显示整数,showbase:十六制前加OX,八进制前加:O

    cout << oct << 9 <<endl;//oct:八进制显示整数,dec:十进制显示整数

    cout << hex << 255 << " " << uppercase << 255 <<endl;//uppercase:十六进制格式字母用大写字母表示(默认为小写)

    cout << 123.0 << " " << showpoint << 123.0 <<endl;//showpoint:浮点数输出即使小数点后为0也输出小数点

    cout << (2 > 3) << " " <<boolalpha<<(2<3)<<endl; //boolalpha:逻辑值1/0,用ture/false表示

    cout << fixed << 12345.678 <<endl;//fixed:定点数格式输出

    cout << scientific << 12345.678 <<endl;//scientific:科学记数法输出

    cout.unsetf(ios::scientific);//cout捆绑函数调用来取消显示格式

    cout.unsetf(ios::showpos);

    cout << 12345.678 <<endl;

    cout << showpos << 12345.678 <<endl;

    cout << noshowpos << 12345.678 <<endl;//取消流状态:noshowpos,noshowbase,nouppercase,noshowpoint,noboolalpha

    cout.unsetf(ios::hex);

    cout.width(5);//设置显示宽度

    cout.fill('*');//设置填充字符

    cout << 123 << 23 <<endl;//width(n)为一次性操作

    cout.width(5);

    cout.fill('$');

    cout << left << 23 << endl;//left:左对齐,填充字符在右边,默认在左边

    cout.precision(7); //precision:设置有效位数(总位数,普通显示方式)或精度(小数点后的位数,定点或科学记数法)

    cout << 1234.5 <<endl;

    cout << fixed << 1234.5 <<endl;

    cout << scientific << 1234.5 <<endl;

    cout.unsetf(ios::scientific);

    cout.precision(6); //默认输出有效位数为6

    cout << 1234.5 <<endl;

    cout << right << setw(5) <<setfill('*') << 23 <<endl;//setw(int),设置宽度,setfill(char):设置填充字符

    cout << setprecision(7) <<1234.5 <<endl;

    cout.precision(6);

    cout << 1234.5 <<endl;

    7.用输入输出文件流打开文件:

    ifstream fin(filename,openmode = ios::in);

    ofstream fout(filename,openmode = ios::out);

    Ifstream,ofstream 是类型名,表示输入输出文件流,finfout是文件流的名称,filename是打开的外部文件名,openmode 是打开方式,ifstream默认打开方式为ios::in,ofstream默认打开方式为ios::out,故在打开已经存在的输入文件新建一 个输出文件时可以省略这个参数。

    输入输出操作大多能返回操作状态(true/false),故常将读入操作放在循环的条件判断上。

    #include<sstream>

    #include<fstream>

    using namespace std;

    //--------------------------------

    int main()

    {

    ifstream in("a.txt");

    ofstream out("b.txt");

    for(string str;getline(in,str);)

    out<<str<< endl;

    return 0;

    }

    Getlinein,str)从输入流in中整行读入到str中,文件中的换行符被丢掉了,在out上输出str时要补上一个回车。

    基本编程语句 1.声明与定义: (1)声明语句只声明名称,未分配存储空间。定义则为名称分配空间。可以声明多次,但只能定义一次。 (2)int a = 3; //有初始化的定义 int a; a = 3;//定义后赋值,与上面效果相同。 2.if语句条件中定义的变量只能在整个if语句范围内使用: if(int a = b) cout << a << endl; //将b赋给a,若b不为 0 则输出a; a ++; //编译出错:a无定义,a只在if语句范围内使用 3.条件表达式:(x?a:b) = 32;之中a和b必须为相同的数据类型。如不同则只能用if语句:if(x) a = 32;else b = 32; 4.(1)Switch括号中的表达式只能对整型、字符型或枚举型即整数或整数的子集进行测试,不能测试范围或浮点值。 (2)每个case常量表达式的值必须互不相同:case 'A':a++;case 65:a++;//编译出错,因为A的ascii码为65。 (3)case语句只起语句标号作用,case和default并不改变控制流程,与break联用才能保证多路分支的正确实现。 (4)Case语句顺序可任意。 (5)Switch语句可嵌套即case中还可以包含switch语句。 5.循环: (1)for循环将循环变量和初始化放在循环外部去描述,可以使循环变量在循环结束后仍然存在。 int n = 1; for(;n*n - 6*n - 13 <= 0;++n); cout << n << endl; (2)While循环式for循环的特例:for(;i < 100; )=> while(i < 100) (3)有些循环不能确定循环次数,此时可以利用while循环表示成一种无条件判断的无限循环形式。eg:int n = 1; While(1) //也可作:for(;;) if(n*n -6*n-13>0) break; else ++n; cout << n <<endl; (4)continue结束本次循环,break终止整个循环。 (5)Goto语句可以方便的跳出深循环,使用try/catch捕获异常也可以。 (6)For循环比while好的地方在于循环条件者中的局部变量可以不必公开化,而且for循环体简单易读。 6.流状态 cout << showpos << 12 <<endl; //showpos:0和正数前显示+ cout << hex << 18 << " " << showbase << 18 <<endl; //hex十六进制显示整数,showbase:十六制前加OX,八进制前加:O cout << oct << 9 <<endl;//oct:八进制显示整数,dec:十进制显示整数 cout << hex << 255 << " " << uppercase << 255 <<endl;//uppercase:十六进制格式字母用大写字母表示(默认为小写) cout << 123.0 << " " << showpoint << 123.0 <<endl;//showpoint:浮点数输出即使小数点后为0也输出小数点 cout << (2 > 3) << " " <<boolalpha<<(2<3)<<endl; //boolalpha:逻辑值1/0,用ture/false表示 cout << fixed << 12345.678 <<endl;//fixed:定点数格式输出 cout << scientific << 12345.678 <<endl;//scientific:科学记数法输出 cout.unsetf(ios::scientific);//cout捆绑函数调用来取消显示格式 cout.unsetf(ios::showpos); cout << 12345.678 <<endl; cout << showpos << 12345.678 <<endl; cout << noshowpos << 12345.678 <<endl;//取消流状态:noshowpos,noshowbase,nouppercase,noshowpoint,noboolalpha cout.unsetf(ios::hex); cout.width(5);//设置显示宽度 cout.fill('*');//设置填充字符 cout << 123 << 23 <<endl;//width(n)为一次性操作 cout.width(5); cout.fill('$'); cout << left << 23 << endl;//left:左对齐,填充字符在右边,默认在左边 cout.precision(7); //precision:设置有效位数(总位数,普通显示方式)或精度(小数点后的位数,定点或科学记数法) cout << 1234.5 <<endl; cout << fixed << 1234.5 <<endl; cout << scientific << 1234.5 <<endl; cout.unsetf(ios::scientific); cout.precision(6); //默认输出有效位数为6位 cout << 1234.5 <<endl; cout << right << setw(5) <<setfill('*') << 23 <<endl;//setw(int),设置宽度,setfill(char):设置填充字符 cout << setprecision(7) <<1234.5 <<endl; cout.precision(6); cout << 1234.5 <<endl; 7.用输入输出文件流打开文件: ifstream fin(filename,openmode = ios::in); ofstream fout(filename,openmode = ios::out); Ifstream,ofstream 是类型名,表示输入输出文件流,fin、fout是文件流的名称,filename是打开的外部文件名,openmode 是打开方式,ifstream默认打开方式为ios::in,ofstream默认打开方式为ios::out,故在打开已经存在的输入文件和新建一 个输出文件时可以省略这个参数。 输入输出操作大多能返回操作状态(true/false),故常将读入操作放在循环的条件判断上。 #include<sstream> #include<fstream> using namespace std; //-------------------------------- int main() { ifstream in("a.txt"); ofstream out("b.txt"); for(string str;getline(in,str);) out<<str<< endl; return 0; } Getline(in,str)从输入流in中整行读入到str中,文件中的换行符被丢掉了,在out上输出str时要补上一个回车。


    最新回复(0)