Hoán vị 2 phần tử trong mảng

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void nhap(int &n)
{
    do
    {
        printf("nhap n : ");
        scanf("%d",&n);
    }while(n<5 || n>30);
}
void nhapmang(int n,float a[])
{
    int i;
    for(i=1;i<=n;i++)
    {
        printf("nhap phan tu a[%d] = ",i);
        scanf("%f",&a[i]);
    }
}
void xuatmang(int n,float a[])
{
    int i;
    printf("----xuat mang-----\n");
    for(i=1;i<=n;i++)
    {
        printf("a[%d] = %.2f\n ",i,a[i]);
    }
}
void mimax(int n,float a[])
{
    int i;
    float min=a[1],max=a[1];
    float doicho;
    for(i=1;i<=n;i++)
    {
        if(min>a[i])
            min=a[i];
    }
    for(i=1;i<=n;i++)
    {
        if(max<a[i])
            max=a[i];
    }
    printf(" min = %f \n max = %f \n ",min,max);
    doicho=min;
    min=max;
    max=doicho;
    printf("--hien thi lai mang--\n");
    for(i=1;i<=n;i++)
    {
        printf("a[%d] = %f\n ",i,a[i]);
    }
}



int main()
{
    int n;
    float a[100];
    nhap(n);
    nhapmang(n,a);
    xuatmang(n,a);
    mimax(n,a);
    return 0;
}

Làm sao để đổi chỗ 2 phần tử trong mảng ạ, em làm như thế này mà k ra kết quả gì?
đề bài là tìm min, max, đổi chỗ và hiện thị lại mảng ạ

Đổi chỗ thì đổi a[i] với nhau sao lai đổi mã min, nên tìm vt trí min max sau đó swap a[min] và a[max]
còn cái mảng phần tử đầu tiền là 0 nhé , nên for (int i=0;i<n;i++) :V

1 Like

Array start with 0 .

1 Like

em cũng thắc mắc vấn đề này, tại sao k bắt đầu từ 1, thì hay hơn chứ nhỉ ?

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