关于scanf比cin快,printf比cout快

洛谷刷题:scanf与cin效率对比
博主刷洛谷单调栈模板题时,首次遇到卡cin的情况,与答案比对多次无果,最后改成完全一样才通过。经多次测试发现,scanf+prinf、scanf+cout能通过,而cin+printf、cin+cout不能通过,得出scanf比cout快不少的结论。

起因是今天刷洛谷,单调栈的模板。也是第一次遇到卡cin的。也是跟答案比了好几次都不行,最后真的改成了一模一样的才过去。单纯一个scanf和printf能卡我4个测试点的?

 这是题目的数据量:

 

然后我又多测了几次,结论是:

scanf+prinf:过了

scanf+cout:过了

cin+printf:寄了

cin+cout:寄了

结论是:printf和cout其实还好,主要是scanf比cout快不少。

将代码中的 `cin` 和 `cout` 替换为 `scanf` 和 `printf`,需要依据变量类型和输入输出格式做相应调整。`cin` 用于输入,`cout` 用于输出;`scanf` 同样用于输入,`printf` 用于输出。`scanf` 和 `printf` 是 C 语言的函数,它们借助格式控制字符串来指定输入输出的格式。 以下是不同数据类型下替换的示例: #### 整数类型 ```cpp #include <iostream> int main() { int num; // 使用 cin 输入 // std::cin >> num; // 替换为 scanf 输入 scanf("%d", &num); // 使用 cout 输出 // std::cout << "输入的整数是: " << num << std::endl; // 替换为 printf 输出 printf("输入的整数是: %d\n", num); return 0; } ``` #### 浮点数类型 ```cpp #include <iostream> int main() { double fnum; // 使用 cin 输入 // std::cin >> fnum; // 替换为 scanf 输入 scanf("%lf", &fnum); // 使用 cout 输出 // std::cout << "输入的浮点数是: " << fnum << std::endl; // 替换为 printf 输出 printf("输入的浮点数是: %lf\n", fnum); return 0; } ``` #### 字符串类型 ```cpp #include <iostream> #include <cstring> int main() { char str[100]; // 使用 cin 输入 // std::cin >> str; // 替换为 scanf 输入 scanf("%s", str); // 使用 cout 输出 // std::cout << "输入的字符串是: " << str << std::endl; // 替换为 printf 输出 printf("输入的字符串是: %s\n", str); return 0; } ``` 需要注意,`scanf` 在输入操作时要留意格式,而 `cin` 则无需关注;`cout` 输出时无需指定格式,`printf` 则需要明确格式。例如,`cout` 默认不会输出六位小数,会自动忽略小数点后多余的 0,`printf` 函数打印浮点数时,小数点默认打印 6 位 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值