Lệnh for gặp lỗi c99 or c11 mode

em đang học phần mảng chèn kí tự vào viết đoạn code như dưới. Em cho chạy thử và nhiều lỗi sai và có lỗi ‘for’ loop initial declarations are only allowed in C99 or C11 mode là lỗi gì và sửa như thế nào ạ

#include<stdio.h>
#include<conio.h>
void nhapmang(int a[], int n)
{ 
	printf("nhap so phan tu :" );
  	scanf("%d",&n);
  	for(int i=0;i<n;i++)
  { 
  	printf(" phan tu thu %d :",i);
    scanf("%d",&a[i]);
  }
}
int xuatmang(int a[],int n)
 {
  printf("mang da nhap \n");
  for(int i=0;i<n;i++)
    {
      printf(" %4d ",a[i]);
    }
 }

void chen(int a[],int n,int k)
{
 int x;
 printf("nhap so can chen:\n");
 scanf("%d",&x);
 for(int i=n;i>=k;i--)
 {
 a[i]=a[i-1];
 }
 a[k]=x;
 n++;
 xuatmang(a,n);

}

int main()
{
 int a[10];
 int n,k;
 nhapmang(a,n);
 xuatmang(a,n);
 printf("nhap vi tri can chen:\n");
 scanf("%d",&k);
 chen(a,n,k);
 return 0;
}

Định nghĩa biến trong vòng lặp for là cái này nha bạn.

Bạn khai báo biến i ở ngoài rồi for i là được.

int i;
for (i = 0; i < n; i++)
...
1 Like

Tại sao trước vẫn khai báo trong for vẫn được vậy nhỉ và tại sao nó còn bị sai gì mà không chạy đúng vậy

Thế thì up hết lỗi lên đây nha bạn.

nó không có báo lỗi nào cả nhưng không chạy theo đúng như em nghĩ

mảng nhập ra như hình chỉ có 1 số

Giá trị của biến nmain() được copy sang biến n của nhapmang().
Thay đổi n trong nhapmang() không ảnh hưởng giá trị n của main().
Lý do đơn giản vậy thôi.

 int n,k;
 nhapmang(a,n);

Cách sửa:

int nhapmang(int a[])
{ 
    int n;
	printf("nhap so phan tu :" );
  	scanf("%d",&n);
  	for(int i=0;i<n;i++)
    { 
  	  printf(" phan tu thu %d :",i);
      scanf("%d",&a[i]);
    }
    return n;
}
int n,k;
n = nhapmang(a);
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?