Hàm for chỉ chạy đến 10

Tại sao hàm for của em lại chỉ chạy đến 10 thôi ạ, mọi người giúp em với

mọi người giúp em với ạ
đây là link bài của em https://ideone.com/Ki22ez

#include <math.h>
int giaithua(int x)
{
    if(x==1)
    {
        return 1;
    }
    return x*giaithua(x-1);
  // ham tinh giai thua
}
void strong(int a)
{
    for(int i=1;i<=a;i++)
    {
        int tong=0;
        int n=i;
        int b;
        while(n>9)
        {
            b=n-(n/10)*10;// sao lai loi o day
            n/10;
            tong=tong+giaithua(b);
        }
        if(n<10);
        {
            tong=tong+giaithua(n);
        }
        if(i==tong)
        {
            printf("%d ", i);
        }
    }
    // ham tim so strong 
}
int main()
{
 int a;
 scanf("%d", &a);
 strong(a);
 return 0;
}

Em lập trình bằng ngôn ngữ C ạ

Khi n = 10 thì chuyện gì xảy ra vậy bạn?
b=n -(n/10)*10 => b=10 - (10/10)*10 => b=10 - (1)*10 => b = 10 -10 => b=0.
Mà giai thừa của 0 (hoặc số âm) bằng mấy vậy? Bạn thử thay số 0 (hoặc âm) vào hàm tính giai thừa của bạn thử xem.

2 Likes

Vâng ạ, vậy em sai chỗ đấy. nhưng khi em thay dấu trừ bằng dấu chia hết thì vẫn lỗi ạ, giúp em với ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?