[英]Program to check if a number has a digit or is divisible by that digit's value
這是一個您必須從 0 數到 1000 的游戲。但是,如果數字中有 6,或者可以被 6 整除,則應打印“Shaggy”,否則應打印數字。
您不能對數字進行硬編碼。
該號碼只需滿足以下要求中的至少一項
某些類型的分隔符是強制性的(12345Shaggy7.. 不計算在內)
您必須從 1 精確數到 1000。
數字必須是 output,但如何(例如,標准輸出、寫入文本文件等)並不重要。
這是我嘗試過的代碼:
#include <iostream>
#include <conio.h>
bool is_digitPresent(int x, int d)
{
while (x > 0)
{
if (x % 10 == d)
break;
x = x / 10;
}
}
int main()
{
int i, n, x;
clrscr();
std::cout << "----------------Let's play The Shaggy Game....Are you ready..?------------------\n";
std::cout << "Enter a number!";
std::cin >> n;
for (i = 0; i < n; i++)
{
if (i % 6 == 0 || is_digitPresent(i, 6))
std::cout << "Shaggy!\t";
else
std::cout << i << "\t";
}
getch();
return 0;
}
但它沒有按預期工作,我做錯了什么?
問題是is_digitPresent
不返回任何內容,稍后在 boolean 表達式中使用它會調用未定義的行為。
你需要類似的東西:
bool is_digitPresent(int x, int d)
{
while (x > 0)
{
if (x % 10 == d)
return true;
x = x / 10;
}
return false;
}
固定的,主要是循環:
for (i = 0; i < n; i++){ /*...*/}
意義不大,因為 output 的限制是輸入的數字本身,只需將其刪除一次即可。
如果目標是創建一個循環,程序不斷要求用戶輸入,或者您希望輸入的值具有上限,那么您完全需要其他東西。
此外, i
不是您要測試的值,而是n
,它是輸入的值。
刪除 for 循環並將其替換為:
if (n % 6 == 0 || is_digitPresent(n, 6))
std::cout << "Shaggy!\t";
else
std::cout << n << "\t";
請注意,此答案只是一個錯誤修復,您提到的某些規則不在其中,也不是本論壇的目標,目標是讓您自己完成練習,如果需要,請提供一些幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.