01/10/2018, 17:27

Tại sao code tính tổng này bị sai ạ?

các bác chỉ chỗ sai em với chạy đc mà kết quả sai

#include <stdio.h>
#include <conio.h>
int tongbp(int a,int s);
int i,a,s;
//hàm tính tổng bình phương
int tongbp(int a,int s)
{
    int i;
    for(i=1;i<=a;i++)
        s=s+i*i;
}
void main(void)
{
    int a;
    printf("Nhap vao a ");
    scanf("%d",&a);
    printf("Tong bp la %d",tongbp(a,s));
    return 0;
}
Trương Tấn Phát viết 19:29 ngày 01/10/2018

Lộn xộn quá, sai là phải rồi.

  1. int tongbp thế mà không trả kết quả về.
  2. void main mà lại return 0;
  3. Đã khai báo int i, a, s mà còn khai báo a trong main, i trong tongbp.
  4. Truyền tham số s làm gì khi đã khai báo nó bên ngoài hàm rồi.
  5. s chưa khởi tạo giá trị. Nó sẽ được gán giá trị ngẫu nhiên khi khai báo biến => kq sai.
sycoi001 viết 19:37 ngày 01/10/2018

Int tong thì phải return S.
S là kết quả trả về của hàm tong, nên ko cần tham chiếu giá trị của S khi khai báo ở hàm, do đó chỉ cần

int tong(int a)
{
Return S;
}

Nên khai báo nhập giá trị của a ở trong hàm tong luôn, main chỉ để xuất S ra.

Int tong(int &a)
{
Scanf(“%d”,&a);
// tính tổng tiếp từ 1 chạy tới số a.
Return S;
}

Bạn trên chỉ đúng đó, coi lại nha, main thì int main() return 0; chứ void là ko dc return nha.

Bài liên quan
0