您的位置:首页 > 娱乐 > 八卦 > 长沙网站优化推广方案_湖北手机版建站系统价格_长沙谷歌优化_新网站seo外包

长沙网站优化推广方案_湖北手机版建站系统价格_长沙谷歌优化_新网站seo外包

2025/4/7 20:57:29 来源:https://blog.csdn.net/2302_80853925/article/details/146186479  浏览:    关键词:长沙网站优化推广方案_湖北手机版建站系统价格_长沙谷歌优化_新网站seo外包
长沙网站优化推广方案_湖北手机版建站系统价格_长沙谷歌优化_新网站seo外包

一、输入方式

1. cin 基础用法
  • 跳过空白符读取

    int a; double b; string s;
    cin >> a >> b >> s; // 自动跳过空格/换行符
    
    • 按变量类型读取,遇到空白符停止。
  • 缺点:不处理类型不匹配的情况(如输入字符给整型变量)。

  • 读取单个字符

    char c;
    cin >> c; // 跳过空白符,读取第一个非空白字符
    cin.get(c); // 读取任意字符(包括空格/换行)
    
  • 整行读取

    string line;
    getline(cin, line); // 读取到换行符(换行符被丢弃)
    
    • 注意:前序输入可能残留换行符,需先执行 cin.ignore()

2. scanf 格式化输入
  • 基本格式符

    int a; double b; char str[100];
    scanf("%d %lf %s", &a, &b, str); 
    // 注意:%lf对应double,%s以空格/换行结束
    
    • 常用格式符:%d(int)、%lld(long long)、%c(字符)、%f(float)、%lf(double)。
    • 安全字符串读取scanf("%9s", str); (限制最大长度为9,防止溢出)。
  • 特殊用法

    • 忽略特定字符
      scanf("%d,%d", &a, &b); // 输入格式如 "123,456"
      
    • 扫描集(读取特定字符集合):
      scanf("%[a-zA-Z]", str); // 只读取字母
      

3. 高效读取(算法竞赛优化)
  • 禁用同步 & 解绑

    ios::sync_with_stdio(false); // 关闭与stdio的同步
    cin.tie(nullptr);            // 解除cin与cout的绑定(减少刷新)
    

    此后仅使用 cin/cout,不可混用 scanf/printf

  • 读取优化示例

    #include <iostream>
    using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin >> n;// 后续使用cin快速读取...
    }
    

二、输出方式

1. cout 基础用法
  • 直接输出

    int a = 10;
    double b = 3.1415926;
    cout << a << " " << b << endl;
    
  • 控制小数精度

    #include <iomanip>
    cout << fixed << setprecision(2) << b; // 输出 3.14(四舍五入)
    

2. printf 格式化输出
  • 常用格式符
    printf("%d\n", a);          // 整数
    printf("%10d\n", a);        // 宽度10,右对齐
    printf("%-10d\n", a);       // 左对齐
    printf("%.2f\n", b);        // 两位小数
    printf("%08d\n", a);        // 宽度8,前导零填充
    
    • 技巧%lld(long long)、%x(十六进制)。

3. 输出优化
  • 避免频繁刷新:使用 '\n' 代替 endl
    cout << a << '\n'; // 比endl更快
    

三、特殊场景处理

1. 混合输入类型
  • 示例:先读整数,再读一行。
    int n;
    string s;
    cin >> n;
    cin.ignore(); // 清除之前残留的换行符
    getline(cin, s);
    
2. 字符串流分割
#include <sstream>
string line = "1 2 3";
istringstream iss(line);
int a, b, c;
iss >> a >> b >> c; // 分割字符串内容

四、算法竞赛建议

  1. 输入优先选 scanf(更快),或优化后的 cin
  2. 输出优先选 printf(格式控制灵活)
  3. 对时间要求极高时,关闭同步+解绑(保证不混用C/C++ IO)。
  4. 处理大规模数据前,预分配容器内存(如 vector.reserve())。

通过上述方式系统梳理,结合高频使用场景和效率优化技巧,在算法竞赛中可显著提升代码效率并减少调试时间。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com