bài tập C
LẬP TRÌNH C 1. Bài tập mảng * Tạo các hàm #include <stdio.h> Nhập void Input(int *p, int n){ int i; for(i=0; i<n; i++){ printf("nhap phan tu thu %i: ",i); scanf("%d",&p[i]); } } In void Display(int *p, int n){ int i; for(i=0; i<n; i++) printf("%5d",p[i]); printf("\n"); } Sắp xếp tăng dần/giảm dần void Sort(int *p, int n, int d){ int i, j, tg; for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(d*p[i]>d*p[j]){ tg = p[i]; p[i] = p[j]; p[j] = tg; } } Tìm phần tử lớn nhất/nhỏ nhất int Maxmin(int *p, int n, int d){ int temp, i; temp = p[0]; for(i=1; i<n; i++) if(d*p[i]>d*temp) temp = p[i]; return temp; } Tính tổng các phần tử trong mảng int Sum(int *p, int n){ int s=0,i; for(i=0; i<n; i++) s+=p[i]; return s; } Tính trung bình giá trị các phần tử float Average(int *p, int n){ int s=0,i; for(i=0; i<n; i++) s+=p[i]; return (float)s/n; } Tìm phần tử x có trong mảng không int Search(int *p, int n, int vt, int x){ int i; for(i=vt; i<n; i++) if(p[i]==x) return i; return -1; } Xóa phần tử x có trong mảng int Delete(int *p, int *n, int vt, int x){ int i; vt = Search(p,*n,vt,x); if(vt>-1){ for(i=vt; i<*n-1; i++) p[i] = p[i+1]; *n = *n - 1; } return vt; } Chèn phần tử x vào mảng void Insert(int *p, int *n, int x){ p[*n] = x; *n = *n + 1; } Thay thế phần tử x bằng phần tử y void Replace(int *p, int n, int x, int y){ int i; for(i=0; i<n; i++) if(p[i]==x) p[i]=y; } 2. Kiểm tra xem a,b,c có phải là 3 cạnh của tam giác không? #include <stdio.h> #include <math.h> void main (void) { int a,b,c; printf("nhap vao do dai 3 canh:"); scanf("%d%d%d",&a,&b,&c); if(a<b+c && b<a+c && c<b+a){ printf("%2d%2d%2d la 3 canh cua tam giac\n",a,b,c); if(a==b && b==c && c==a) printf("tam giac deu\n"); else if(a==b || a==c || c==b) printf(" tam giac can\n"); else printf("tam giac thuong\n"); } else printf("khong phai 3 canh tam giac\n"); } 3. Hiển thị trên màn hình Mã|Ký tự bảng mã ASCII #include <stdio.h> #include <conio.h> void main (void){ int ch; for(ch=0; ch<=225;ch++ ){ printf("%c %d\n",ch,ch); if(ch % 22==0) getch(); } } 4. #include <stdio.h> #include <math.h> void main (void){ long n,i; float s; printf("Nhap vao so nguyen duong N:"); scanf("%ld",&n); s=0; for (i=1;i<=n;i++) s = s+i*i; printf("s = %f",sqrt(s)); } 5. #include <stdio.h> #include <math.h> void main (void){ int i,n,s; printf(" nhap vao so nguyen duong n:"); scanf("%d",&n); while(n<=0){ printf("nhap lai"); scanf("%d",&n); } s = 0; for(i=1; i<=n; i++) if(i%2==1) s = s+(2*i+1)*(2*i+1); printf("GTBT la: %d\n",s); } 6. Tính n! #include <stdio.h> #include <math.h> void main (void){ int n,s,i; printf("nhap vao N:"); scanf("%d",&n); s = 1; for(i=n;i>=1;i=i-1) s=s*i; printf("s= %d\n",s); } 7. Kiểm tra số nguyên tố? #include <stdio.h> #include <math.h> #include <conio.h> int n,i,t; printf("nhap vao so nguyen n:"); scanf("%d",&n); if (n<2){ printf("nhap lai:"); scanf("%d",&n); } else for (i==2;i<= sqrt(n)){ t = n%i; if(t!=0) printf("la so nguyen to:"); else printf("khong la nguyen to"); } } 8. Tính biểu thức theo ct Fibonasi #include <stdio.h> #include <math.h> void main(void){ int n,fn,f,s,i; int f0 = 0,f1 = 1; printf("nhap vao so N:"); scanf("%d",&n); while (n<2){ printf("nhap lai:"); scanf("%d",&n); } for (i=1;i<=n;i++) fn = f(i-1)+f(i-2); s = f0+f1+fn; printf("s= %d",s); } Con trỏ Tìm max #include <stdio.h> #include <string.h> void main (void){ int a[100], n, i, max; printf("n="); scanf("%d",&n); for(i=0;i<n;i++){ printf("a[%d]=",i); scanf("%d",a+1); } max = *a; for(i=1;i<n;i++) if(*(a+1)>max) max=*(a+1); printf("max=%d",max); } Con trỏ biến động #include <stdio.h> #include <conio.h> #include <stdlib.h> void main(void){ int *p,max,n,i; printf("n="); scanf("%d",&n); p = malloc(n*sizeof(int)); if(p==NULL){ printf("Khong cap phat duoc bo nho\n"); getch(); exit(0); } for(i=0;i<n;i++){ printf("Nhap phan tu thu %d:",i); scanf("%d",&p+i); } max = *p; for(i=1; i<n; i++) if(*(p+i) > max) max = *(p+i); printf("max=%d\n",max); free(p); } Hàm main – mảng #include <stdio.h> #include <conio.h> #include <stdlib.h> #include "array.h" void main(void){ int a[100], n, temp, key, d, tong, vt, x, y; float tb; do{ system("cls"); printf("1. Nhap vao day so.\n"); printf("2. In day so.\n"); printf("3. Sap xep day so.\n"); printf("4. Tim so lon nhat/nho nhat day so.\n"); printf("5. Tong cac phan tu trong day so.\n"); printf("6. Trung binh cac phan tu trong day so.\n"); printf("7. Tim mot phan tu trong day so.\n"); printf("8. Tim tat ca phan tu trong day so.\n"); printf("9. Xoa mot phan tu trong day so.\n"); printf("A. Xoa tat ca phan tu trong day so.\n"); printf("B. Chen mot phan tu vao cuoi day so.\n"); printf("C. Tim kiem va thay the phan tu trong day so.\n"); printf("Q. Thoat khoi chuong trinh.\n"); key = getch(); switch(key){ case '1': system("cls"); printf("Nhap so phan tu cua day: "); scanf("%d",&n); Input(a,n); printf("Da nhap xong!\n"); getch(); break; case '2': system("cls"); printf("Cac phan tu cua day:\n"); Display(a,n); getch(); break; case '3': system("cls"); printf("Sap xep tang (1)/ sap xep giam (-1)? "); scanf("%d",&d); Sort(a,n,d); printf("Day da sap xep xong!\n"); getch(); break; case '4': system("cls"); printf("Tim so lon nhat (1)/ so nho nhat (-1)? "); scanf("%d",&d); temp = Maxmin(a,n,d); printf("So can tim: %d\n",temp); getch(); break; case '5': system("cls"); tong = Sum(a,n); printf("Tong cac phan tu trong day: %d\n",tong); getch(); break; case '6': system("cls"); tb = Average(a,n); printf("Trung binh cac phan tu trong day: %0.2f\n",tb); getch(); break; case '7': system("cls"); printf("Nhap phan tu can tim: "); scanf("%d",&x); vt = Search(a,n,0,x); if(vt>-1) printf("Tim thay phan tu %d tai vi tri %d\n",x,vt); else printf("Khong tim thay\n"); getch(); break; case '8': system("cls"); printf("Nhap phan tu can tim: "); scanf("%d",&x); vt = Search(a,n,0,x); if(vt==-1) printf("Khong tim thay\n"); else{ printf("Cac vi tri tim thay:\n"); while(vt>-1){ printf("%6d",vt); vt = Search(a,n,vt+1,x); } } getch(); break; case '9': system("cls"); printf("Nhap phan tu can xoa: "); scanf("%d",&x); vt = Delete(a,&n,0,x); if(vt==-1) printf("Khong tim thay\n"); else printf("Da xoa xong!\n"); getch(); break; case 'A': case 'a': system("cls"); printf("Nhap phan tu can xoa: "); scanf("%d",&x); vt = Delete(a,&n,0,x); if(vt==-1) printf("Khong tim thay\n"); else{ while(vt>-1) vt = Delete(a,&n,vt,x); printf("Da xoa xong!\n"); } getch(); break; case 'B': case 'b': system("cls"); printf("Nhap phan tu can chen: "); scanf("%d",&x); Insert(a,&n,x); printf("Da chen xong!\n"); getch(); break; case 'C': case 'c': system("cls"); printf("Nhap phan tu can tim: "); scanf("%d",&x); printf("Nhap phan tu can thay the: "); scanf("%d",&y); Replace(a,n,x,y); printf("Da thay the xong!\n"); getch(); break; case 'Q': case 'q': return; }//end of switch }while(1); //end of do while }// end of program Chuỗi Độ dài chuỗi int Len(char *s){ int i=0; while(s[i]!=0) i++; return i; } Đổi thường thành hoa void Upper(char *s){ int i=0; while(s[i]!=0 && s[i]>='a' && s[i]<='z'){ s[i] = s[i] - 32; . giac ",a,b ,c) ; if(a==b && b= =c && c= =a) printf("tam giac deu "); else if(a==b || a= =c || c= =b) printf(" tam giac can "); else printf("tam giac. thuong "); } else printf("khong phai 3 canh tam giac "); } 3. Hiển thị trên màn hình Mã|Ký tự bảng mã ASCII #include <stdio.h> #include <conio.h> void main (void){ int ch; for(ch=0; ch<=225;ch++ ){ printf(" %c. a,b ,c; printf("nhap vao do dai 3 canh:"); scanf("%d%d%d",&a,&b,& ;c) ; if(a<b +c && b<a +c && c& lt;b+a){ printf("%2d%2d%2d la 3 canh cua