请问这里的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;
}

回复

共1条回复 我来回复
  • 代码导航
    这个人很懒,什么都没有留下~
    评论

    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

    0条评论

发表回复

登录后才能评论