30/09/2018, 21:08

Mọi người xem giúp em code này bị lỗi ở đâu?

Em vừa mới học lập trình C được vài ngày thôi, có viết thử chương trình : Nhập vào 1 mảng có n phần tử và 1 số nguyên dương k, sau đó xác định tất cả các phần tử chia hết cho k, nếu có thì in ra màn hình các số đó, nếu không có thì in ra màn hình “KHONG CO”. Nhưng có 1 trục trặc là code em viết chỉ đúng khi không có phần tử nào của mảng chia hết cho k( Tức là in ra màn hình chữ “KHONG CO”), còn khi xuất hiện các phần tử chia hết cho k thì nó không in ra được( Mà cụ thể là nó in ra 1 số rất lớn). Đây là code của em:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    //Khai báo biến mảng
    int  n;
    printf("Nhap vao  so phan tu cua mang: ");
    scanf("%d", &n);
    int i,A[n];

    //Nhập vào các phần tử của mảng
    for(i=1; i<=n;i++)
    {printf("Nhap A%d = ", i);
            scanf("%d", &A[i]);}

    //Xuất ra các phần tử của mảng đã nhập
    printf("Mang A= ");
    for(i=1; i<=n; i++)
    printf("%d  ", A[i]);
    printf("
");

//Xac dinh cac phan tu chia het cho 1 so nguyen duong k nao do
         int dem, k;
         printf("Nhap so nguyen k: ");
         scanf("%d",&k);
         printf("Cac phan tu chia het cho k(%d) la: ", k);
         dem=0;
         for(i=1; i<=n;i++)
         if(A[i] %k ==0)
         dem++;
         if(dem!=0)
         printf("%d  ", A[i]);
         else
            printf("KHONG CO");
         return 0;
}

CẢM ƠN MỌI NGƯỜI NHÉ!
viết 23:10 ngày 30/09/2018

int i,A[n];

Bạn tránh khai báo mảng như thế này, chỉ chuẩn C99 mới compile được thôi. Kích thước mảng nên khai báo tại thời điểm biên dịch, có thể khai báo int A[50] hoặc int A[100],… nếu bạn muốn mảng chỉ có n phần tử thì bạn đọc tới phần cấp phát động.

for(i=1; i<=n;i++)

Mảng trong C bắng đầu từ 0 đến n-1, nên các vòng for sửa lại là for(i=0; i<n;i++)

for(i=1; i<=n;i++)
if(A[i] %k ==0)
dem++;
if(dem!=0)
printf("%d ", A[i]);
else
printf(“KHONG CO”);

Đoạn này mình nghĩ nên sửa lại là:

for(i=0;i<n;i++){
if(A[i]%l==0){
printf("%d",A[i]);
dem++;
}
}
if(dem==0)
printf("KHONG CO");
Bài liên quan
0