Tính số lượng số chính phương bị sai

Đây là phần code của em ạ. Chương trình không chạy được. Ai có thể giúp em không?

#include<stdio.h>
#include<math.h>
// Tim so chinh phuong trong doan m<n.
int main(){
	int m, n;
	printf("Nhap m, n:");
	scanf("%d %d", &m, &n);
	
	int count =0;
	
	for(int i=m; i<= n; i++){
		int k=0;
		for(int j=2; j<= sqrt(n); j++){
			if(j*j==i) 
				k=1;
		}
		if(k){
			printf("%d", i);
			count++;
		}
	}
	printf("Co %d so chinh phuong trong [m,n]");
	getch();
	return 0;
}

Khởi tạo biến không được cho phép trong vòng lặp ở chế độ C99 hoặc C11.
Chỉ cần khai báo và khởi tạo bên ngoài.

3 Likes

Thanks. Mình run được r.

@SITUVN.gcd Phải là khai báo biến trong vòng lặp chỉ được cho phép ở C99 hoặc C11 thôi chứ nhỉ
@Vuong_T_Thuy bạn khai báo biến ở ngoài vòng lặp hoặc sửa build flag dùng c99 hoặc C11 như dòng hướng dẫn màu đen giữa 2 dòng lỗi màu đỏ đều ok

4 Likes

Nhưng cho mình hỏi là C99 và C11 là gì vậy? Mình là newbie, không rõ về cái này hic. vẫn đang tự học ở nhà ạ

Cái này là chuẩn C thôi, quy định về syntax và các tính năng của c c++. Bạn lên google tìm hiểu về các chuẩn này thì sẽ rõ

3 Likes

oáp

for(i = sqrt(m); i<=sqrt(n); ++i)

Bạn vào Tools > Compiler Options. Ngay tab đầu tiên có phần “options to the compiler”.

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?