《C++从入门到精通》实例--输入和输出
//范例1:标准输入输出示例
//知识点:标准输入输出
//2018.3.27
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
cout << "Hello World" << endl;
int i;
cin >> i; //输入i值
cout << "i=\t" << i << endl; //表达式中的"\t"表示横向跳格
char *p = "abc"; //字符指针
cout << p << endl; //输出字符指针p所指向的字符串
string s;
cin >> s;
if (s.empty() == true)
cerr << "string is empty" << endl;
system("pause");
return 0;
}
//范例2:常用流状态
//知识点:常用的流状态
//2018.3.27
/*showpos:在整数和零前显示+号
showbase:十六进制整数前加0x,八进制整数前加0
showpoint:浮点输出,即使小数点后都是零也加小数点
left:左对齐,右边填充字符
right:右对齐,左边填充字符
dec:十进制显示整数
oct:八进制显示整数
hex:十六进制显示整数
fixed:定点数格式输出
scientific:科学计数法输出
*/
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
cout << showpos << 123 << noshowpos << endl; //输出123前面的“+”号,再取消该状态
cout << hex<<18<<" "<<showbase<<12<<noshowbase<<dec<<endl; //输出十六进制标志“0x”,再取消该状态
cout << 123.00 <<" "<<showpoint<<123.00<<noshowpoint<< endl; //输出小数点后的零
cout << fixed << 123.456 << endl; //定点数格式输出
cout << scientific << 123.456 << endl; //科学计数法输出
system("pause");
return 0;
}
//范例3:行输入get函数的使用
//知识点:行输入
//2018.3.27
//istream的成员函数get()的功能是一次读入一个字符,对空白字符,如空格、回车、制表符和换行符等一并读入。有以下3种形式。
//另外还有getline()和read()函数
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
//第一种形式:int get(),功能:读取一个字符,返回类型是整型
int ch1; //声明整型变量ch
ch1 = cin.get(); //使用get函数接收输入字符,并存在ch1中,赋值符号两边无类型转换
cout << ch1 << endl; //输出ch1,输入字符"a",因为get()返回整型,所以输出ch1值为ASCII码97
//第二种形式,istream &get(char &ch),功能:读取一个字符,包括空白符,并将它存储到ch中。它返回被应用的istream对象
char ch2;
cin.get(ch2); //输入字符ch2
cout << ch2 << endl; //输出字符ch2
//第三种形式,istream &get(char *str,int length,char delimiter='\n')
//功能:str代表一个字符数组,用来存储读取到的字符。length代表可以读取字符数量的最大值。delimiter的默认是"\n",用于指定一个特定的字符,当遇到该字符时,就会停止读入。delimeter本身不会被读入。
const int length = 1024; //定义常量length
char str[length]; //声明字符数组
cin.get(str, length, 'A'); //输入字符数组
cout << str << endl; //输出字符数组
system("pause");
return 0;
}
//范例4:行输出put()函数的使用
//知识点:行输出
//2018.3.27
//put()的作用是输出一个字符,格式:ostream &cout.put(char ch);
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
char str[6] = "Hello";
cout.put('A'); //输出字符A
cout.put('\n'); //输出字符回车换行
cout.put(str[0]); //输出字符'H'
cout << endl;
system("pause");
return 0;
}
//范例5:行输出write()函数的使用
//知识点:行输出
//2018.3.27
//write()的作用是输出一个指定长度的字符串,格式:ostream &cout.write(char *str,int length)
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
char *str = "Hello";
cout.write(str, strlen(str)) << endl; //测试字符串的长度,以该长度输出字符串
cout.write("Hello World", 6) << endl; //输出字符串的前6个字符
system("pause");
return 0;
}
//范例5:printf()函数的使用
//知识点:输出
//2018.3.27
#include <stdio.h>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
//d格式符,用来输出十进制整数
//%d:按十进制整数数据的实际长度输出
//%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格;若大于m,则按实际位数输出
int x = 315, y = 1860;
printf("%2d,%5d\n", x, y);
//u、o、x格式符,分别用来输出无符号整数,八进制、十六进制形式整数。因为八进制和十六进制都是不带符号的,所以和无符号数一样,符号位也一起作为数据的一部分输出
int a = -1; //整数在内存中是以补码形式存储的
printf("%d,%u,%o,%x\n", a, a, a, a);
//c格式符,用来输出一个字符
char c = 'a';
printf("%c\n", c);
//s格式符,用来输出字符串
//%-m.ns:表示输出字符串共占m列,n表示从左侧开始截取原字符串n个字符,"-"负号表示截取的n个字符输出在m列的左侧,右补空格,也就是左对齐,若n>m,则m自动取n值
char *s = "abcde";
printf("%s,%2s,%6.2s,%.2s,%-6.2s,\n", s, s, s, s, s);
//f格式符,用来以小数形式输出实数
//%f不指定字段宽度,由系统自动指定字段宽度,使整数部分全部输出,并输出6位小数(VC++ 6.0默认输出6位)。
//注意:在输出的数字中并非全部数字都是有效数字。单精度实数的有效位数一般为6或7位,双精度一般为15或16位。
//%m.nf表示输出数据所在列数(包括小数点所在列),n表示截取的小数位数。如果n数值长度小于m,则左端补空格,即右对齐
//%-m.nf表示左对齐
float f = 12.345;
printf("%f,%5f,%5.f,%.2f,%5.2f,%-5.2f\n", f, f, f, f, f, f);
system("pause");
return 0;
}
//范例6:使用字符串
//知识点:字符串操作
//2018.3.27
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
//使用string类型的好处:字符串相关的内存可以被自动管理,而C语言字符串需要先声明足够大的存储空间才能读入字符串
string str; //定义字符串类型变量
cin >> str; //输入字符串,回车为结束标志
cout << str << endl; //输出
system("pause");
return 0;
}
//范例7:输出菱形
//知识点:字符串操作
//2018.3.27
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
char c;
cin.get(c); //获取输入字符
int i;
for (i = 0; i < 10; i++)
{
cout << string(9 - i, ' ') << string(i, c); //输出空格字符串和i个字符c
if (i >= 1) //string的第一个参数不能为负数
cout << string(i - 1, c) << endl;
else
cout << endl;
}
for (i = 9; i >= 0; i--)
{
cout << string(9 - i, ' ') << string(i, c); //输出空格字符串和i个字符c
if (i >= 1)
cout << string(i - 1, c) << endl;
else
cout << endl;
}
system("pause");
return 0;
}
//综合运用:猜数字游戏,随机生成一个0到9之间的任意整数作为被猜数字,循环输入你猜的数字,告诉你猜大了还是猜小了,直到猜中,同时统计猜的次数
//知识点:输入和输出
//2018.3.27
#include <iostream>
#include <string>
#include <time.h>
using namespace std;
#define MAX 10
int main(int argc, char* argv[])
{
bool b = false;
int n; //所猜的数字
int sum = 0; //猜数的次数
srand((unsigned)time(NULL)); //随机数播种函数
int num = rand() % MAX; //设定随机数
cout << "随机数已经准备好,范围0到9." << endl;
while (b == false)
{
sum += 1;
cout << "请输入你猜的数字:" << endl;
cin >> n;
if (n == num)
{
b = true;
cout << "你太聪明啦!" << endl;
cout << "你共猜了" << sum << "次" << endl;
}
else if (n < num&&n >= 0)
{
cout << "你猜小了!继续努力!" << endl;
}
else if (n > num&&n <= 9)
{
cout << "你猜大了!继续努力!" << endl;
}
else
{
cout << "数字范围是0到9,你输出的越界了!" << endl;
}
}
system("pause");
return 0;
}