while 循环
while 循环¶
while 循环语法格式
数位拆分(重点)¶
判断整数的位数
输出各个位上的数字之和
数字反转
负数的数字反转
数字替换
B4496 [GESP202603 一级] 数字替换,把数中的 4 全都替换成 8
#include <iostream>
using namespace std;
int main() {
int a, b = 0, t = 1;
cin >> a;
while(a) {
if(a % 10 == 4) b += t * 8;
else b += t * (a % 10);
a /= 10;
t *= 10;
}
cout << b;
return 0;
}
不定次输入¶
输入 n 个数,输出这 n 个数的和(但没有给 n 是多少)
可能你很难理解,cin 和 scanf 竟然还有返回值,是的,有返回值。
cin返回是否成功读入
scanf返回成功读入几个数
如果是不定次输入,编译运行,输入样例完毕之后,需要输入一个大写的 EOF,才可以终止输入。
否则,计算机会一直等待你输入下一个数字,看起来像是计算机没有反应了一样。
其实,计算机一直在等待你按键盘。
ctrl + z 也可以终止输入。

freopen¶
使用while (cin >> x),在本地调试的时候,有时候会有点麻烦,就是无法有效终止键盘的输入。
这时候,可以搭配使用freopen语句(文件重定向)。
原来是从标准输入设备-键盘,读入数据。现在改成从指定的文件读入数据。
#include <bits/stdc++.h>
using namespace std;
int main() {
freopen("1.in", "r", stdin);
int a, b;
cin >> a >> b;
cout << a + b << endl;
return 0;
}
其中,1.in文件是一个和当前这个.cpp文件,在同一个文件目录下的文件。
1.in文件的创建/编辑方法如下:
- 新建一个文本文档
- 重命名成1.in
- 将1.in文件拖拽到DEV C++中,进行编辑内容

freopen的三个参数分别是什么意思
freopen的使用注意事项
在本地调试的时候,如果使用了freopen。
提交OJ评测的时候,要注意OJ上的要求,一般OJ是从标准输入,就是提交的时候,要把freopen注释掉。
对于CSP-J/S复赛的比赛环境,比赛要求代码从文件读入,这种比赛就必须写上freopen,并且还要一定写对,不能错一点,否则肯定爆零。