Đầu vào 123 đầu ra 1+2+3 trong C++

Tôi mới làm quen với C++. Tôi đang tự dạy mình bằng sách giáo khoa của bạn bè. Có một bài tập ở cuối chương cấu trúc điều khiển (lặp lại) trong sách giáo khoa của tôi. Nó yêu cầu bạn viết một chương trình yêu cầu người dùng nhập một số. Sau đó, viết mã sẽ tách số đó thành các số nguyên riêng lẻ và tạo ra tổng của tất cả các số nguyên là một phần của số được nhập

Ví dụ. 123 được xuất ra dưới dạng 1 2 3. và tổng là 6

Mã của tôi ở bên dưới. Vấn đề tôi đang gặp phải liên quan đến hàm while phân tách từng chữ số và in chúng ra riêng lẻ. Bất cứ điều gì tôi cố gắng, đầu ra luôn ngược lại. Ví dụ: nếu đầu vào là 123, đầu ra là
3 2 1. Tôi muốn đầu ra là 1 2 3

Tôi đã thử vòng lặp điều khiển bộ đếm, tôi đã thử vòng lặp for. Bởi vì đầu vào là một số duy nhất bao gồm nhiều số nguyên, tôi không hiểu cách sử dụng bộ đếm khi về mặt kỹ thuật, bạn chỉ có một đầu vào

(với tôi, hiểu biết của tôi về C ++ vẫn còn rất cơ bản) Điều tôi nghĩ cần phải xảy ra là bằng cách nào đó, khi các số được phân tách, hãy nhập lại từng số nguyên đã phân tách thành một "biến" để mỗi số nguyên có thể được tính và điều đó sẽ . Vấn đề là tôi không biết làm thế nào để làm điều này

#bao gồm
#bao gồm
#bao gồm

sử dụng không gian tên std;

int chính ()
{
số nguyên;
nhiệt độ int;
int tổng = 0;
số int = 0;
ước số nguyên;
int tôi;

cout << "Hãy nhập một giá trị số nguyên. " << kết thúc;
cin >> số;
cout<

cout << "số bạn vừa nhập là. " << num << endl << endl;

// Điều này tách các chữ số và in chúng ra
cout << "các chữ số trong dãy số của bạn cách nhau là ";

nhiệt độ = số;

trong khi (tạm thời)
{
cout << temp % 10 << " ";
nhiệt độ /= 10;
}

cout<

// Cái này tính tổng các chữ số. 5
làm
{
tổng = tổng + số % 10;
số = số/10;
}
trong khi (số > 0);

cout<

cout << "Tổng các chữ số = " << sum << endl << endl;

hệ thống("tạm dừng");
trả về 0;
}

Thanks

1
2
3
4
5
while(temp)
{
cout << temp % 10 << " ";
temp /= 10;
}

Nếu bạn bước qua những gì nó đang làm. mã đang cô lập chữ số cuối cùng của số trước

tạm thời = 123
123%10 = 3 ( mô đun cung cấp cho bạn phần còn lại của phép chia 123/10)
123/= 10 (nhiệt độ bây giờ là 12)

tạm thời = 12
12%10 = 2 (một lần nữa, phần còn lại sau khi chia)
12/10 = 1 (nhiệt độ bây giờ là 1)

tạm thời = 1
1%10 = 1
1/10 = 0 (nhiệt độ bây giờ là 0 nên vòng lặp sẽ thoát)

Vấn đề có chỉ định độ dài của số được nhập không? . Đây là một cách để tách các chữ số mà không cần vòng lặp (điều này giả sử nhập một số có 5 chữ số. )

1
2
3
4
5
6
7
8
cout << “Please enter a 5 digit integer: “ ;
   cin >> number ;

   cout << number / 10000 << “, “;
   cout << number % 10000 / 1000 << “, “;
   cout << number % 1000 / 100 << “, “;
   cout << number % 100 / 10 << “, “;
   cout << number % 10 << endl;

Điều tôi nghĩ cần phải xảy ra là bằng cách nào đó, khi các số được phân tách, hãy nhập lại từng số nguyên đã tách thành một "biến" để mỗi số nguyên có thể được đếm và điều đó sẽ giúp dễ dàng xuất ra 1 2 3 thay vì 3 2 1, . Vấn đề là tôi không biết làm thế nào để làm điều này

Có lẽ cách dễ nhất để làm điều này là lưu trữ từng chữ số vào một mảng

1
2
3
4
5
6
7
8
9
10
11
12
  int digits[5];  //  Assumes no more than 5 digits
  int num_digits = 0;

  while(temp)
  { // Least significant digit in digits[0] etc
    digits[num_digits++] = temp % 10;     
    temp /= 10;
  } 
  //  Then loop through displaying the digits 
  for (int i=num_digits-1; i>= 0; i--)
    cout << digits[i] << " ";
  cout << endl;

VUI LÒNG SỬ DỤNG THẺ MÃ (nút định dạng <>) khi đăng mã. Nó làm cho mã của bạn dễ đọc hơn và cũng dễ phản hồi hơn

wildblue, cảm ơn vì thông tin đầu vào của bạn, theo bài tập trong sách, không có giới hạn đầu vào cho độ dài của một số, nhưng những gì bạn đề xuất như một giải pháp là vững chắc. Cách duy nhất khác để thực hiện điều này là sử dụng một mảng, nhưng cho đến nay tôi vẫn chưa học được điều đó và bài tập không muốn tôi sử dụng một mảng. Tôi có thể sử dụng đề xuất của bạn để sửa đổi giải pháp và nhận được kết quả mà tôi đang tìm kiếm

Nhận một số dương từ người dùng và in từng chữ số của một số

ví dụ 1

số = 12

đầu ra

2

1

ví dụ 2

số = 123

đầu ra

3

2

1




Hãy thiết kế một logic

số = 12

Đầu tiên chúng ta hãy suy nghĩ, làm thế nào để tách chữ số cuối cùng 2 từ số 12

Vì các số là số thập phân (cơ số 10), phạm vi của mỗi chữ số phải từ 0 đến 9

Vì vậy, chúng ta có thể dễ dàng thực hiện bằng cách thực hiện modulo 10

Giống,

12 % 10 => 2 ( ta đã tách chữ số 2 từ số 12)

Bây giờ, chúng ta phải tách chữ số 1 từ số 12

Điều này có thể đạt được bằng cách chia số cho 10 và lấy modulo 10

Giống,

12/10 => 1

Bây giờ lấy modulo 10

1 % 10 = 1

Sử dụng phương pháp trên, chúng ta có thể tách từng chữ số từ một số




Hợp lý

Cho đến khi số trở thành 0

làm

Lấy số % 10 và in kết quả

Chia số đó cho 10. (số = số / 10)




Thí dụ

Hãy lấy num = 123

Bước 1

Num = 123 (không bằng 0)

Mod = 123% 10 ==> 3

Số = 123/10 ==> 12

Bước 2

Num = 12 (không bằng 0)

Mod = 12% 10 ==> 2

Số = 12/10 ==> 1

Bước 3

Num = 1 (không bằng 0)

Chế độ = 1% 10 ==> 1

Số = 1/10 ==> 0

Bước 4

Num = 0 (bằng 0, dừng quá trình)


Giải thích bằng hình ảnh

Đầu vào 123 đầu ra 1+2+3 trong C++



Chương trình

Thí dụ

/*****************************
 *Program : split the digits *
 *Language : C               *
 *****************************/
 
#include

int main()
{
    int num;
    
    scanf("%d",&num);
    
    while(num > 0) //do till num greater than  0
    {
        int mod = num % 10;  //split last digit from number
        printf("%d\n",mod); //print the digit. 
    
        num = num / 10;    //divide num by 10. num /= 10 also a valid one 
    }
    
    return 0;
}


chạy nó


Chủ đề bạn có thể thích

Kết quả của bản in 123 10 sẽ là gì?

Tại sao print(-123//10) sẽ xuất ra -13 ?

Làm cách nào để in 3 chữ số trong C?

"% d" . Ví dụ. "%6. 3d" sẽ in tổng cộng 6 ký tự và tối thiểu 3 chữ số.

Đầu ra của thuật toán đã cho cho đầu vào 1234 sẽ là gì?

Ví dụ: nếu “1234” được nhập làm đầu vào, thì đầu ra phải là “ một nghìn hai trăm ba mươi tư ”.

Làm cách nào để lưu trữ 10 chữ số trong C?

Cho phép sử dụng dấu ngoặc. "+44 (0) 1234 56789" trong đó số 0 chỉ là reg=quired nếu phần +44 không được sử dụng thì được phép có dấu cách để phân vùng . "01234 46789", v.v.