Chương trình chạy sai khi tách input và output ra thành 2 hàm

#include<stdio.h>

int input(){
	int n;
	printf("Enter n: ");
	scanf("%d",&n);
	return n;
}

void sumN(int sum, int n){
	
	sum = 0;	
		while(n > 0){
		sum += n % 10;
		n /= 10;
	}
	
}

int output(int sum){
	int n;
	printf("Sum digit = %d",sum);
	return sum;
}

int main(){
	int n, sum;
	input();
        sumN(sum,n);
	output(sum);
	return 0;
}

bạn đã lưu giá trị hàm input return chưa ? n trong hàm input là biến cục bộ, sẽ nằm trên stack và sau khi hoàn thành xong hàm input, chương trình sẽ xóa phân vùng stack đó đi => mất biến n, có thể nói biến n ở main và n ở hàm input là hai biến khác nhau
PS: đối với hàm sumN cũng thế
Đây là đoạn đã sửa


int input(int *n){
	printf("Enter n: ");
	scanf("%d",n);
}

void sumN(int *sum, int n){
	
	*sum = 0;	
		while(n > 0){
		*sum += n % 10;
		n /= 10;
	}
	
}

int output(int sum){
	int n;
	printf("Sum digit = %d",sum);
	return sum;
}

int main(){
	int n, sum;
	input(&n);
    sumN(&sum,n);
	output(sum);
	return 0;
}
3 Likes

bạn ơi lúc chạy vẫn ra sum = 0

Capture
Mình vẫn chạy bt mà bạn, bạn coi lại xem sao

1 Like

Vẫn ngon mà nhỉ. Bạn vào link dưới đây xem.

ko được bạn ơi, mình chạy trên dev C++

Bạn đã chạy code mình gửi?
IDE online chuẩn mà :kissing: . . .
K thì thử tạo project mới rồi chép code vào xem.

Run normal in Visual bạn uii :slight_smile:

1 Like

mệt nhỉ, gv thì cứ bắt tách hàm ra rồi chạy, mà phần con trỏ mình ko hiểu rõ lắm

Sao hàm sumN không return :smiley:

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