c++ 算法
输入输出优化
cin
cout
scanf
printf
格式:
- cin >> 容器变量
- cout << 容器变量
运行慢(可以关闭同步流)
ios::sync_whith_stdio(false);
cin.tie(0);
- scanf(“%d”,&x);
- printf(“%d”,&x);
运行快
效率:
数据量在万级以下区别不明显
cin 返回:是否与容器类型一致(true,false)
scanf() 返回:有效的数据长度(个数)
课堂练习一 (不可见字符读取)
#include <iostream>
using namespace std;
const int N = 105;
char arr[N];
int main(){
int n ;
char x;
cin >> n;
for(int i = 1 ;i <=n; i++){
// cin >> 不建议,题目要求读取不可见字符
scanf("%c", &x); // 可读取所有字符
arr[i] = x;
}
for(int i = n; i > 0 ; i--){
int idx = arr[i] + 1;
if( idx % 2 == 0){
printf("%d ", i);
}
}
return 0;
}
课堂练习二 (未知数量,指定结束符)
int x ;
while(cin >> x){ // cin 自动忽略空格,输入数据与容器类型是否一致
}
或
while(scanf("%d",&x) == 1){ // 判断有效的获取数据数量
}
课堂练习三 (结束符也符合容器类型判断)
int n;
while(cin >> n && n !=0 ){
}
课堂练习四:
#include<bits/stdc++.h>
using namespace std;
int main(){
int p,x,sum;
p=1;
x=15;
sum=x;
do{
p++;
x+=2;
sum+=x;
}while(sum!=312);
// cout<<x<<endl;
// cout<<p<<endl;
printf("%d\n%d\n",x,p);
return 0;
}
课后练习:
椰程信奥p68:时间差