当前位置:首页 » 《随便一记》 » 正文

蓝桥杯准备训练(lesson5 ,c++)

18 人参与  2024年12月22日 10:01  分类 : 《随便一记》  评论

点击全文阅读


单目操作符与第 2 章 C/C++输⼊输出(上)

8. 单⽬操作符8.1 ++和--8.1.1 前置++ 和 后置++8.1.2 前置-- 和 后置-- 8.2 + 和 - 第 2 章 C/C++输⼊输出(上)1. getchar 和 putchar1.1 getchar()1.2 putchar() 2. scanf 和 printf2.1 printf2.1.1 基本⽤法2.1.2 占位符2.1.3 格式化输出2.1.3.1 限定宽度2.1.3.2 限定⼩数位数

8. 单⽬操作符

前⾯介绍的操作符都是双⽬操作符,即有2个操作数。除此之外还有⼀些操作符只有⼀个操作数,被称为单⽬操作符。如 ++、–、+(正)、-(负) 就是单⽬操作符。

8.1 ++和–

++ 是⼀种⾃增的操作符,⼜分为前置 ++ 和后置 ++ , – 是⼀种⾃减的操作符,也分为前置 –
和后置 –
请⼀定要注意:
• 前置 ++ 或者 后置 ++ ,都是让操作数⾃增1的
• 前置 – 或者 后置 – ,都是让操作数⾃减1的

8.1.1 前置++ 和 后置++

//案例1int x = 10;int a = ++x;//++的操作数是x,是放在x的前⾯的,就是前置++cout << x << " " << a << endl;//案例2int x = 10;int a = x++;//++的操作数是x,是放在x的后⾯的,就是后置++cout << x << " " <<  a << endl;

⼩技巧:
前置++: 先+1,后使⽤
后置++:先使⽤,后+1

8.1.2 前置-- 和 后置–

//案例1int y = 10;int b = --y;//--的操作数是y,是放在y的前⾯的,就是前置--cout << y << " " <<  b << endl;//案例2int y = 10;int b = y--;//--的操作数是y,是放在y的后⾯的,就是后置--cout << y << " " << b << endl;

⼩技巧:
前置 --: 先 - 1,后使⽤
后置 --:先使⽤,后 - 1

8.2 + 和 -

这⾥的 + 是正号, - 是负号,都是单⽬操作符。
运算符 + 对正负值没有影响,是⼀个完全可以省略的运算符,但是写了也不会报错。

int a = +10; //等价于  int a = 10;

运算符 - ⽤来改变⼀个值的正负号,负数的前⾯加上 - 就会得到正数,正数的前⾯加上 - 会得到负

int a = 10;int b = -a;int c = -10;cout << b << c << endl;//这⾥的b和c都是-10int a = -10;int b = -a;cout << b << endl;//这⾥的b是10

第 2 章 C/C++输⼊输出(上)

1. getchar 和 putchar

getchar() 和 putchar() 是属于 C 语⾔的库函数,C++是兼容 C 语⾔的,所以 C++ 中只要正确包
含头⽂件也可以正常使⽤这两个函数。

1.1 getchar()

函数原型如下:
int getchar ( void );

getchar() 函数返回⽤⼾从键盘输⼊的⼀个字符,使⽤时不带有任何参数。
程序运⾏到这个命令就会暂停,等待⽤⼾从键盘输⼊,等同于使⽤ cin 或 scanf() ⽅法读取⼀个字
符。
它的原型定义在头⽂件 。

#include <cstdio>#include <iostream>using namespace std;int main(){int ch;ch = getchar();cout << ch << endl;cout << (char)ch << endl;return 0;}

getchar() 不会忽略起⾸的空⽩字符,总是返回当前读取的第⼀个字符,⽆论是否为空格。
如果读取失败,返回常量 EOF ,由于 EOF 通常是 -1 ,所以返回值的类型要设为 int ,⽽不是
char 。
如何让 getchar() 函数读取失败,返回 -1 呢?其实需要在输⼊字符之前,直接按 Ctrl+z 就可
以。

#include <cstdio>#include <iostream>using namespace std;int main(){int ch;ch = getchar();cout << ch << endl;return 0;}

在这里插入图片描述
getchar() 通常和 putchar() 是⼀对⼉,配合使⽤的。

1.2 putchar()

int putchar( int character );

putchar() 函数将它的参数字符输出到屏幕,它的原型定义在头⽂件 。

#include <cstdio>int main(){int ch = 0;ch = getchar();putchar(ch);return 0;}

操作成功时, putchar() 返回输出的字符,否则返回常量 EOF 。

⼩提⽰:
这⾥⼤家先学会这两个函数的使⽤,在后期算法课的模块,会学到快速读写,到时候就会⽤
到这两个函数。

2. scanf 和 printf

scanf() 和 printf() 是属于C语⾔的库函数,C++是兼容 C 语⾔的,所以 C++ 中只要正确包含头
⽂件也可以正常使⽤这两个函数。⽽且这两个函数在算法竞赛题⽬中使⽤的⾮常频繁,尤其是在输出
格式控制中,所以接下来我们这⾥认真学习⼀下。

2.1 printf

printf() 函数原型如下:
int printf ( const char * format, … );

2.1.1 基本⽤法

printf() 的作⽤是将参数⽂本输出到屏幕。
它名字⾥⾯的 f 代表 format (格式化),表⽰可以定制输出⽂本的格式。

#include <cstdio>int main(){printf("Hello World");return 0;}

上⾯命令会在屏幕上输出⼀⾏⽂字“Hello World”。
printf() 不会在⾏尾⾃动添加换⾏符,运⾏结束后,光标就停留在输出结束的地⽅,不会⾃动换
⾏。
为了让光标移到下⼀⾏的开头,可以在输出⽂本的结尾,添加⼀个换⾏符 \n 。

如果⽂本内部有换⾏,也是通过插⼊换⾏符来实现,如下⽅代码:

#include <cstdio>int main(){printf("Hello\nWorld\n");printf("Hello\n");printf("World\n");return 0;}

2.1.2 占位符

printf() 可以在输出⽂本中指定占位符。
所谓 “占位符”,就是这个位置可以⽤其他值代⼊。

#include <cstdio>// 输出 There are 3 applesint main(){printf("There are %d apples\n", 3);return 0;}

上⾯⽰例中, There are %d apples\n 是输出⽂本,⾥⾯的 %d 就是占位符,表⽰这个位置要
⽤其他值来替换。占位符的第⼀个字符⼀律为百分号 % ,第⼆个字符表⽰占位符的类型, %d 表⽰这
⾥代⼊的值必须是⼀个整数。
printf() 的第⼆个参数就是替换占位符的值,上⾯的例⼦是整数 3 替换 %d 。执⾏后的输出结果
就是 There are 3 apples 。
常⽤的占位符除了 %d ,还有 %s 表⽰代⼊的是字符串。

#include <cstdio>int main(){printf("%s will come tonight\n", "zhangsan");return 0;}

上⾯⽰例中, %s 表⽰代⼊的是⼀个字符串,所以 printf() 的第⼆个参数就必须是字符串,这个例
⼦是 zhangsan 。执⾏后的输出就是 zhangsan will come tonight 。

输出⽂本⾥⾯可以使⽤多个占位符。

#include <cstdio>int main(){printf("%s says it is %d o'clock\n", "lisi", 21);return 0; }

上⾯⽰例中,输出⽂本 %s says it is %d o’clock 有两个占位符,第⼀个是字符串占位
符 %s ,第⼆个是整数占位符 %d ,分别对应 printf() 的第⼆个参数( lisi )和第三个参数
( 21 )。执⾏后的输出就是 lisi says it is 21 o’clock 。
printf() 参数与占位符是⼀⼀对应关系,如果有 n 个占位符, printf() 的参数就应该有 n +
1 个。如果参数个数少于对应的占位符, printf() 可能会输出内存中的任意值。
占位符列举:
printf() 的占位符有许多种类,与数据类型相对应。
下⾯列出常⽤的占位符,⽅便查找,具体含义在后⾯章节介绍。

占位符
介绍
%d ⼗进制整数。
%lld ⼗进制 long long int 类型。
%f ⼩数(包含float类型和double类型)。
%Lf long double 类型浮点数。
%c 字符。
%s 字符串。
%a ⼗六进制浮点数,字⺟输出为⼩写。
%A ⼗六进制浮点数,字⺟输出为⼤写。
%e 使⽤科学计数法的浮点数,指数部分的e为⼩写。
%E 使⽤科学计数法的浮点数,指数部分的E为⼤写。
%i 整数,基本等同于%d。
%g 6个有效数字的浮点数。整数部分⼀旦超过6位,就会⾃动转为科学计数法,指数部分的e为⼩写。
%G 等同于%g,唯⼀的区别是指数部分的E为⼤写。
%hd ⼗进制 short int 类型。
%ho ⼋进制 short int 类型。
%hx ⼗六进制 short int 类型。
%hu unsigned short int 类型。
%ld ⼗进制 long int 类型。
%lo ⼋进制 long int 类型。
%lx ⼗六进制 long int 类型。
%lu unsigned long int 类型。
%llo ⼋进制 long long int 类型。
%llx ⼗六进制 long long int 类型。
%llu unsigned long long int 类型。
%Le 科学计数法表⽰的 long double 类型浮点数。
%n 已输出的字符串数量。该占位符本⾝不输出,只将值存储在指定变量之中。
%o ⼋进制整数。
%p 指针。
%u ⽆符号整数(unsigned int)。
%x ⼗六进制整数。
%zd size_t类型。
%% 输出⼀个百分号。

2.1.3 格式化输出

printf() 可以定制占位符的输出格式。

2.1.3.1 限定宽度

printf() 允许限定占位符的最⼩宽度。

#include <cstdio>int main(){printf("%5d\n", 123); // 输出为 "  123"return 0;}

上⾯⽰例中, %5d 表⽰这个占位符的宽度⾄少为5位。如果不满5位,对应的值的前⾯会添加空格。
输出的值默认是右对⻬,即输出内容前⾯会有空格;如果希望改成左对⻬,在输出内容后⾯添加空
格,可以在占位符的 % 的后⾯插⼊⼀个 - 号。

#include <cstdio>int main(){printf("%-5d\n", 123); // 输出为 "123  "return 0;}

上⾯⽰例中,输出内容 123 的后⾯添加了空格。
对于⼩数,这个限定符会限制所有数字的最⼩显⽰宽度。

#include <cstdio>// 输出 "  123.450000"int main(){printf("%12f\n", 123.45);return 0;}

上⾯⽰例中, %12f 表⽰输出的浮点数最少要占据12位。由于⼩数的默认显⽰精度是⼩数点后6位,
所以 123.45 输出结果的头部会添加2个空格

2.1.3.2 限定⼩数位数

输出⼩数时,有时希望限定⼩数的位数。举例来说,希望⼩数点后⾯只保留两位,占位符可以写
成 %.2f 。

#include <cstdio>// 输出 Number is 0.50int main(){printf("Number is %.2f\n", 0.5);return 0;}

上⾯⽰例中,如果希望⼩数点后⾯输出3位( 0.500 ),占位符就要写成 %.3f 。
这种写法可以与限定宽度占位符,结合使⽤。

#include <cstdio>// 输出为 "  0.50"int main(){printf("%6.2f\n", 0.5);return 0;}

上⾯⽰例中, %6.2f 表⽰输出字符串最⼩宽度为6,⼩数位数为2。所以,输出字符串的头部有两个
空格。
最⼩宽度和⼩数位数这两个限定值,都可以⽤ * 代替,通过 printf() 的参数传⼊。

#include <cstdio>int main(){printf("%*.*f\n", 6, 2, 0.5);return 0;}// 等同于printf("%6.2f\n", 0.5);

上⾯⽰例中, %*.*f 的两个星号通过 printf() 的两个参数 6 和 2 传⼊。


点击全文阅读


本文链接:http://zhangshiyu.com/post/205034.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1