30/09/2018, 21:49
Xin hướng dẫn bài tập C
bool KiemTraSNT(int n)
{
bool snt = true;
if (n < 2)
snt = false;
else
for (int i = 2; i < n; i++)
if (n%i == 0)
{
snt = false;
break;
}
return snt;
}
void NhapMang(int a[], int *pn)
{
//Nhap so phan tu mang
do
{
printf("Nhap so phan tu mang tu 1=>%d: ", MAXSIZE);
scanf("%d", pn);
} while (*pn<1 || *pn>MAXSIZE);
//Nhap gia tri cac phan tu mang
for (int i = 0; i < *pn; i++)
{
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
}
void TimViTriNguyenToMin(int a[], int n)//n la so phan tu trong mang
{
int MinSNT = 0, i,j;
for (i = 0; i < n - 1; i++)
{
if (KiemTraSNT(a[i]))
MinSNT = a[i];
break;
}
for ( j = i + 1; j < n; j++)
if (KiemTraSNT(a[j]) && a[i]>a[j])
MinSNT = a[j];
printf("a[%d] = %d", j, a[j]);
}
Đề là tìm số nguyên tố nhỏ nhất trong mảng. Code e làm v sai ở đâu v mọi người
lúc e chạy thì giả sử nhập 5 phần tử vào mảng từ a[0] đến a[4]. Vậy mà lúc xuất ra screen thì nó ra a[5] = -54864154 (rác)
Bài liên quan
ủa main đâu ta !!!
mình quên sr nha
Liệu phải do biến j ko ta? Hay do mảng a chưa khai báo giá trị default. Mình cũng là newbie. hiiii!!!
mình làm đc r. Phải đặt 1 biến nhận j khi chạy qua minSNT nếu k nó sẽ xuất ra giá trị cuối của vòng lặp
Tiện đây cho em hỏi luôn trong đoạn code này tại sao mình có thể sử dụng scanf mà không cần dấu & ạ.
Em cảm ơn .
Vì nó là con trỏ và bản chất con trỏ là địa chỉ rồi nên không cần dấu &
P/S: Kể ra code của bạn chủ thớt cũng hơi ngược đời tí. Thường thì mảng
a
mới là con trỏ, chứn
hiếm khi là con trỏ