请问这里的cin >> c;有与没有为什么结果差1?还有这里的inline有什么实际意义呢?
课程设计
1
#include "pch.h"
#include
#include
using namespace std;
inline int isnumber(char);
int main() {
char c;
int n;
n = 0;
cin >> c;
while ((c = getchar()) != '\n') {
if (isnumber(c)) n++;
}
cout << "n=" << n << endl;
}
int isnumber(char ch) {
return (ch >= '0' && ch <= '9') ? 1 : 0;
}
-
while循环里面的getchar()会接收一次输入 cin >> c;//这行代码也会接收一次输入 举个例子: 如果cin >> c;这行代码不执行,你输入1然后回车,等于while循环接受两次输入,判断两次,只满足一次条件所以只执行一次循环体,n=1,第二次循环之前判断输入回车退出循环。 如果cin >> c;这行代码执行,你输入1然后回车,等同于cin >> c;执行了1的输入,getchar()会接收换行的输入,这样while循环判断c的值就是你换行的输入值,即c='\n',是不会执行循环体的,n=0;
故cin >> c;这行代码执行与否影响n的结果,刚好差1
发表回复