fork(1) download
  1. // Энэ удаад while давталтын тухай орууллаа.
  2. #include <stdio.h>
  3.  
  4. int main() {
  5. // Энэ нь мөн байнга ашиглагдах зүйлсийн нэг мөн.
  6. // Бодлого. Нэг бүхэл тоо өгхөд 1-ээс тэр тоо хүртэл 1 мөрөнд хэвлээд
  7. // дараагийн мөрөнд тэр тооны цифрүүдийн нийлбэрийг ол.
  8.  
  9. /*
  10. while( нөхцөл ) {
  11. хэрвээ while-ын хаалтанд байгаа нөхцөл үнэн бол
  12. {} доторх үйлдлүүд хийгдэнэ.
  13. эсрэг тохиолдолд давталт зогсоно.
  14. }
  15. Ерөнхийдөө нэг ийм.
  16. */
  17.  
  18. int n, i, s; // хувьсагчдаа зарлаж байна.
  19.  
  20. scanf("%d", &n); // Оролтонд өгөх нэг тоогоо уншиж байна.
  21.  
  22. i = 1; // бид 1-ээс эхлээд хэвлэх тул i = 1;
  23. while( i <= n ) {
  24. // Хэрвээ i гэсэн хувьсагчийн утга n-ээс бага буюу тэнцүү бол бид
  25. // хэвлэсээр байх болно. Тиймээс бидний нөхцөл бол i <= n
  26. printf("%d ", i); // i нь нөхцлийг биелүүлж байгаа тул хэвлэнэ.
  27.  
  28. i += 1; // i = i + 1 гэсэнтэй адил. мөн i++ гэж болно.
  29. // i-ын утгыг нэгээр нэмэгдүүлнэ. Дараагийн тоог шалгаж үзнэ гэсэн үг юм.
  30. // бид i-ын утгыг өөрчлөхгүй бол хязгааргүй давталт болох юм.
  31. // Тиймээс нөхцөл болон өөрчлөгдөх утгаа зөв тооцох ёстой.
  32. }
  33. printf("\n"); // мөр шилжиж байна.
  34. s = 0; // одоо цифрүүдийн нийлбэрийг олно. Тэр утгыг s-д хадгалы.
  35. // s = 0 гэж өгөхгүй бол бид s хэд гэдгийг хэлж мэдэхгүй.
  36.  
  37. while( n > 0 ) {
  38. // Хэрвээ n тоо тэгээс их бол энэ давталт үргэлжлээд л байна.
  39. s = s + (n%10);
  40. // s нь одоогийн n тооны 10д хуваасан үлдэгдэл буюу сүүлийн цифрээр нэмэгдэнэ.
  41.  
  42. n /= 10; // n = n/10 гэсэнтэй адил
  43. // n тооны сүүлийн цифрийг бид нэмсэн тул энэ тооныхоо сүүлийн цифрийг хасах ёстой.
  44. // тэгхийн тулд энэ тоог 10-д хуваахад хангалттай юм.
  45. }
  46.  
  47. printf("%d\n", s); // хариу болох s-ыг хэвлэнэ.
  48. return 0;
  49. }
Success #stdin #stdout 0s 4516KB
stdin
14
stdout
1 2 3 4 5 6 7 8 9 10 11 12 13 14 
5