Sử dụng cấu trúc dữ liệu string
và đệ quy bạn có thể giải quyết được bài toán này.
Đoạn mã nguồn mẫu bạn có thể tham khảo
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
string integerToString(int n) {
// Xét nếu một số là số âm thì thêm ký tự dấu trừ đứng trước số đó
string sign = n < 0 ? "-" : "";
// Tách từng phần tử của dãy số và ép kiểu từng chữ số sang char
string result = n > 0 ? string(1, (n % 10 + '0')) : string(1, ((n=-n) % 10 + '0'));
// Sử dụng đệ quy để duyệt qua từng phần tử của dãy số
(n /= 10) > 0 ? result=result + integerToString(n): result;
return sign + result;
}
Trong hàm main truyền tham số với một số nguyên bất kỳ, lưu kết quả trả về
int main(){
int a = -1230;
string kq = integerToString(a);
// Dùng cout trong C++ hoặc printf trong C nếu bạn muốn hiển thị lên kết quả
cout << kq << endl; // C++
}
Nếu bạn chỉ muốn chuyển thành chuỗi thôi và vẫn giữ nguyên thứ tự chữ số thì thay đổi dòng:
(n /= 10) > 0 ? result=result + integerToString(n): result;
thành
(n /= 10) > 0 ? result=integerToString(n)+result: result;
Và một điều nữa là đảo ngược một số có số 0 ở cuối thì chỉ có cách duy nhất chuyển sang dạng chuỗi mới giữ được, nếu không số 0 sẽ bị mất nếu giữ nguyên kiểu dữ liệu số nguyên.