30/09/2018, 18:58
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 ạ
#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
Bài liên quan
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
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
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ỳ?
Xem video của mình xem đúng bài của bạn không
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 ạ Anh có thể viết bằng ngôn ngữ C thuần giúp em đc ko ạ
@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
Mình hiểu rồi
Thanks @Dinh_Phong nhé