簡體   English   中英

我正在編寫一個代碼,“Count Digits”,Evenly divides 表示 N 是否可以被數字整除,即除法時余數為 0

[英]I was doing a code for , "Count Digits " , Evenly divides means whether N is divisible by a digit i.e. leaves a remainder 0 when divided

#include<bits/stdc++.h>
using namespace std; 

int main() {


int n,m,z;
   cout<<"enter n: ";
   cin>>n;
     z=n;

    int count=0;
while(n>0){
    m = n % 10;
    if(z%m == 0){
        count++;
    }
    n=n/10;
}
cout<<count;

}

代碼應該像前那樣工作-對於 n = 12,它可以被 1、2 整除,因此,如果我取最后一個值為“0”的任何值,則 output 將為 2,那么它不起作用..我我收到錯誤“浮點異常 (SIGFPE)”。 誰能幫我擺脫這個。

這個 while 循環

while(n>0){
    m = n % 10;
    if(z%m == 0){
        count++;
    }
    n=n/10;
}

沒有多大意義。 例如,在這條語句之后m可以等於0

    m = n % 10;

結果這個聲明

    if(z%m == 0){

產生運行時錯誤。

該程序可以通過以下方式查找示例

#include <iostream>

int main()
{
    unsigned int count = 0;

    int n;

    std::cout << "enter n: ";

    if ( std::cin >> n )
    {
        const int Base = 10;

        int tmp = n;
    
        do
        {
            int digit = tmp % Base;
            if ( digit != 0 && n % digit == 0 ) ++count;
        } while ( tmp /= Base ); 
    }

    std::cout << "count = " << count << '\n';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM