多组输入、while(scanf(“%d“,&n) !=EOF)和while(cin>>n)

之前老是遇到这种问题:如果有输入就一直输入,没有输入就停止

所以特地写个传送门:(while(scanf(“%d“,&n) !=EOF))的用法_小__怪兽的博客-CSDN博客

值得注意的是:

在visual studio里面运行要写成scanf_s,但是在oj里面运行时要改成scanf

while (scanf_s("%d", &n) != EOF){
        Map map;
        map.set(n);
        map.find_min_length();
    }

刚刚从舍友那得知还有另外一种c++的方法!大为震撼

while(cin>>n){
    ...省略
}

这一次作业第一次知道ctrl C最多只能拷贝4094个字符到命令行,所以通过重定向输入流来解决这个问题

在主函数里面添加了以下两个函数,in.txt是输入的案例

#输入
freopen("D:\\in.txt", "r", stdin);

fclose(stdin);

#输出
freopen("D:\\out.txt","w",stdout);

fclose(stdout);

运行后出现这个问题:

'freopen': This function or variable may be unsafe. Consider using freopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

需要加入:_CRT_SECURE_NO_WARNINGS

解决方案的传送门:Visual Studio解决freopen等函数报错函数安全问题_weixin_34380948的博客-CSDN博客

如何解决vs2019中freopen等函数报错问题_lyliiyong的博客-CSDN博客

两个交替看完美解决

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码已经相当简洁和高效。不过,我们可以对其进行一些优化,以提高代码的可读性和可维护性。 首先,我们可以使用更具有描述性的变量名,以增加代码的可读性。例如,将`a`、`b`、`c`和`d`改为`part1`、`part2`、`part3`和`part4`。 其次,我们可以使用无符号整型数据类型来存储IP地址的各个部分,因为IP地址的每个部分都应该是非负整数。可以使用`uint8_t`来代替`long long int`。 最后,我们可以将位运算的逻辑进行封装,以提高代码的可读性。可以编写一个函数,将转换为长整型数值的逻辑和将长整型数值转换回IP地址的逻辑分别封装在函数中。 下面是优化后的代码示例: ```cpp #include <iostream> #include <cstdint> using namespace std; uint32_t ipToLong(uint8_t part1, uint8_t part2, uint8_t part3, uint8_t part4) { return (part1 << 24) + (part2 << 16) + (part3 << 8) + part4; } void longToIp(uint32_t num, uint8_t& part1, uint8_t& part2, uint8_t& part3, uint8_t& part4) { part1 = num >> 24; num = num - (part1 << 24); part2 = num >> 16; num = num - (part2 << 16); part3 = num >> 8; part4 = num - (part3 << 8); } int main() { uint8_t part1, part2, part3, part4; uint32_t num; while (scanf("%hhu.%hhu.%hhu.%hhu", &part1, &part2, &part3, &part4) != EOF) { cin >> num; cout << ipToLong(part1, part2, part3, part4) << endl; longToIp(num, part1, part2, part3, part4); cout << static_cast<unsigned int>(part1) << "." << static_cast<unsigned int>(part2) << "." << static_cast<unsigned int>(part3) << "." << static_cast<unsigned int>(part4) << endl; } } ``` 这样,代码变得更加易读,同时也提供了更好的可维护性和可扩展性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值