Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
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
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 void NhapMang(float a[], int &n) { printf("Nhap so phan tu: "); scanf ("%d",&n); for (int 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 void NhapMang(int a[], int &n) { printf("Nhap so phan tu: "); scanf ("%d",&n); for (int 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 void XuatMang(float a[], int n) { for (int 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 void XuatMang(int a[], int n) { for (int 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 . void LietKeGiaTriChan(int a[], int n) { for (int 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 . void LietKeViTriAm(int a[], int n) { for (int i=0;i<n;i++) { if(a[i]<0) printf("%4d",i); } } 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 duongdau(float a[], int n) { for (int i=0; i<n; i++) { if (a[i]>0) { return a[i]; } } return -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) { return a[i]; } } return -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(int a[] , int n) { for(int i=0; i<n; i++) { if(a[i]%2==0) { return i; } } return -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 sohoanthien(int n) { int tong=0; for (int i=1 ; i<n; i++) if(n%i==0) tong = tong + i; if (tong == n) return 1; return 0; } int vitrihoanthiencuoi(int a[],int n) { for(int i=n-1; i>=0; i ) if(sohoanthien(a[i]==1) return i; return -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) { float min; int dem= 0; for (int i=0; i<n; i++) { if(a[i]>0) { dem ++; break; } } if (dem !=0) { min = a[i]; for (i=i+1; i<n; i++) { if((a[i]>0)&&(min>a[i])) { min = a[i]; } } return min; } return -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, int n) { int min; int dem =0 ; for (int i=0; i<n; i++) { if(A[i]>0) { dem++; min = i; break; } } if (dem == 0) return -1; for (i=i+1; i<n; i++) { if((A[i]>0)&&(A[min]>A[i])) { min = i; } } return 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) { float min = a[0]; for (int i=1; i<n; i++) { min = (min>a[i])?a[i]:min; } return 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) { return a[i]; } } return -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) return 0; return 1; } return 0; } int nguyentodau(int a[], int n) { for(int i=0; i<n; i++) { if(intto(a[i])==1) { return a[i]; } } return -1; } 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 sohoanthien(int n) { int tong=0; for (int i=1 ; i<n; i++) if(n%i==0) tong = tong + i; if (tong == n) return 1; return 0; } int hoanthiendau(int a[],int n) { for(int i=0; i<n; i++) if(sohoanthien(a[i])==1) return a[i]; return -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(float a[], int n) { for (int i=0; i<n; i++) { if (a[i])<0) { return a[i]; } } return 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 DuongCuoiCung(float a[], int n) { for (int i=n-1; i>=0; i ) { if (a[i]>0) { return a[i]; } } return -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 nguyentocuoi(int a[],int n) { for(int i=n-1; i>=0; i ) { if(intto(a[i])==1) { return a[i]; } } return -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 . int hoanthiencuoi(int a[],int n) { for(int i=n-1; i>=0; i ) { if(sohoanthien(a[i])==1) { return a[i]; } } return -1; } 150/ Hãy tìm giá trị âm lớn nhất trong mảng các số thực. Nếu mảng ko có giá trị âm thì trả về giá trị 0 . float AmMax(float a[], int n) { float max; int dem =0; for (int i=0; i<n; i++) { if(a[i]<0) { dem++; break; } } if (dem ==0) { return 0; } else { max = a[i]; for (i=i+1; i<n; i++) { if((a[i]<0)&&(max<a[i])) { max = a[i]; } } return 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 nguyentolonnhat(int a[],int n) { int dem=0; int max; for(int i=0; i<n; i++) { if(intto(a[i])==1) { dem ++; max = i; break; } } if (dem ==0) { return 0; } else { for (i=i+1; i<n; i++) { if ((intto(a[i])==1) && (a[max]<a[i])) { max = i; } } } return 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 dem=0; int min; for(int i=0; i<n; i++) { if(sohoanthien(a[i])==1) { dem ++; min = i; break; } } if (dem ==0) { return 0; } else { for (i=i+1; i<n; i++) { if ((sohoanthien(a[i])==1) && (A[min]>a[i])) { min = i; } } } return 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 dem=0; int min; for(int i=0; i<n; i++) { if(a[i]%2==0) { dem ++; min = i; break; } } if (dem ==0) { return -1; } else { for (i=i+1; i<n; i++) { if ((a[i]%2==0) && (a[min]>a[i])) { min = i; } } } return min; } 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(float a[], int n) { int VTmax = -1; for (int i=0; i<n; i++) { if(a[i]<0) { VTmax = i; break; } } for (i=i+1; i<n; i++) { if((a[i]<0)&&(a[VTmax]<a[i])) { VTmax = i; } } return 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 . void kcxanhat(float *A , int n , float x ) { double kcxn = (fabs)(A[0] - x); int j = 0; for(int i = 0 ; i < n ; i++) { if((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 . void vitrigannhat(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 co gia tri gan % .2f nhat la :",x); for(j;j<n;j++) { if((fabs)(A[j] - x) == kcgn) { printf("%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 . void timdoan(st* A, int n) { st max = *A; st min = *A; for (int i=1; i<n; i++) { max = (max<*(A+i))?max:*(A+i); min = (min>*(A+i))?min:*(A+i); } printf("\t[ %.1f , %.1f ] la doan chua cac gia tri trong mang\n", max, min); } 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 timx(float* A, int n) { float x = *A; for (int i=1; i<n; i++) { x = (x>(fabs)(*(A+i)))? x : (fabs)(*(A+i)); } return 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(float *A , int n) { for(int i = 0 ; i < n;i++) { if(A[i] > 2003) { return A[i]; } } return 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 cuoicung(float *A , int n) { for(n;n>=0;n ) { if(A[n] > -1 && A[n] < 0) { return 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 dautientrongdoan(int a[], int n, int x, int y)[/FONT] [FONT="]{[/FONT] [FONT="] int dem =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="] dem++;[/FONT] [FONT="] break;[/FONT] [FONT="] }[/FONT] [FONT="] }[/FONT] [FONT="] if (dem == 0)[/FONT] [FONT="] {[/FONT] [FONT="] return x;[/FONT] [FONT="] }[/FONT] [FONT="] return 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])) { return i; } } return -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 (int i=1; i<a; i++) { if (i*i == a) { return 1; } } return 0; } int chinhphuongdautien(int *A, int n) { for (int i=0; i<n; i++) { if (sochinhphuong(*(A+i))==1) { return *(A+i); } } return -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) { return 1; } return 0; } int bai164(int a[], int n) [...]... (soganh(a[i])= =1) { return a[i]; } } return -1; } 16 5/ 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ụ: 11 0) int chusodau(int n) { int dv; while (n> =10 ) { dv=n% 10 ; n=n /10 ; } if (n% 2==0) return 0; return 1; } int dauledautien(int a[], int n) { for(int i=0 ; i=2); return 1; } int bai166(int a[], int n) { for(int i=0 ; i . Chuyên đề mảng 1 chiều Y!m :nhatquai.theboy Kĩ thuật nhập xuất mảng 12 8/ Viết hàm nhập mảng 1 chiều các số thực void NhapMang(float a[], int. 13 0/ Viết hàm xuất mảng 1 chiều các số thực void XuatMang(float a[], int n) { for (int i=0;i<n;i++) { printf(" %.2f ", a[i]); } } 13 1/ Viết hàm xuất mảng 1 chiều. int n) { int i =1; for (;i<n -1; i++) { if (a [i]==((a[i -1] )*a[i +1] )) { return i; } } return -1; } 16 3/ tìm số chính phương đầu tiên trong mảng 1 chiều số ngyên . int