在printf和scanf中可以使用以"%"开头的控制符,指明要输入或输出的
数据的类型以及格式。
#include#include using namespace std; int main() { int n; char c; float m; scanf("%d%c%f",&n,&c,&m); printf("%d %c %f",n,c,m); return 0;} //34 k 1.36 -->34 0.000000 //34K 1.36 -->34 k 1.36 //scanf("%d %c,%f:%d",&n,&c,&f,&m); //如果在输入中有scanf中出现的非控制字符,则这些字符会被跳过. //4k,3.14; -->4 k 3.14
用scanf可以一次读入多个类型不同的变量,只要输入的各项之间用空格分隔即可。
3.用printf控制输出整数宽度int n = 123;
printf("%05d,%5d,%5d,%05d",n,n,123456,123456);
00123, 123,123456,123456
超过部分并不会进行截断
4.控制printf输出精度float a = 123.45;
double b = 22.37362723;
printf("%.5f %.2f %.12f",12.3,a,b);
12.30000 123.45 22.373627230000
- double 精度高于float,所以一般尽量使用double.
- double类型的变量用 %lf 输入.
- %x: 以十六进制形式读入或输出整数
- %u: 以无符号整数形式输出整数
printf("%x,%d,%u",0xffffffff, 0xffffffff,0xffffffff);
ffffffff,-1,42949672956.用cout和cin进行输出和输入
#includeusing namespace std; int main() { int n1,n2; double f; char c; cin >> n1 >> n2 >> c >> f; cout << n1 << "," << n2 << "," << c << "," << f< 5 10K 1.23 ______________________________ 5,10,k,1.23 --7.读入所有的输入字符,包括空格回车 (1)cin版
- cin>>
- cout<<
#includeusing namespace std; int main() { int c; while((c = cin.get()) != EOF) { cout << (char)c ; } return 0; } 通过cin.get()读入字符,它的返回值是int,会进行补零操作。不能用char接收,ff负数-1相当于EOF 00ff正数
(2)scanf版#include#include using namespace std; int main() { char c; while(scanf("%c",&c) != EOF) { printf("%c",c); } return 0; } 2.运算符与表达式 1.赋值运算符
- EOF标记本身并不存在
- windows下可用ctrl+z结束输入输出
- cin,cout 速度比scanf,printf慢,输入输出数据量大时用后者
- 一个程序里面不要同时用cin和scanf,不要同时用cout和printf
= += -= *= /= %= 求模,取余数。2.算术运算符+ - * / % 求余数 ++ 自增 -- 自减
- a+b、a-b、a*b、a/b这四个表达式的值,就是a和b做算术运算的结果。表达式的值的类型,以操作数中精度高的类型为准。
精度:double > long long > int > short > char
- 两个整数类型进行加、减、乘都可能导致计算结果超出了结果
类型所能表示的范围,这种情况就叫做溢出。计算结果的溢出部分直接被丢弃。 溢出也可能出现在中间结果,解决溢出的方法是使用更高精度的
数据类型。
- 两个整数做除法,结果是商。余数忽略。
- 求余数的运算符“%”也称为模运算符。它是双目运算符,两个操作数都是整数类型的。a % b 的值就是a除以b的余数。
- 除法运算和模运算的除数都不能为0,否则程序会崩溃!!!
自增运算符和自减运算符
3.关系运算符
单目运算符,操作数为整数类型变量或实数型变量
有前置和后置两种用法:
- 前置用法:
++a/–a; 将a的值+/-1,表达式返回值为a+/-1后的值- 后置用法:
a++/–; 将a的值+/-1,表达式返回值为a+/-1前的值取反运算符-a,取整型或实数型变量的相反数
相等 == 不等 != 大于 > 小于 < 大于等于 >= 小于等于 <=
- 比较结果是bool类型变量只有两种取值,true或false
- false等价于0, true等价于非0整型值
int main() {int n1 = 4, n2 = 5, n3; n3 = ( n1 > n2 ); // n3 的值变为 0 cout << n3 << ","; // 输出 0, n3 = ( n1 < n2); // n3 的值变为非0值 cout << n3 << ","; // 输出 1, return 0; }4.逻辑运算符和逻辑表达式逻辑运算符用于表达式的逻辑操作,有:
&& 且
|| 或
!非
三种,操作的结果是true或false
- exp1 && exp2 当且仅当exp1和exp2的值都为真(或非0)时,结果为true。
一旦exp1为假exp2就不会进行计算
- exp1 || exp2 当且仅当exp1和exp2的值都为假(或0)时,结果为false
一旦exp1为真exp2就不会进行计算
- ! exp exp值为真(或非0),结果为false,exp值为false(0),结果为true
- 逻辑表达式是短路计算的,即对逻辑表达式的计算,在整个表
达式的值已经能够断定的时候即会停止#include3.强制类型转换运算符及运算符优先级 1. 强制类型转换运算符using namespace std; int main() { int a = 0,b = 1; bool n = (a ++) && (b ++) ; // b++不被计算 cout << a << "," << b << endl; //输出 1,1 n = a ++ && b ++ ; // a++和b++都要计算 cout << a << "," << b << endl; //输出 2,2 n = a ++ || b ++ ; //b++不被计算 cout << a << "," << b << endl; //输出 3,2 return 0; } 2.运算符优先级
类型名本身就是一个运算符,叫“强制类型转换运算符”
用于将操作数转换为指定类型double f = 9.14; int n = (int) f; //n=9 f = n / 2; //f=4.0 f = double(n) / 2; //f=4.5
- 可以用()改变运算顺序,如 a*(b+c),勤用括号以避免优先级错误
- printf(“%d,%d”,a+++b,a);中 a+++b 等价于(a++)+b



