#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;
}
Chương trình chạy sai khi tách input và output ra thành 2 hàm
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
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à . . .
K thì thử tạo project mới rồi chép code vào xem.
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