1. Trang chủ
  2. » Công Nghệ Thông Tin

Chuyên đề mảng 1 chiều phần 1 docx

15 573 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 239,11 KB

Nội dung

Nếu mảng ko có số hoàn thiện thì trả về giá trị -1.. Nếu mảng không có giá trị dương thì trả về giá trị là -1... Nếu mảng ko có giá trị chẵn thì hàm trả về -1... Nếu mảng ko có số hoàn t

Trang 1

Chuyên đề mảng 1 chiều

Y!m :nhatquai.theboy

Kĩ thuật nhập xuất mảng

128/ Viết hàm nhập mảng 1 chiều các số thực

voi d NhapMang(float a[], int &n)

{

printf("Nhap so phan tu: ");

scanf ("% d",&n);

for (i nt i =0;i<n;i++)

{

printf("Nhap a[% d]: ", i);

scanf("% f", &a[i]);

}

}

129/ Viết hàm nhập mảng 1 chiều các số nguyên

voi d NhapMang(i nt a[], int &n)

{

printf("Nhap so phan tu: ");

scanf ("% d",&n);

for (i nt i =0;i<n;i++)

{

printf("Nhap a[% d]: ", i);

scanf("% d", &a[i]);

}

}

130/ Viết hàm xuất mảng 1 chiều các số thực

voi d XuatMang(float a[], int n)

{

for (i nt i =0;i<n;i++)

{

printf(" % 2f ", a[i]);

}

}

131/ Viết hàm xuất mảng 1 chiều các số nguyên

voi d XuatMang(i nt a[], int n)

{

for (i nt i =0;i<n;i++)

{

printf("% 4d", a[i]);

}

}

132/ Viết hàm liệt kê các giá trị chẵn trong mảng 1 chiều các số nguyên

voi d LietKe GiaTri Chan(int a[], int n)

{

for (i nt i =0;i<n;i++)

{

if(a[i ]% 2==0)

printf("% 4d",a[i]);

}

}

133/ Viết hàm liệt kê các vị trí mà giá trị tại đó là giá trị âm trong mảng 1 chiều

voi d LietKeVi TriAm(int a[], int n)

{

for (i nt i =0;i<n;i++)

{

if(a[i ]<0)

printf("% 4d",i);

}

}

Trang 2

Kĩ thuật đặt lính canh các bt cơ bản

134/ Viết hàm tìm giá trị lớn nhất trong mảng 1 chiều các số thực

float lonnhat(float a[],int n)

{

float lc=a[0];

for (int i=0;i<n;i++)

{

if(a[i]>lc)

lc=a[i];

}

return lc;

}

135/ Tìm Giá trị dương đầu tiên trong mảng 1 chiều các số thực Nếu mảng ko có giá trị dương thì trả về giá trị -1

float duong dau(float a[], int n)

{

for (i nt i =0; i<n; i++)

{

if (a[i]>0 )

{

retur n a[i];

}

}

retur n -1;

}

136/ Tìm Số chẵn cuối cùng trong mảng 1 chiều các số nguyên Nế u mảng ko có giá trị chẵn thì trả

về giá trị -1

int chancuoi(int a[] , int n)

{

for(int i=n-1; i>=0; i )

{

if(a[i ]% 2==0)

{

retur n a[i];

}

}

retur n -1;

}

137/ Tìm 1 vị trí mà giá trị tại đó là giá trị nhỏ nhất trong mảng 1 chiề u các số thực

float vitrinhonhat(float a[],int n)

{

int lc=0;

for(int i=0;i<n;i++)

{

if(a[i]<a[lc]) }

138/ Tìm Vị trí của giá trị chẵn đầu tiên trong mảng một chiề u các số nguyên Nếu mảng ko có giá trị chẵn thì trả về giá trị -1

int vitrichandau(i nt a[] , int n)

{

for(int i=0; i<n; i ++)

{

if(a[i ]% 2==0)

{

retur n i;

}

Trang 3

}

retur n -1;

}

139/ Tìm vị trí số hoàn thiệ n cuối cùng trong mảng 1 chiề u các số nguyên Nếu mảng ko có số hoàn thiện thì trả về giá trị -1

int sohoanthie n(int n)

{

int tong=0 ;

for (i nt i =1 ; i <n; i++)

if(n% i==0)

tong = tong + i;

if (tong == n)

retur n 1;

retur n 0;

}

int vitrihoanthiencuoi(int a[],int n)

{

for(int i=n-1; i>=0; i )

if(sohoanthien(a[i]==1)

retur n i;

retur n -1;

}

140/ Hãy tìm giá trị dương nhỏ nhất trong mảng các số thực Nếu mảng không có giá trị dương thì trả về giá trị là -1

float DuongNhoNhat(float a[], int n)

{

fl oat min;

int de m= 0;

for (i nt i =0; i<n; i++)

{

if(a[i ]>0)

{

de m ++;

bre ak;

}

}

if (de m !=0 )

{

min = a[i];

for (i=i+1; i<n; i++)

{

if((a[i]>0)&&(mi n>a[i ]))

{

min = a[i ];

}

}

retur n min;

}

retur n -1;

}

141/ Hãy tìm vị trí dương nhỏ nhất trong mảng 1 chiều các số thực nếu mảng ko có giá trị dương thì trả về 1 giá trị ngoài đoạn [0,n-1] là -1 nhằm mô tả ko có vị trí nào thỏa điều kiện.

int vtduongnhonhat(float * A, i nt n)

{

int min;

int de m =0 ;

for (i nt i =0; i<n; i++)

{

if(A[i ]>0)

{

de m++;

min = i;

Trang 4

bre ak;

}

}

if (de m == 0)

retur n -1;

for (i =i+1; i<n; i++)

{

if((A[i]>0)&&(A[mi n]>A[i]))

{

min = i;

}

}

retur n min;

}

Các bt luyện tập

142/ Tìm Giá trị nhỏ nhất trong mảng 1 chiề u các số thực

float NhoNhat(float a[], int n)

{

fl oat min = a[0];

for (i nt i =1; i<n; i++)

{

min = (min>a[i])? a[i]:min;

}

retur n min;

}

143/ Viết hàm tìm chẵn đầu tiên trong mảng các số nguyên Nếu mảng ko có giá trị chẵn thì hàm trả về -1

int ChanDau(int a[],int n)

{

for(int i=0; i<n; i ++)

{

if(a[i ]% 2==0)

{

retur n a[i];

}

}

retur n -1;

}

144/ Tìm số nguyên tố đầu tiên trong mảng 1 chiều các số nguyên Nếu mảng không có số nguyên tố thì trả về giá trị -1

int intto(int n)

{

if (n>=2)

{

for (int i =2; i<n; i++)

if (n% i==0)

retur n 0;

retur n 1;

}

retur n 0;

}

int nguyentodau(int a[], int n)

{

for(int i=0; i<n; i ++)

{

if(intto(a[i])==1)

{

retur n a[i];

}

}

retur n -1;

}

Trang 5

145/ Tìm Số hoàn thiệ n đầu tiên trong 1 chiề u các số nguyên Nếu mảng ko có số hoàn thiện thì trả

về giá trị -1.

int sohoanthie n(int n)

{

int tong=0 ;

for (i nt i =1 ; i <n; i++)

if(n% i==0)

tong = tong + i;

if (tong == n)

retur n 1;

retur n 0;

}

int hoanthiendau(int a[],i nt n)

{

for(int i=0; i<n; i ++)

if(sohoanthien(a[i])==1)

retur n a[i];

retur n -1;

}

146/ Tìm giá trị âm đầu tiên trong mảng 1 chiều các số thực nếu mảng ko có giá trị âm thì trả về giá trị là 1

float AmDau(fl oat a[], int n)

{

for (i nt i =0; i<n; i++)

{

if (a[i])<0)

{

retur n a[i];

}

}

retur n 1;

}

147/ Tìm số dương cuối cùng trong mảng số thực Nếu mảng ko có giá trị dương thì trả về giá trị -1

float DuongCuoi Cung(fl oat a[], int n)

{

for (i nt i =n-1; i>=0; i )

{

if (a[i]>0 )

{

retur n a[i];

}

}

retur n -1;

}

148/ Tìm số nguyên tố cuối cùng trong mảng 1 chiều các số nguyên Nế u mảng ko có số nguyên tố thì trả về giá trị -1

int nguyentoc uoi(int a[],int n)

{

for(int i=n-1; i>=0; i )

{

if(intto(a[i])==1)

{

retur n a[i];

}

}

retur n -1;

}

149/ Tìm số hòan thiện cuối cùng trong mảng 1 chiều các số nguyên Nếu mảng ko có số hòan thiệ n thì hàm trả về giá trị -1

Trang 6

int hoanthiencuoi(int a[],int n)

{

for(int i=n-1; i>=0; i )

{

if(sohoanthien(a[i])==1)

{

retur n a[i];

}

}

retur n -1;

}

150/ Hãy tìm giá trị âm lớn nhất tr ong mảng c ác số thực Nếu mảng ko có giá trị âm thì tr ả về giá trị 0

float AmMax(fl oat a[], int n)

{

fl oat max;

int de m =0;

for (i nt i =0; i<n; i++)

{

if(a[i ]<0)

{

de m++;

bre ak;

}

}

if (de m ==0)

{

retur n 0;

}

else

{

max = a[i];

for (i=i+1; i<n; i++)

{

if((a[i]<0)&&(max<a[i]))

{

max = a[i];

}

}

retur n max;

}

}

151/ hãy tìm số nguyên tố lớn nhất trong mảng 1 chiề u Nếu mảng ko có thì trả về giá trị 0

int nguyentol onnhat(i nt a[],int n)

{

int de m=0;

int max;

for(int i=0; i<n; i ++)

{

if(intto(a[i])==1)

{

de m ++;

max = i ;

bre ak;

}

}

if (de m ==0)

{

retur n 0;

}

else

{

for (i=i+1; i<n; i++)

{

if ((intto(a[i])==1) && (a[max]<a[i]))

{

max = i ;

Trang 7

}

}

}

retur n max;

}

152/ hãy tìm số hòan thiện nhỏ nhất trong mảng 1 chiều các số nguyên Nếu mảng ko có trả về 0

int hoanthiennhonhat(int a[],int n)

{

int de m=0;

int min;

for(int i=0; i<n; i ++)

{

if(sohoanthien(a[i])==1)

{

de m ++;

min = i;

bre ak;

}

}

if (de m ==0)

{

retur n 0;

}

else

{

for (i=i+1; i<n; i++)

{

if ((sohoanthien(a[i])==1 ) && (A[min]>a[i]))

{

min = i;

}

}

}

retur n min;

}

153/ Hãy tìm giá trị chẵn nhỏ nhất trong mảng 1 chiề u các số nguyên Nếu ko có trả về -1

int channhonhat(int a[],int n)

{

int de m=0;

int min;

for(int i=0; i<n; i ++)

{

if(a[i ]% 2==0)

{

de m ++;

min = i;

bre ak;

}

}

if (de m ==0)

{

retur n -1;

}

else

{

for (i=i+1; i<n; i++)

{

if ((a[i]% 2==0) && (a[min]>a[i]))

{

min = i;

}

}

}

retur n min;

}

Trang 8

154/ hãy tìm vị trí giá trị âm lớn nhất trong mảng số thực ko có thì trả về -1

int VTriAmMax(fl oat a[], int n)

{

int VTmax = -1;

for (i nt i =0; i<n; i++)

{

if(a[i ]<0)

{

VTmax = i;

bre ak;

}

}

for (i =i+1; i<n; i++)

{

if((a[i]<0)&&(a[VTmax]<a[i]))

{

VTmax = i;

}

}

retur n VTmax;

}

Bài tập luyện tư duy

155/ hãy tìm giá trị trong mảng các số thực xa giá trị x nhất

voi d kcxanhat(fl oat *A , i nt n , fl oat x )

{

double kcxn = (fabs)(A[0 ] - x);

int j = 0;

for(int i = 0 ; i < n ; i ++)

{

i f((fabs)(A[i]-x) > kcxn)

{

kcxn = (fabs)(A[i] - x);

j = i ;

}

}

printf("Gac gia tri xa % 2f nhat la :",x);

for(j ; j < n ; j++)

{

if((fabs)(A[j] - x) == kcxn)

{

printf("% 2f ",A[j]);

}

}

printf("\n");

}

156/ hãy tìm 1 vị trí trong mảng chiều các số thực mà giá trị tại vị trí đó là giá trị gần giá trị x nhất

voi d vi trigannhat(float *A , int n , float x)

{

double kcgn = (fabs )(A[0] - x);

int j = 0;

for (int i = 0 ; i < n ; i++)

{

if((fabs)(A[i ] - x) < kcgn)

{

kcgn = (fabs)(A[i] - x);

j = i ;

}

}

printf("Cac vi tri c o gia tri gan % 2f nhat l a :",x);

for (j;j<n;j++)

{

if((fabs)(A[j] - x) == kcgn)

Trang 9

{

pri ntf("% d",j);

}

}

printf("\n");

}

157/ hãy tìm đoạn [a,b] sao cho đoạn này chứa tất cả các giá trị trong mảng

voi d ti mdoan(st* A, int n)

{

st max = *A;

st mi n = *A;

for (int i=1; i<n; i ++)

{

max = (max<*(A+i))?max:*(A+i );

mi n = (mi n>*(A+i))? min:* (A+i);

}

printf("\t[ % 1f , % 1f ] l a doan c hua c ac gia tri tr ong mang\n", max, mi n);

}

158 hãy tìm giá trị x sao cho đoạn [-x,x] chứa tất cả các giá trị trong mảng

float ti mx(float* A, int n)

{

float x = *A;

for (int i=1; i<n; i ++)

{

x = (x>(fabs)(*(A+i)))? x : (fabs )(*(A+i));

}

re turn x;

}

159/ hãy tìm giá trị đầu tiên lớn hơn giá trị 2003 Nếu mảng ko có giá trị thỏa thì hàm trả về giá trị

là 0

float dautien(fl oat *A , int n)

{

for (int i = 0 ; i < n;i ++)

{

i f(A[i] > 2003)

{

return A[i];

}

}

re turn 0;

}

160/ hãy tìm giá trị âm cuối cùng lớn hơn giá trị -1 trong mảng số thực Nếu ko có thì hàm trả về 0

float c uoicung(fl oat *A , i nt n)

{

for(n;n>=0;n )

{

if(A[n] > -1 && A[n] < 0)

{

retur n A[n];

}

}

return 0.0 ;

}

161/ hãy tìm giá trị đầu tiên nằm trong khỏang (x,y) cho trc Nếu ko có trả về giá trị x

[FONT="]int dautie ntr ong doan(int a[], i nt n, i nt x, int y)[/ FONT]

[FONT="]{[/ FONT]

[FONT="] int de m =0;[/ FONT]

[FONT="] for(int i=0; i<n;i++)[/ FONT]

[FONT="] {[/ FONT]

[FONT="] if ((a[i]>=x)&&(a[i ]<=y))[/ FONT]

[FONT="] {[/ FONT]

[FONT="] de m++;[/ FONT]

Trang 10

[FONT="] bre ak;[/ FONT]

[FONT="] }[/ FONT]

[FONT="] }[/ FONT]

[FONT="] if (de m == 0)[/ FONT]

[FONT="] {[/ FONT]

[FONT="] retur n x;[/FONT]

[FONT="] }[/ FONT]

[FONT="] retur n a[i];[/ FONT]

[FONT="]}[/ FONT]

162/ hãy tìm 1 vị trí trong mảng số nguyên thỏa 2 điề u kiệ n: có giá trị lân cận và giá trị tại đó bằng tích 2 giá trị lân cận Nếu ko có trả về -1

int bai162(float a[], int n)

{

int i=1;

for (;i<n-1;i ++)

{

if (a [i]==((a[i -1])*a[i+1]))

{

retur n i;

}

}

retur n -1;

}

163/ tìm số chính phương đầu tiên trong mảng 1 chiề u số ngyên

int sochinhphuong(int a)

{

for (i nt i =1; i<a; i++)

{

if (i*i == a)

{

retur n 1;

}

}

retur n 0;

}

int chinhphuong dautien(int *A, int n)

{

for (i nt i =0; i<n; i++)

{

if (sochinhphuong(*(A+i))==1)

{

retur n *(A+i );

}

}

retur n -1;

}

164/ Cho mảng số ng Hãy tìm giá trị đầu tiên thỏa tính chất số gánh (ví dụ: 12321)

int soganh(int n)

{

int t=n;

int dv,dn=0 ;

while (t!=0)

{

dv=t% 10;

dn=dn*10+dv;

t=t/10;

}

if ( n = = dn)

{

retur n 1;

}

retur n 0;

}

int bai164(int a[], int n)

Trang 11

{

for (i nt i =0; i<n; i++)

{

if (soganh(a[i])==1)

{

retur n a[i];

}

}

retur n -1;

}

165/ Hãy tìm giá trị đầu tiên có chữ số đầu tiên là chữ số lẻ Ko có trả về 0 (ví dụ: 110)

int chusodau(int n)

{

int dv;

while (n>=10)

{

dv=n% 10;

n=n/10;

}

if (n% 2==0)

retur n 0;

retur n 1;

}

int daule dautien(int a[], int n)

{

for(int i=0 ; i<n; i++)

{

if ( chusodau(a[i])==1 )

{

retur n a[i];

}

}

retur n 0;

}

166/ hãy tìm giá trị đầu tiê n trong mảng có dạng 2^k ko có thì trả về 0

int dang2k(int n)

{

int du;

if (n==1)

{

retur n 1;

}

do

{

du = n % 2 ;

if (du != 0)

{

retur n 0;

}

n = n/2;

} while (n>=2);

retur n 1;

}

int bai166(int a[], int n)

{

for(int i=0 ; i<n; i++)

{

if (dang2k(a[i ])==1)

{

retur n a[i];

}

}

retur n 0;

}

Ngày đăng: 29/07/2014, 21:20

TỪ KHÓA LIÊN QUAN

w