ACM 输入输出方法总结 完整版 已调试通过 可运行

3 篇文章 0 订阅
2 篇文章 0 订阅

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);
*/ 
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值