ACM 输入输出标准大全 总结 完整版 已验证通过
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
//#define RE //如果要重定向输入输出流就取消注释此行代码
using namespace std;
int main(){
//1. 大量数据时候用scanf和printf ,而不用cin,cout,因为后者速度太慢,可能会超时。
// //读取字符
// char ch;
//
// getchar(); //读取换行符,即一个空行
// while((ch = getchar()) != EOF){
// cout<<ch<<endl;
// }
错误 因为 gets里读取字符串数组 string str;//[Error] cannot convert 'std::string {aka std::basic_string<char>}' to 'char*' for argument '1' to 'char* gets(char*)'
// 正确如下:
// char str[10];
// gets(str); //读取空行
// while((gets(str) ) != NULL){
// cout<<str<<endl;
// }
// double n;
// while(scanf("%lf", &n), n != 0){ //以0或-1结束
// cout<<n<<endl;
// }
// double m;
// while(scanf("%lf %lf", &n, &m), n || m){ //n和m都是0时候结束
// cout<<n<<" "<<m<<endl;
// }
// // 读取一行字符串,输出时候去掉了空格
// const int BUFFER = 10;
// char str[BUFFER];
// while(cin>>str){
// cout<<str;
// }
//测试上面的代码
//for(int i = 0; i < 10; i++)
// char str[10];
// int i = 0;
// while(cin>>str){
// cout<<str[i]<<endl;
// }
//读取一行
// char str[10]; //若想读很长的需要把数组开得足够大,否则就会退出
// while(cin.getline(str, 10)){
// cout<<str<<endl;
// }
只要注释了前面#define那一行就不会重定向了
//#ifdef RE //开启文件,并将标准输入输出重定向到文件
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
//#endif
// int n, m;
// cin>>n>>m;
// cout<<m<<n<<endl;
// cout<<"hello world!"; //切记 输入输出代码要在这里
//#ifdef RE //关闭文件
// fclose(stdin);
// fclose(stdout);
//#endif
char str[100],str1[100],str2[100];
gets(str);
//[Error] stray '\241' in program 说明有非法字符,需要把这一行重新输入一遍,确定是英文字符
sscanf(str, "%s%s", str1, str2); //将读入的一整行字符串按空格,制表符或回车符分割成两个字符串。
cout<<str1<<endl<<str2<<endl;
sscanf("123456", "%4s", str);
// getline用法为:
getline(cin, str);
//第一个参数就是标准输入流cin ,第二个参数是接收读入数据的string对象,本来还有第三个参数,是结束符的标志,但通常用它默认的就可以了,所以不用管。
//注意区分这个getline和cin.getline的区别:
//cin.getline的用法如下:
char str[20];
cin.getline(str,20); //表示从读入的一行字符串中,取最多20各字符放入字符数组str中,注意此处的str是字符数组,而上面的str是string对象。
return 0;
}
/*
格式字符
d 以十进制形式输出带符号整数(正数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀O)
x 以十六进制形式输出无符号整数(不输出前缀OX)
u 以十进制形式输出无符号整数
f 以小数形式输出单精度实数
lf以小数形式输出双精度实数
e 以指数形式输出单、双精度实数
g 以%f%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串
- 结果左对齐,右边填充空格
+ 输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号
printf(“%020.4”); 表示输出精确到小数点后4位,输出占20位,若有空余的位补0.
double 必须用%lf
scanf可以滤去一些不想要的东西。
举例说明如下:
比如输入为日期 yyyy-mm-dd,就可以这样写:
int year,moth,day;
scanf(“%d-%d-%d”,&year,&moth,&day);
*/