Lỗi 'for' loop initial declarations are only allowed in C99 or C11 mode
Bạn nào xem thử bài tớ làm sao lỗi chả hiểu!!!
Viết
chương trình định nghĩa các hàm để thực hiện các công việc sau:
a) Nhập
mã sinh viên, họ và tên, điểm của không quá 50 sinh viên vào tập tin input.txt
b)
Tìm các sinh viên có điểm thấp nhất và cao nhất và tính điểm trung bình của các
sinh viên
c)
Tìm họ tên của sinh viên có mã được nhập từ bàn phím
d)
Tìm tất cả sinh viên (gồm mã sinh viên, , họ, tên và điểm) có tên giống với tên
được nhập từ bàn phím
e)
Ghi tất cả kết quả thực hiện được vào tập tin output.txt
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
// Dinh nghia cau truc luu tru thong tin sinh vien.
struct SinhVien
{
char Ma[8];
char Ten[31];
char Lop[7];
float Diem;
};
// Khai bao mang de luu tru danh sach sinh vien.
struct SinhVien sv[50];
int n = 0; // Bien luu tru so sinh vien hien tai.
// Ham thuc hien in Menu.
int HienThiMenu()
{
clrscr();
printf("CAC CHUC NANG CHINH CUA CHUONG TRINH
");
printf("1. Nhap danh sach thong tin sinh vien
");
printf("2. In danh sach thong tin sinh vien
");
printf("3. Tim kiem thong tin sinh vien
");
printf("4. In danh sach sinh vien thi do
");
printf("5. Thoat khoi chuong trinh
");
printf("Ban chon: ");
int chon;
scanf("%d",&chon);
return chon;
}
// Ham nhap danh sach sinh vien.
void NhapDanhSachSinhVien()
{
printf("
----------------------
");
printf("NHAP DANH SACH SINH VIEN
");
printf("=====================
");
// Nhap danh sach sinh vien.
do
{
printf("Nguoi thu %d:
",n+1);
printf(" Ma: ");
fflush(stdin);
gets(sv[n].Ma);
// Neu Ma la khoang trang thi dung ko nhap tiep.
// Ma la khoang trang neu do dai cua Ma la 0.
if (strlen(sv[n].Ma)==0)
{
break;
}
printf(" Ten: ");
fflush(stdin);
gets(sv[n].Ten);
printf(" Lop: ");
fflush(stdin);
gets(sv[n].Lop);
printf(" Diem: ");
scanf("%f",&sv[n].Diem);
n++;
}
while (1==1);
}
// Ham in danh sach sinh vien.
void InDanhSachSinhVien()
{
printf("
-----------------
");
printf("DANH SACH SINH VIEN
");
printf("-------------------
");
printf("%-14s %-25s %-8s Diem
","Ma sinh vien", "Ten sinh vien", "Lop");
for (int i=0; i<n; i++)
{
printf("%-14s %-25s %-8s %.1f
",sv[i].Ma, sv[i].Ten, sv[i].Lop, sv[i].Diem);
}
printf("
Bam ENTER de tiep tuc");
getch();
}
// Ham tim kiem.
void TimKiem()
{
printf("
----------------
");
printf("TIM KIEM THONG TIN
");
printf("------------------
");
printf("Kieu tim kiem (0 - Tim kiem theo ma, 1 - Tim kiem theo ten
");
printf("Ban chon: ");
int chon;
scanf("%d",&chon);
if (chon==0)
{
char Ma[7];
printf("Ma: ");
fflush(stdin);
gets(Ma);
struct SinhVien svTimThay;
int timThay = 0;
for (int i=0; i<n; i++)
{
// Neu Ma nhap trung voi ma cua sinh vien thu i
// -> Tim thay.
if (strcmp(Ma,sv[i].Ma)==0)
{
svTimThay = sv[i];
timThay = 1;
break;
}
}
printf("Ket qua tim kiem:
");
if (timThay==0)
{
printf("Khong tim thay sinh vien nao co ma la [%s]
",Ma);
}
else
{
printf("%-14s %-25s %-8s Diem
","Ma sinh vien", "Ten sinh vien", "Lop");
printf("%-14s %-25s %-8s %.1f
",svTimThay.Ma, svTimThay.Ten, svTimThay.Lop, svTimThay.Diem);
}
}
else
{
char Ten[31];
printf("Ten: ");
fflush(stdin);
gets(Ten);
int timThay = 0;
printf("Ket qua tim kiem:
");
printf("%-14s %-25s %-8s Diem
","Ma sinh vien", "Ten sinh vien", "Lop");
for (int i=0; i<n; i++)
{
// Neu Ten nhap trung voi Ten cua sinh vien thu i
// -> Tim thay.
if (strcmp(Ten,sv[i].Ten)==0)
{
timThay = 1;
printf("%-14s %-25s %-8s %.1f
",sv[i].Ma, sv[i].Ten, sv[i].Lop, sv[i].Diem);
}
}
if (timThay==0)
{
printf("Khong tim thay sinh vien nao co ten la [%s]
",Ten);
}
}
printf("
Bam ENTER de tiep tuc");
getch();
}
// Ham in danh sach sinh vien thi do.
void InDanhSachSinhVienThiDo()
{
printf("
------------------------
");
printf("DANH SACH SINH VIEN THI DO
");
printf("--------------------------
");
printf("%-14s %-25s %-8s Diem
","Ma sinh vien", "Ten sinh vien", "Lop");
for (int i=0; i<n; i++)
{
if (sv[i].Diem>=10)
{
printf("%-14s %-25s %-8s %.1f
",sv[i].Ma, sv[i].Ten, sv[i].Lop, sv[i].Diem);
}
}
printf("
Bam ENTER de tiep tuc");
getch();
}
void main()
{
int chon;
do
{
chon = HienThiMenu();
switch (chon)
{
case 1:
NhapDanhSachSinhVien();
break;
case 2:
InDanhSachSinhVien();
break;
case 3:
TimKiem();
break;
case 4:
InDanhSachSinhVienThiDo();
break;
}
}
while (chon!=5);
}
Lỗi
In function 'InDanhSachSinhVien':
78 4 [Error] 'for' loop initial declarations are only allowed in C99 or C11 mode
78 4 [Note] use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code In function 'TimKiem':
107 7 [Error] 'for' loop initial declarations are only allowed in C99 or C11 mode
140 7 [Error] 'for' loop initial declarations are only allowed in C99 or C11 mode
In function 'InDanhSachSinhVienThiDo':
169 4 [Error] 'for' loop initial declarations are only allowed in C99 or C11 mode
Chào bạn, bạn nên bắt đầu với việc post lên thông tin lỗi: message báo lỗi lúc build, dòng code nào bị lỗi (nếu là lỗi build), mô tả lỗi lúc chạy (nếu là lỗi runtime: vd như chạy mong muốn nó ra x mà nó ra y chẳng hạn). Thân!
C99 mới làm đc điều này, khai báo trong vòng lặp
C11 đã bỏ rồi.
Nên bạn nên khai báo biến i ở ngoài.
@thinh94pc Đang dùng chương trình gì để compile? Nếu là Code::Blocks thì thêm
-std=c99
vào cho compiler nó biết phải dùng chuẩn C99. Tham khảo câu trả lời của @drgnzHướng dẫn cách thêm
-std=c99
trong Code::BlocksVào Settings chọn Compiler
Chọn Other options rồi thêm
-std=c99
vào như hìnhem dùng DEV C 5.11 nhưng em không thấy
Dev C anh không dùng, nhưng anh Google thì có cái hình này
Anh cho em hỏi tí làm sao để mà tìm GTLN va GTNN ở câu b trên khi nhập với nhiều thông tin theo hàm for thế.
Em tạo topic khác nhé Mỗi topic nên hỏi về một thứ thôi.
bạn oi mình gặp 1 bài tập y chan bạn luôn… Mình là Dân Xây dựng . học C lần đầu đang ko biết phải làm nhu thế nào . bạn có thể chỉ mình câu a,b của bài được không ,
viết đoạn code trên DEV ra mình tham khảo với dc ko ban, GIúp mình với