#-------------------char----------------#
#include<iostream>
/*使用键盘输入字符时,cin将键盘输入的M转换为77,输出时,cout将77转换为M;另外c++对字符只用单引号,对字符串使用双引号 */
int main()
{ using namespace std; char ch='M'; //'M'表示字符M的数值编码,此句就是将77赋值给ch int i=ch; //i=77 cout<<"The ASCII code for "<<ch<<"is"<<i<<endl; //显示The ASCII code for M is 77 cout<<"Add one to the character code:"<<endl; ch=ch+1; //将M的数值编码加1 此时为N的数值编码 i=ch; //将N的数值编码赋值给i cout<<"The ASCII code for "<<ch<<"is"<<i<<endl; //显示The ASCII code for N is 78 cout<<"Displaying char ch using cout.put(ch):"; cout.put(ch); cout.put('!'); //注意以上三句显示,都没有换行,所以显示为Displaying char ch using cout.put(ch):N! cout<<endl<<Done<<endl; return 0;}#----------------------------float-------------------------------#
#include<iostream>
int main()
{ using namespace std; cout.setf(ios_base::fixed,ios_base::floatfield);//cout显示的时候通常会删除小数点后的0,加上cout.setf()方法即可覆盖这种行为 //ios_base::fixed和ios_base::floatfield是通过包含iostream来提供的常量 float tub=10.0/3.0; //float能确保7为有效数字 double mint=10.0/3.0; //double能确保16位有效数字 const float million=1.0e6; cout<<"tub = "<<tub; cout<<",a million tubs ="<<million*tub<<endl; //显示tub =3.333333,a million tubs =3333333.250000 乘以1百万之后,25就是随机的数字了 cout<<"mint = "<<mint; cout<<",a million mints = "<<million*mints<<endl; //显示mint = 3.333333,a million mints = 3333333.333333 //由于cout能显示6位小数,所以在没有乘一百万之前,tub和mint显示都是一样的,但是乘上一百万之后二者显示的就不一样了 return 0;}
#---------------------------cin输入时的问题-----------------------------#
#include <iostream>
int main()
{ using namespace std; const int ArrySize=20; //定义一个常量,不可被更改,相当于#define ArrySize 20 char name[ArrySize]; //定义名字数组 char dessert[ArrySize]; //定义甜点数组 cout<<"Enter your name:\n"; cin>>name; //输入名字到name数组中 cout<<"Enter your favorite dessert:\n"; cin<<dessert; //输入甜点到dessert数组中 cout<<"I have some delicious "<<dessert; cout<<" for you, "<<name<<endl; return 0;}/* 由于cin以使用空白(空格 制表符和换行符)来确定字符串的结束位置,这意味着cin在获取字符数组输入的时候只能读取一个单词
因此假如输入的名字为 Alistaire Dreeb 那么cin吧Alistaire当作第一个字符串,并保存在name数组中,把Dreeb放入输入队列中,等待下一个cin自动将Dreeb保存在数组dessert中,因此上面的程序只输入一次,程序便可以执行完毕 *//* 解决方法:每次读取一行输入get()和getline()方法 */
//getline()方法,有两个参数,第一个是输入的字符串保存的数组名,第二个是要读取的字符数,如果第二个参数为20,那么函数最多读取19个字符
//getline()方法以回车键作为换行符来确定输入结束,但不保存换行符,而是以空字符\0来替代换行符cin.getline(name,20);//将输入的字符保存到name数组中,最多读取19个字符,以回车键作为输入的结束//get()方法,可以带参数,也可以不带,带参数时候参数和getline()的参数是一样的,只不过get()方法最后输入的回车会作为换行符被留着输入队列中
//因此如果连续两次调用get()方法,第二次调用的get()方法是都不到任何输入的字符的,因为第一个get()方法残留的换行符还被保存在输入队列中,第二个是要读取的字符数,如果第二个参数为20//执行到第二个get方法时,则判断为输入结束cin.get(name,20); //可以读到数据cin.get(dessert,20); //都不到数据//解决方法01
cin.get(name,20); //可以读到数据cin.get(); //处理第一次get方法残留在输入队列中的换行符cin.get(dessert,20);//可以读到数据//解决方法02
cin.get(name,20).get(); //之所以可以这样是因为cinget(name,20)返回一个cin对象,改cin对象随后去调用get方法cin.get(dessert,20).get();//连续两次输入
cin.get(name,20).get(dessert,20); //可以实现连续两次输入//坑
cin>>year; //输入年之后的回车键会生成换行符,并保存在输入队列中,在执行到cin.getline()时,便认为结束输入,因此在该剧下面加一句cin.get();//去掉上一句中由回车键生成的换行符 也可以这样;(cin>>year).get();cin.getline(address,80);#-------------------------------------数组&&字符串----------------------------#
#include <iostream>
#include <cstring> //for strlen()int main()
{ using namespace std; int yam[3]={10,20,30}; //定义并初始化一个包含3个整形数的数组 float hotelTips[5]={2.0,5.5}; //部分初始化,编译器会把其余的元素设置为0 long totals[500]={0}; //将totals数组初始化为0 short things[]={1,5,3,8}; //也可以不说明数组元素的个个数,这件事让编译器去做 /* 字符串(存储在数组中) */ char dog[4]={'a','s','d','f'}; //不是字符串 char cat[4]={'a','s','d','\0'}; //是字符串,字符串必须以\0(空字符)结尾,用cout显示的时候,遇到空字符则停止 char fish[]="Bubbles"; //定义字符串的另一种方法,切忽略了数组元素的个数,并且自动在结尾加上了空字符***** char shirt_size='s'; //定义字符常量***** 's'只是83的另一种写法,而"s"是两个字符(字符s和\0)组成的字符串,而且"s"实际上是表示字符串所在的内存地址 /* strlen()和sizeof()的区别 */ int fish_strlen=strlen(fish); //strlen()是计算出fish这个数组中有多少个字母,不包括结尾的空字符\0 int fish_sizeof=sizeof(fish); //sizeof()是计算出fish这个数组的长度:15字节,以字节为单位}
2019.02.13 最近在家编辑于家23:28 haijing miss my home