CSP练习试题201912-1 报数 C++

    技术2025-03-31  23

     

    题目:

    回答:

    #include <iostream> using namespace std; class People; //甲乙丙丁四人 class People { public: void sayNumber(int num); bool isSeven(int num);//判断是否为7、7倍数、含有7 int getCount();//获得现在报数 int getJump();//获得此人跳过格数 private: int jump = 0;//此人跳过的格数 static int count;//所有人一共报的数 }; int People::count = 0; bool People::isSeven(int num) { if (num % 7 == 0) return true; int flag = num; for (int i = 1;; i++) { if (flag % 10 == 7) { return true; } flag = flag / 10; if (flag == 0) { break; } } return false; } void People::sayNumber(int num) { if (isSeven(num)) { jump++; } else { count++; } } int People::getJump() { return jump; } int People::getCount() { return count; } int main() { People jia, yi, bing, ding; int num; cin >> num; for (int i = 1;; i=i+4) { jia.sayNumber(i); if (jia.getCount() == num) break; yi.sayNumber(i + 1); if (yi.getCount() == num) break; bing.sayNumber(i + 2); if (bing.getCount() == num) break; ding.sayNumber(i + 3); if (ding.getCount() == num) break; } cout << jia.getJump() << endl; cout << yi.getJump() << endl; cout << bing.getJump() << endl; cout << ding.getJump() << endl; return 0; }

     

    Processed: 0.009, SQL: 9