Tách chữ số của 1 số

Em mới học C thì gặp đề bài như thế này:

Nếu bình thường thì viết được nhưng ở đây test các số rất dài kiểu unsigned long long cũng không thể chứa.
Mong các bác giúp em. Có code C thì càng tốt nếu không C++ cũng được nhưng giải thích bên cạnh giúp em ạ.
Em cảm ơn!!

nếu số đầu vào dài thì chuyển số đầu vào sang string rồi dùng vòng lặp in ra.

3 Likes
#include<stdio.h>
#include<string.h>

int main(){
	char a[100];
	int i;
	for(i=1; i<=3; i++){
		scanf("%c", &a[i]);
	}
	for(i=1; i<=3; i++){
		printf("%c ", a[i]);
	}
}

nếu em viết thế này thì nhập 975 ra 9 7 5
nhưng khi đổi 3 thành 100 thì số 975 nó ko in ra nữa ạ

#include<stdio.h>
#include<string.h>

int main(){
	char a[100];
	int i;
	for(i=1; i<=100; i++){
		scanf("%c", &a[i]);
	}
	for(i=1; i<=100; i++){
		printf("%c ", a[i]);
	}
}

Bạn phải dùng hàm nhập string :slight_smile: fgets

5 Likes

Đã xong ạ. Em cảm ơn, nhưng em dùng devc++ thì gets nhận còn fgets báo lỗi ạ

#include<stdio.h>
#include<string.h>

int main(){
	char a[100];
	int i;
	gets(a);
	int n = strlen(a);
	for(i=0; i<n; i++){
		printf("%c ", a[i]);
	}
}

fgets tới 3 tham số mà bạn :smiley: ngăn được nó tràn slot.

6 Likes

Do em chưa tìm hiểu rõ về fgets ạ, em cảm ơn!

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