Tính tổng các chữ số của 1 số tự nhiên

Mọi người sửa giúp mình đoạn code này với ạ. E chạy test với số có 4 chữ số thì lại sai ạ :frowning:

#include<stdio.h>
int main()
{
  int a,hc,hdv,s,i,tong,tong2;
  a=19901;
  hc=a%100*1/10;
  hdv=a%10;
  i=100;
  s=0;
  tong=0;
  tong2=0;
  while (a>=i)
      {
s=a/i;
tong2=tong2+s;
i=i*10;
      }
  tong=tong2+hc+hdv;
  printf("%d %d %dTong",tong,s,tong2);
  return 0;
}

Thanks mọi người :smiley:

Bạn chỉnh sửa lại câu hỏi cho rõ ràng xíu. Ít nhất phải có input và output như thế nào… Nhìn vào code thấy a s, i, tong, tong2 là thấy chóng mặt :smile:

1 Like

Bạn làm lại giúp mình được ko. Chứ có lẽ cách mình làm bị sai rồi :frowning:
Bài yêu cầu phải dùng lệnh While và nhập số tự nhiên độ dài bất kì và tính tổng các chữ số đó bạn

Độ dài bất kỳ? :sweat_smile:
Xem video của mình xem đúng bài của bạn không :smile:

1 Like

Thanks anh nhiều :3 Suy nghĩ từ chiều đến giờ mà chưa ra hại não cực :((

Không phải rồi anh ơi. Em mới học Turbo C thôi nhìn code C++ vẫn chưa hiểu được ạ :frowning: Anh có thể viết bằng ngôn ngữ C thuần giúp em đc ko ạ :frowning:

@typrone1
Về nguyên tắc có số a
Ta dùng vòng while kiểm tra xem a>0? nếu false thì dừng, còn không thì lấy a chia 10 lấy dư để được số cuối cùng, và lưu biến a mới = a chia 10 lấy nguyên để bỏ số cuối cùng đi, rồi tính tổng thì = tổng cộng tiếp với giá trị dư vừa tách được ra
Ví dụ ban đầu tổng =0, a = 314 kiểm tra thấy a lớn hơn 0 thì chia được dư = 4 , a mới = 30
tổng = tổng + dư = 0 + 4 = 4
Tiếp theo kiểm tra tiếp a có > 0 không , a lúc này là 30 vẫn lớn hơn 0, chia 10 tiếp được dư = 1, a mới = 3
tổng = tổng + dư = 4 + 1 = 5
Tiếp theo kiểm tra tiếp a > 0, a lúc này là 3 vẫn lớn hơn 0, chia 10 tiếp được dư = 3, a mới = 0
tổng = tổng + dư = 5 + 3 = 8
Lúc này a đã không còn lớn hơn 0 nữa điều kiện trả về false ngắt vòng while
đưa ra giá trị tổng lúc này là tổng = 8
Code ở dưới đây

#include<stdio.h>
int main()
{
  int a,du,tong;
  a=19901;
  tong=0;
  du=0;
  while (a>0) {
     du = a%10;
     a = a/10;
     tong = tong + du;
  }
  printf("Tong cac chu so %d: ",tong);
  return 0;
}

2 Likes

Mình hiểu rồi
Thanks @Dinh_Phong nhé :smiley:

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