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

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

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

TỪ KHÓA LIÊN QUAN

w