1、输入
当缓冲区为空时,程序才会暂停,让用户输入数据。
输入回车后,数据全部送到输入缓冲区。
#include <iostream>#include <Windows.h>int main( void ){char girlType;int salary;float height;std::cout << " 请输入您的理想类型 :\n A: 贤惠型 \n B: 泼辣新 \n C: 文艺型 \n D: 运动型 " << std::endl;std::cin >> girlType;std::cout << " 请输入您的月收入 :" << std::endl;std::cin >> salary;std::cout << " 请输入您的身高 :[ 单位 - 米 ]" << std::endl;std::cin >> height;std::cout << " 您的理想类型是 : " << girlType << std::endl;std::cout << " 您的月收入是 : " << salary << " 元 " << std::endl;std::cout << " 您的身高是 : " << height << " 米 " << std::endl;system( "pause" );return 0;}
对于 char, int, float 等基本数据类型, 直接使用 std::cin >> 输入即可
特别注意
:
输出使用 std::cout <<输入使用 std::cin >>
记忆诀窍
:
输入
,
需要一个很
”
尖
”
的
>>
才能实现插入
.
2、常量
字面常量
int
类型字面常量:
1, 2, 3, 100
long
类型字面常量:
200L
(或
200l,
建议用大写字母
L
)
注意:使用
vs
编译时,默认都是
win32
平台, 所以即使在 64
位系统中,
long
也只有
4
个字节
long long
类型字面常量:
100000000000LL
(一千亿,建议用大写字母
LL
)
char
类型字面常量:
’a’, ‘b’, ‘X’, ‘-’
float
类型字面常量:
3.14f或者3.14F
double
类型字面常量:
3.0 、3.14
16
进制常量:
123 = 1x100 + 2x10 + 3x1
0x11 (
相当于
17)
以 0x 作为前缀
说明:
16
进制
8
进制常量
以 0 作为前缀
011(
相当于
9
)
说明:
16
进制和
8
进制,只是给程序员使用起来更方便,
在计算机中,数据都存储为
2
进制。
字面常量的缺点:
程序的可读性变差。
代码的可维护性差。
八进制和
16
进制的表
示形式要注意它们的
写法。面试喜欢问。
符号常量
1
)
#define
宏定义的符号常量
#define MAX_AGE 35
在编译的预处理阶段,直接把
MAX_AGE
替换为
35
2
)
const
修饰的符号常量
const int maxAge = 35;
maxAge = 30; //
错误!编译失败
注意:
const
修饰的符号常量,又叫“只读变量”。
常变量
本质上,是一个变量,只是被
const
限制
3、常见错误总结
1.
变量名错误
变量名不能使用关键字
int char; //
编译失败
变量名不能和函数名同名
int system; //
会导致后面不能使用
system
函数
2.
变量还没有定义,就直接使用
age = 20;
变量一定要先定义,再使用。
3.
变量的输入与使用顺序不当
//
以下为错误代码
#include <iostream>#include <Windows.h>using namespace std;int main( void ){int age;int num;num = age * 360;cout << " 请输入您的年龄 : " ;cin >> age;cout << " 这是您在地球的 " << num << " 天 " << endl;system( "pause" );return 0;}
num = age * 360;
计算完字符,
num
和
age
没有任何关系!
而不是数学中的理解
: num
永远是
age
的
360
倍【不适用于
C
、
C++
】
4. 数据输入时,数据的类型不匹配
#include <iostream>#include <Windows.h>using namespace std;int main( void ){int age;int num;cout << " 请输入您的年龄 : " ;cin >> age;num = age * 360;cout << " 这是您在地球的 " << num << " 天 " << endl;system( "pause" );return 0;}
运行结果:
为什么??
输入的是字母 l 和 0,而不是数字1和0,因此出现了这个结果
类型不匹配,此时输入失败,变量的值还是原来的值
说明:
变量如果不做初始化,它的值是不确定的。
良好的编程习惯:变量在定义时,进行初始化:
int age = 0;
5.
输入数据时,前面的数据输入错误,导致后面的数据都不能输入
#include <iostream>#include <Windows.h>#include <string>int main( void ) {int a;int b;int c;std::cin >> a >> b >> c;std::cout << "a=" << a << std::endl;std::cout << "b=" << b << std::endl;std::cout << "c=" << c << std::endl;system( "pause" );return 0;}
解决方案:
#include <iostream>
#include <Windows.h>#include <string>using namespace std;int main( void ) {int a;int b;int c;//std::cin >> a >> b >> c;std::cout << " 请输入 a: " ;std::cin >> a;if (cin.fail()) { // 检查输入时是否发生了错误cout << " 输入错误,应该输入一个整数 " << endl;// 清除错误标记,使得后续输入可以正常进行// 但是已经输入的数据还在输入缓冲区cin.clear();cin.sync(); // 清空输入缓冲区}std::cout << " 请输入 b: " ;std::cin >> b;if (cin.fail()) {cout << " 输入错误,应该输入一个整数 " << endl;cin.clear(); // 清除错误标记,使得后续输入可以正常进行cin.sync(); // 清空输入缓冲区}std::cout << " 请输入 c: " ;std::cin >> c;if (cin.fail()) {cout << " 输入错误,应该输入一个整数 " << endl;cin.clear(); // 清除错误标记,使得后续输入可以正常进行}std::cout << "a=" << a << std::endl;std::cout << "b=" << b << std::endl;std::cout << "c=" << c << std::endl;system( "pause" );return 0;}
if
语句的具体用法在后面会详细讲解。
更完美的解决方案, 使用
C++
的异常(后面会精讲)。
4、计算机英语加油站
单词 | 说明 |
char
|
character
字符
|
int
|
integer
整数
|
short
|
短的
|
long
|
长的
|
unsinged
|
无符号的
|
double
|
双倍的
|
float
|
浮动, 浮点数
|
name
|
名称,名字
|
password
|
密码
常简写为
pwd
|
precision
|
精度
应用: cout.precision(4)
默认是有效数字
|
flags
|
flag
的复数
flag:
标记
应用:
cout.flags(xxx);
|
fixed
|
固定的
应用:cout.flags(cout.fixed);
设置精度为保留小数后几位
|
unset
|
复原
应用:cout.unsetf(cout.fixed);
取消设置精度为保留小数后
几位
|
const
|
常量
constant
不变的
|
5、职场修炼:怎样安全度过试用期
1、学员故事:
1.
未能完成项目任务,被辞退
2.
独立完成项目任务,仍被连续两次辞退
教训:
1.
认清自己的定位,个人包装不宜超过自己实际能力的
30%
。
2.
积极主动的做事,主动地与直接领导保持有效的沟通
3.
快速融入团队
4.2
程序员职场修炼:怎样安全度过试用期
2、程序员逼格提升:逼格初体验-代码风格
程序员的第一印象,不是外表,而是自己的代码风格。
1.
命名风格
2.
缩进风格
3.
注释风格
3、练习
#include <iostream>#include <Windows.h>using namespace std;int main( void ) {unsigned boyAge;unsigned girlAge;unsigned diff;cout << " 美女,多大了 ?" << endl;cin >> girlAge; // 输入 25cout << " 帅哥,多大了 ?" << endl;cin >> boyAge; // 输入 22diff = girlAge - boyAge;cout << " 美女比帅哥大 " << diff << " 岁 " << endl;diff = boyAge - girlAge;cout << " 帅哥比美女大 " << diff << " 岁 " << endl;system( "pause" );return 0;}
结果:
说明:
unsigned
类型,就是
unsigned int
分析:
在尾部添加如下代码:
unsigned short boyAge2 = boyAge;unsigned short girlAge2 = girlAge;unsigned short diff2 = boyAge2 - girlAge2;cout << " 帅哥比美女大 " << diff2 << " 岁 " << endl; // 输出 65533
结论:
无符号数,不能表示负数!
如果强行用无符号数表示负数,实际存储的是这个负数对应的“补码”
即:该负数 + “模值”-3 + 65536 = 65533
这是个简单的计算方法, 企业面试可能会问到。
这是个重点。从宏观上看,把一个负数赋值给一个无符号
变量。实际的值是:该负数
+
模值,
short
类型模值为
2^16+1,
char
类型模值为
2^8+1
依次类推。。。 其实本质存的是补码,只是改变了它的解释方式而已。参 考《计算机组成原理》