Tổng hợp bài tập C
Code:
#include <stdio.h>
#include <ctype.h>
#include <alloc.h>
char *crypt(char *tdiep, int column)
{
char tam[255], *result;
int i = 0, k = 0, n, j=0;
while(tdiep[i] != 0)
{
if (isalnum(tdiep[i]))
tam[k++] = tdiep[i];
i++;
}
tam[k] = 0;
result = (char *)malloc(k+1);
for (i=0; i<column; i++)
{
n = 0;
while(n+i < k)
{
result[j++] = tolower(tam[n+i]);
n += column;
}
result[k] = 0;
return result;
}
void main()
{
char thongdiep[255], *mahoa;
int col;
printf("\nNhap thong diep can ma hoa : ");
gets(thongdiep);
printf("\nCho biet so cot : ");
scanf("%d", &col);
mahoa = crypt(thongdiep, col);
printf("\nThong diep da duoc ma hoa thanh : %s", mahoa);
getch();
}
songuoc(long a) { int tg; if (a > 0) { while (a > 0) { tg= a%10; a = a / 10; } } return tg; } Điền giá trị cho một mảng vuông theo chiều kim đồng hồ Code: #include #include void main() { int n, w, hang, cot, chanhangtang, chanhanggiam, chancottang, chancotgiam; int matran[12][12], tang, giam; printf("\n\nChuong trinh in ma tran dac biet."); do { printf("\nNhap kich thuoc cua ma tran (3 <= n <= 12) : "); scanf("%d%*c",&n); } while (! (n >=3 && n<=12) ); hang = cot = 0; chanhangtang = chancottang = n-1; chanhanggiam = chancotgiam = 0; /* tang co 4 gia tri : tang = 0 -> tang cot tang = 1 -> tang hang tang = 2 -> giam cot tang = 3 -> giam cot */ tang = 0; for (w=0; w<n*n; w++) { matran[hang][cot]= w + 1; switch(tang) { case 0 : if (cot < chancottang) cot++; else { tang++; // Chuyen sang tang hang chanhanggiam++; hang++; } break; case 1 : if (hang < chanhangtang) hang++; else { tang++; // Chuyen sang giam cot chancottang--; cot--; } break; case 2 : if (cot > chancotgiam) cot--; else { tang++; // Chuyen sang giam hang chanhangtang--; hang--; } break; case 3 : if (hang > chanhanggiam) hang--; else { tang=0; // Chuyen sang tang cot chancotgiam++; cot++; } break; } } for (hang=0; hang < n; hang++) { printf("\n"); for (cot=0; cot < n; cot++) printf("%4d", matran[hang][cot]); } getch(); } In hình tam giác Code: #include #include void main() { int n, i, j; printf("\nNhap chieu cao cua hinh tam giac : "); scanf("%d", &n); for (i=0; i<n; i++) { for (j=n-1; j>i; j--) printf(" "); for (j=0; j<i*2+1; j++) printf("*"); printf("\n"); } getch(); } Trộn hai mảng tăng dần thành một mảng tăng dần Code: /* Tron hai mang tang dan thanh 1 mang tang dan */ #include #define MAX 10 void main() { int a[MAX], b[MAX], c[2*MAX], n1, n2, i, i1, i2; printf("\nCho biet so phan tu cua mang thu nhat : "); scanf("%d", &n1); printf("Nhap vao cac phan tu (tang dan) cua mang thu nhat : "); for (i=0; i<n1; i++) scanf("%d", &a[i]); printf("\nCho biet so phan tu cua mang thu hai : "); scanf("%d", &n2); printf("Nhap vao cac phan tu (tang dan) cua mang thu hai : "); for (i=0; i<n2; i++) scanf("%d", &b[i]); i1 = i2 = 0; for (i=0; i<n1 + n2; i++) { if (i1 >= n1 || i2 >= n2) break; if (a[i1] < b[i2]) { c[i] = a[i1]; i1++; } else { c[i] = b[i2]; i2++; } } if (i1 < n1) while (i1 < n1) c[i++] = a[i1++]; if (i2 < n2) while (i2 < n2) c[i++] = b[i2++]; printf("\nCac phan tu cua mang tron : "); for (i=0; i<n1+n2; i++) printf("%d ", c[i]); getch(); } Tìm vị trí đầu và vị trí cuối của một số trong một dãy số Code: #include #include #include void main() { int a,n,m,vtdau=0,vtcuoi=0; cout<<"Nhap vao so luong so: "; cin>>n; cout<<"Ban muon kiem tra so nao: "; cin>>m; do { cout<<"Nhap vao so thu 1: "; cin>>a; }while(a<0); for(int i=2;i<=n;i++) { do { cout<<"Nhap vao so thu "<<i<<": "; cin>>a; }while(a<0); if(a==m) { if(vtdau==0) vtdau=i; vtcuoi=i; } } cout<<"Vay vi tri dau cua so "<< m<< "la: "<<vtdau<<endl; cout<<"Vay vi tri cuoi cua so "<< m<< "la: "<<vtcuoi<<endl; getch(); } Tính x^1/1! + x^2/2! + x^3/3! + ... + x^n/n! Code: #include #include #include void main() { float x,tong=0.0,n,tg,mu=1.0,gt=1.0; cout>x; cout>n; for(int i=1;i<=n;i++) { mu=mu*x; gt=gt*i; tg=mu/gt; tong=tong+tg; } cout<<"Vay "; for(int j=2;j<=n;j++) { cout<<x<<"^"<<j<<"/"<<j<<"!"<<" + "; } cout<<x<<" = "<<(tong); getch(); } Trình bày các bước chuyển n đĩa từ cọc A sang cọc C trong bài toán Tháp Hà Nội dùng 3 đĩa Code: #include #include #include #include #define A 0 #define B 1 #define C 2 void hanoi(int from, int to, int dia) { int trunggian; if (dia == 1) printf("\nChuyen 1 dia tu coc %c sang coc %c", 'A'+from, 'A'+to); else { if ((from == A && to == C) || (from == C && to == A)) trunggian = B; else if ((from == A && to == B) || (from == B && to == A)) trunggian = C; else if ((from == C && to == B) || (from == B && to == C)) trunggian = A; hanoi(from, trunggian, dia-1); hanoi(from, to, 1); hanoi(trunggian, to, dia-1); } } void main() { int n; printf("\nCho biet so dia ( 3 -> 6 ): "); do { scanf("%d", &n); } while (n 6); hanoi(A, C, n); getch(); } Trình bày các bước chuyển n đĩa từ cọc A sang cọc C trong bài toán Tháp Hà Nội dùng 4 đĩa Code: #include #include #include #include #define A 0 #define B 1 #define C 2 #define D 3 void hanoi(int from, int to, int dia) { int tg1, tg2, dia2; if (dia <= 1) printf("\nChuyen 1 dia tu coc %c sang coc %c", 'A'+from, 'A'+to); else { if ((from == A && to == D) || (from == D && to == A)) { tg1 = B; tg2 = C; } else if ((from == A && to == B) || (from == B && to == A)) { tg1 = C; tg2 = D; } else if ((from == A && to == C) || (from == C && to == A)) { tg1 = B; tg2 = D; } else if ((from == B && to == C) || (from == C && to == B)) { tg1 = A; tg2 = D; } else if ((from == B && to == D) || (from == D && to == B)) { tg1 = A; tg2 = C; } else if ((from == C && to == D) || (from == D && to == C)) { tg1 = A; tg2 = B; } dia2 = dia / 2; if (dia % 2 == 1) { hanoi(from, tg1, dia2); hanoi(from, tg2, dia2); hanoi(from, to, 1); hanoi(tg2, to, dia2); hanoi(tg1, to, dia2); } else { hanoi(from, tg1, dia2); if (dia2 > 1) { hanoi(from, tg2, dia2-1); hanoi(from, to, 1); hanoi(tg2, to, dia2-1); } else hanoi(from, to, 1); hanoi(tg1, to, dia2); } } } void main() { int n; printf("\nCho biet so dia ( 3 -> 6 ): "); do { scanf("%d", &n); } while (n 6); hanoi(A, D, n); getch(); } câu 12 trang 3:các ước của số n, với n nhập từ bàn phím : PHP Code: #include #include void LK_Uoc(int n)//liet ke cac uoc cua n { for(int i=1;i<=n;i++) if(n%i==0) printf("%4d",i); } void main() { int n; printf("\nMoi ban nhap so n bat ky n ="); scanf("%d",&n); printf("\nCac uoc so cua n la : \n "); LK_Uoc(n); getch(); } Tìm vị trí đầu và vị trí cuối của một số trong một dãy số. Bài này mình dùng mảng hai chiều ai có y kiến pm nhaFPRIVATE "TYPE=PICT;ALT=" PHP Code: #include #include void Nhap_Mang(int A[],int n) { for(int i=0;i<n;i++) { printf("A[%d=",i); scanf("%d",&A[i); } } void Xuat_Mang(int A[],int n) { for(int i=0;i<n;i++) printf("%4d",A[i]); } int Tim_X_DT(int A[],int n,int X) { for(int i=0;i<n;i++) if(A[i]==X) return i; return 0; } int Tim_X_CC(int A[],int n,int X) { for(int i=n-1;i>=0;i--) if(A[i]==X) return i; return 0; } void main() { int A[100]; int n,X; printf("\nMoi ban nhap so phan tu n = "); scanf("%d",&n); Nhap_Mang(A,n); printf("\nMang sau khi nhap :"); Xuat_Mang(A,n); printf("\nMoi ban nhap gia tri X ="); scanf("%d",&X); int kq=Tim_X_DT(A,n,X); if(kq==0) printf("\n Mang vua nhap ko co gia tri X"); else printf("\nGia tri X dau tien trong mang =%d",kq); int kq1=Tim_X_CC(A,n,X); printf("\nGia tri X cuoi cung trong mang =%d",kq1); getch(); } bai 16 :In danh sách các số hoàn hảo(hoàn hảo =hoàn thiện) nhỏ hơn số N nhập từ user bài này xin giải như sau nhé: PHP Code: #include #include int La_HT(int n)//La_HT=La_HH { int tong=0; for(int i=1;i<n;i++0) if(n%i==0) tong=tong+i; return(tong==n); } void LK_HT(int n) { for(int i=0;i<=n;i++) if(La_HT(i)==1) printf("%4d",i); } void main() { int n; printf("\nMoi ban nhap so n = "); scanf("%d",&n); printf("\nLiet ke Hoan hao nho hon n :"); LK_HT(n); getch(); } bài 12 trang 4 kiem tra nguyen to : PHP Code: #include #include int La_NT(int n) { int dem=0; for(int i=1;i<=n;i++) if(n%i==0) dem++; return(dem==2); } void main() { int n; printf("\nMoi ban nhap n ="); scanf("%d",&n); int kq=La_NT(n); if(kq==0) printf("\nso vua nhap ko phai la NT"); else printf("\nLa NT"); getch(); } bai 13 trang 4 :cách dễ nhất nè dùng tìm trong mảng cho nó dễ tìm ha hihi C Code: | Lựa chọn code | Ẩn/Hiện code | #include #include void Nhap_Mang(int A[],int n) { for(int i=0;i<n;i++ { printf("A[%d]=",i); scanf("%d",&A[i]); } } void Xuat_Mang(int A[],int n) { for(int i=0;i<n;i++) printf("%4d",A[i]); } int Tim_Max(int A[],int n) { int max=0; for(int i=1;i<n;i++) if(A[i]>A[max]) max=i; return max; } void main() { int A[100]; int n; printf("\nMoi ban nhap so pt n = "); scanf("%d",&n); Nhap_Mang(A,n); printf("\nMang sau khi nhap "); Xuat_Mang(A,n); int kq=Tim_Max(A,n); printf("\nSo Lon nhat trong mang tai vi tri =%d, va so do la =%d",kq,A[kq]); getch(); } Kiểm tra ma trận B có là ma trận con của ma trận A hay ko : #include #include #define N 2 #define M 5 void search(int b[N][N],int a[M][M]) { int i,j,k,l,m,x,y,dem,demx,demy; int timthay=1; for(k=0;k<=M-N;++k) { for(l=0;l<=M-N;++l) { dem=demx=demy=0; x=l;y=k; for(i=0;i<N;++i) { for(j=0;j<N;++j) { if(b[i][j]==a[y][x])dem++; ++x;++demx; if(demx==N){demx=0;x=l;} } ++y;++demy; if(demy==N){demy=0;y=k;} } if(dem==N*N)break; } if(dem==N*N)break; } if(dem!=N*N)timthay=0; if(timthay==0)printf("\nKo tim thay"); else printf("\nTim thay"); } void main() { clrscr(); int a[M][M]={ 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14,15, 16,17,18,19,20, 21,22,23,24,25}; int b[N][N]={4, 5, 9,10}; search(b,a); getch(); }
File đính kèm:
- Tổng hợp bài tập C .pdf