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

