Bài Tập Lập Trình C Cơ Bản

9344

Chúng ta đã học xong lý thuyết cơ bản của chương 2 : cấu trúc điều khiển và chương 3 : hàm. Hôm nay tôi sẽ cho các bạn làm và đọc các bài tập liên quan.

Bài tập lập trình C cơ bản : Cấu trúc điều khiển

Bài 1 : Tìm số lớn nhất trong 2 số thực

+ Cấu trúc if thiếu (dạng 1) :

 main()
   {
	  float a,b,max;
	  int k;
	  tt:clrscr();
	  printf("\nNhap so thu nhat (a) = ");
	  scanf("%f",&a);
	  printf("\nNhap so thu hai (b) = ");
	  scanf("%f",&b);
	  max=a;
	  if(b>a)
		  max=b;
		  printf("\na= %8.2f",a);
		  printf("\nb= %8.2f",b);
		  printf("\n\nSo lon nhat trong hai so la =%8.2f",max);
		  printf("\n\n      Tiep tuc nua khong ? (0/1)");
		  printf("\n(Go so 1 de tiep tuc, so 0 de ket thuc) ");
		  scanf("%d",&k);
		  if(k==1)
			  goto tt;
   }

+ Cấu trúc if đủ (dạng 2) :

main()
	{
		float a,b,max;
		int k;
		tt:clrscr();
		printf("\nNhap so thu nhat (a) = ");
		scanf("%f",&a);
		printf("\nNhap so thu hai (b) = ");
		scanf("%f",&b);
		if(a>b)
			max=a;
		else
			max=b;
		printf("\n\So lon nhat trong hai so la =%8.2f",max);
		printf("\n\n    Tiep tuc (go so 1)/dung (go so 0)");
		scanf("%d",&k);
		if(k==1) goto tt;
	}

Bài 2 : Tìm số lớn nhất trong 4 số nguyên

main()
	{
		int a,b,c,d,max1,max2,max,t;
		tt:clrscr();
		printf("\nCHUONG TRINH TIM SO NGUYEN LON NHAT TRONG 4 SO");
		printf("\nNhap so thu nhat : ");
		scanf("%d",&a);
		printf("\nNhap so thu hai  : ");
		scanf("%d",&b);
		printf("\nNhap so thu ba   : ");
		scanf("%d",&c);
		printf("\nNhap so thu tu   : ");
		scanf("%d",&d);
		if (a > b)
			max1=a;
		else
			max1=b;
			if (c > d)
				max2=c;
			else
				max2=d;
				if (max1 > max2)
					{
						max=max1;
						clrscr();
						printf("\n     KET QUA");
						printf("\nTrong 4 so vua nhap");
						printf("\nSo thu nhat = %4d ",a);
						printf("\nSo thu hai  = %4d ",b);
						printf("\nSo thu ba   = %4d ",c);
						printf("\nSo thu tu   = %4d ",d);
						printf("\nSo lon nhat trong 4 so la = %4d ",max);
					}
				else
					{
						max=max2;
						clrscr();
						printf("\n     KET QUA");
						printf("\nTrong 4 so vua nhap");
						printf("\nSo thu nhat = %4d ",a);
						printf("\nSo thu hai  = %4d ",b);
						printf("\nSo thu ba   = %4d ",c);
						printf("\nSo thu tu   = %4d ",d);
						printf("\nSo lon nhat trong 4 so la = %4d ",max);
					}
		printf("\n\n    Tiep tuc (bam so 1) / Cham dut (bam so 0) ");
		scanf("%d",&t);
		if (t==1)
			goto tt;
	}

Bài 3 : Viết chương trình giải phương trình bậc 2

main()
 {
	float a,b,c,x1,x2,denta;
	int k;
	tt:clrscr();
	printf("\Giai phuong trinh bac hai");
	printf("\nNhap he so a = ");
	scanf("%f",&a);
	printf("\Nhap he so b = ");
	scanf("%f",&b);
	printf("\Nhap he so c = ");
	scanf("%f",&c);
	denta=b*b-4*a*c;
	if (denta<0)
		 printf("\nPHUONG TRINH VO NGHIEM");
	else
		 if(denta==0)
			printf("\nPHUONG TRINH CO NGHIEM KEP X1=X2 =%8.2f ",-b/(2*a));
		 else
			{
				denta=sqrt((double)denta);
				x1=(-b-denta)/(2*a);
				x2=(-b+denta)/(2*a);
				printf("\nPhuong trinh co hai nghiem:");
				printf("\n\nNghiem thu nhat X1 =%8.2f ",x1);
				printf("\nNghiem thu hai  X2 =%8.2f ",x2);
			}
	 printf("\n\nTiep tuc (bam 1).Cham dut (bam 0) ");
	 scanf("%d",&k);
	 if (k==1)
		goto tt;
 }

Bài 4 : Viết chương trình tính diện tích của hình học sơ cấp

main()
	{
		int i,tt;
		float a,b,c,r,dt;
		kk:clrscr();
		printf("\nCHUONG TRINH TINH DIEN TICH HINH HOC SO CAP");
		printf("\n    1-Hinh vuong");
		printf("\n    2-Hinh chu nhat");
		printf("\n    3-Hinh tam giac");
		printf("\n    4-Hinh thang");
		printf("\n    5-Hinh tron");
		printf("\nBam so (0) de thoat ");
		printf("\nNhap vao mot so tu 1 den 5 de tinh: ");
		scanf("%1d",&i);
		switch(i)
		  {
			case 0: goto thoat;
			case 1: goto hv;
			case 2: goto cn;
			case 3: goto tg;
			case 4: goto ht;
			case 5: goto tr;
			hv:printf("\n   CHUONG TRINH TINH DIEN TICH HINH VUONG");
				printf("\nCho biet canh hinh vuong = ");
				scanf("%f",&a);
				dt=a*a;
				printf("\nDien tich hinh vuong la : %8.2f",dt);
				printf("\n\n   Tiep tuc (bam 1)/Cham dut (bam 0) ");
				scanf("%d",&tt);
				if (tt==1)
					goto kk;
					break;
			cn:printf("\n   CHUONG TRINH TINH DIEN TICH HINH CHU NHAT");
				printf("\nCho biet chieu dai = ");
				scanf("%f",&a);
				printf("\nCho biet chieu rong = ");
				scanf("%f",&b);
				dt=a*b;
				printf("\nDien tich hinh chu nhat la : %8.2f",dt);
				printf("\n\n   Tiep tuc (bam 1)/Cham dut (bam 0) ");
				scanf("%d",&tt);
				if (tt==1)
					goto kk;
					break;
			tg:printf("\n   CHUONG TRINH TINH DIEN TICH HINH TAM GIAC");
				printf("\nCho biet canh day = ");
				scanf("%f",&a);
				printf("\nCho biet chieu cao = ");
				scanf("%f",&c);
				dt=a*c/2;
				printf("\nDien tich hinh tam giac la : %8.2f",dt);
				printf("\n\n   Tiep tuc (bam 1)/Cham dut (bam 0) ");
				scanf("%d",&tt);
				if (tt==1)
					goto kk;
					break;
			ht:printf("\n   CHUONG TRINH TINH DIEN TICH HINH THANG");
				printf("\nCho biet day dai = ");
				scanf("%f",&a);
				printf("\nCho biet day ngan = ");
				scanf("%f",&b);
				printf("\nCho biet chieu cao = ");
				scanf("%f",&c);
				dt=(a+b)*c/2;
				printf("\nDien tich hinh thang la : %8.2f",dt);
				printf("\n\n   Tiep tuc (bam 1)/Cham dut (bam 0) ");
				scanf("%d",&tt);
				if (tt==1)
					goto kk;
					break;
			tr:printf("\n   CHUONG TRINH TINH DIEN TICH HINH TRON");
				printf("\nCho biet ban kinh = ");
				scanf("%f",&r);
				dt=r*r*3.1416;
				printf("\nDien tich hinh thang la : %8.2f",dt);
				printf("\n\n   Tiep tuc (bam 1)/Cham dut (bam 0) ");
				scanf("%d",&tt);
				if (tt==1)
					goto kk;
			thoat:break;
		  }
	}


 

Bài 5 : Viết chương trình in ra phần tử âm đầu tiên 

 

float a[3][4]={
				 {15,46,3.5,6.3},
				 {34,0,-25,35},
				 {1,-13,46,-38}};
main()
  {
	int i,j;
	for(i=0;i<3;++i)
		for(j=0;j<4 ;++j)
			if (a[i][j] < 0)
				goto timthay;
				printf("\n Ma tran khong co phan tu am ");
				goto ketthuc;
	timthay:
	printf("\nPhan tu am dau tien la a(%d,%d)=%8.2f",i+1,j+1,a[i][j]);
	ketthuc:
	;    /* cau lenh rong */
	getch();
  }

 

Bài 6 : Chương trình tìm ước số chung lớn nhất và bội số chung nhỏ nhất

 

main()
  {
	 int a,b;
	 long p;
	 clrscr();
	 printf("\nNhap vao so thu nhat = ");
	 scanf("%d",&a);
	 printf("\nNhap vao so thu hai = ");
	 scanf("%d",&b);
	 printf("\nUoc so chung lon nhat cua %d va %d la = ",a,b);
	 a=abs(a);
	 b=abs(b);
	 p=(long)a*b;
	 while(a-b)
      {
		 if (a>b) a=a-b;
		 else b=b-a;
      }
	 printf("%d\nBoi so chung nho nhat la %ld",a,p/a);
	 getch();
  }

 

Bài 7 : Viết chương trình đếm chữ, số từ  và số dòng khi nhập từ bàn phím.Bấm phím ESC khi kết thúc  nhập dữ liệu

 

#define ESC 27
#define TRUE 1
#define FALSE 0
main()
  {
    unsigned char word=0,letters=0,lines=0;
    char c,inword=FALSE;
    puts("");
    clrscr();
    printf("\nHay nhap cac ky tu,bam phim ESC de ngung\n");
    while((c=getche()) !=ESC)
      {
		if (c==13)
			{
				lines++;
				puts("");
			}
		if (c==32 || c==13 || c=='\t')
			 inword=FALSE;
		else
			{
				letters++;
				if(inword==FALSE)
					{
						inword=TRUE;
						word++;
					}
			}
	  }
	printf("\nThong bao cac so lieu thong ke");
	printf("\n+Tong so chu la =%d",letters);
	printf("\n+Tong so tu la = %d",word);
	printf("\n+Tong so dong la =%d",lines+1);
	getch();
  }

 

Bài 8 : Viết chương trình tính căn bậc 2

 

main()
   {
	  double a,xn,c,fabs();
	  int i;
	  tt:printf("\nNhap vao mot so a= ");
	  scanf("%lf",&a);
	  if(a<0)
       {
			printf("\nKhong the tinh can bac 2 cua so am\n");
			printf("\nBam phim bat ky de nhap lai");
			getch();
			goto tt;
       }
	  if(a==0)
       {
			xn=0;
			goto kq;
       }
	  xn=a;
	  do
		 {
			 c=xn;
			 xn=(xn*xn+a)/(2*xn);
		 }
	  while(fabs((xn-c)/c) > 1e-5);
	  kq:printf("\nNeu a= %8.2f,thi can bac hai cua a=%8.2f\ ",a,xn);
	  printf("\n\n    Tiep tuc nua khong ?(tiep=1,khong=0)");
	  scanf("%d",&i);
	  if(i==1) goto tt;
   }

 

Bài  9 : Chương trình tìm min và max trên mỗi hàng của ma trận

 

float a[3][4]={{15,46,3.5,6.3},
			   {341,0,-25,35},
			   {1,+13,46,+31}};
main()
  {
    int i,j,cotmax[3],cotmin[3];
    float max[3],min[3];
    for(i=0;i<3;++i)
      {
			max[i]=min[i]=a[i][0];
			cotmax[i]=cotmin[i]=0;
			for(j=1;j<4;++j)
			 {
				 if(max[i]<a[i][j])
					{
						max[i]=a[i][j];
						cotmax[i]=j;
					}
				 if(min[i]>a[i][j])
					{
						min[i]=a[i][j];
						cotmin[i]=j;
					}
			 }
       }
	for(i=0;i-3;i++)
	printf("\nHang %d max = a[%d,%d]= %5.2f  min =a[%d,%d]=%5.2f"\
	  ,i+1,i+1,cotmax[i]+1,max[i],i+1,cotmin[i]+1,min[i]);
	getch();
  }

Bài tập lập trình C cơ bản : Hàm

Bài 1 : Chương trình hàm các phép tính 

#define MAXINT 65535
/* Kiem tra return va exit */

int a,b;
void PhepCong()
  {
	printf("\n- Neu dem so %d cong voi %d ket qua la %d",a,b,a+b);
  }


void PhepTru()
  {
	printf("\n- Neu dem so %d tru di so %d ket qua la %d",a,b,a-b);
  }


void PhepChia()
  {
	if ( b== 0)
		exit();
	else
		printf("\n- Neu dem so %d chia cho %d ket qua la %d",a,b,a/b);
  }

void PhepNhan()
  {
	if (((long)a*b)>MAXINT)
		 return;
	else
		 printf("\n- Neu dem so %d nhan voi so %d ket qua la %d",a,b,a*b);
  }
char Chon()
  {
	char Ch;
	printf("\n        Tiep tuc nua khong ? (C/K) ");
	Ch=toupper(getch());
	clrscr();
	return (Ch-'C');
  }
main()
  {
	char KetThuc;
	clrscr();
	do
		{
			printf("\n\tNhap so thu nhat a = ");
			scanf("%d",&a);
			printf("\n\tNhap so thu hai b = ");
			scanf("%d",&b);
			printf("\n         KET QUA TINH TOAN \n");
			PhepCong();
			PhepTru();
			PhepNhan();
			PhepChia();
			KetThuc=Chon();
		}
	while ( ! KetThuc);
  }

 

Bài 2 : Viết chương trình với hàm tính ước số chung lớn nhất của 2 số

 

 void uocso(a,b)
  int a,b;
  	 {
		int x,y;
		while(a-b)
			{
				if (a>b)
					 a=a-b;
				else
					 b=b-a;
			 }
			printf("\nUoc so chung lon nhat cua 2 so la = %d",a);
	 }

 main()
  {
	int x,y;
	clrscr();
	printf("\nNhap 2 so nguyen a va b = ");
	printf("\nSo thu nhat = ");
	scanf("%d",&x);
	printf("\nSo thu hai  = ");
	scanf("%d",&y);
	uocso(x,y);
	getch();
  }

 

Bài 3 : Viết hàm kiểm tra ngày,tháng  và năm

 

char nhuan(nam)
	{
		if ( nam % 100 )
			return( !(nam % 4));
		else
			return( !(nam % 400));
	}

char kiemtra(ngay,thang,nam)
	{
		char f1,f2,f3;
		int f;
		f1=(ngay==30 && thang==2);
		f2=(ngay==29 && thang==2 && !nhuan(nam));
		f=(thang-2)*(thang-4)*(thang-6);
		f=f*(thang-9)*(thang-11);
		f3=(ngay==31 && !f);
		return !(f1 || f2 || f3);
	}

tieptuc()
	{
		char ch;
		printf("\nCo tiep tuc nua khong ? ( C/K )");
		ch=getch();
		ch=toupper(ch);
		return(ch-'K');
	}

main()
	{
		char tiep;
		int ngay,thang,nam;
		do
			{
				printf("\nCho biet can kiem tra ?");
				printf("\nNgay = ");
				scanf("%d",&ngay);
				printf("\nThang = ");
				scanf("%d",&thang);
				printf("\nNam = ");
				scanf("%d",&nam);
				if(kiemtra(ngay,thang,nam))
					printf("Ngay nay hop le");
				else
					printf("Ngay nay khong hop le");
				tiep=tieptuc();
			}
		while (tiep);
	}

 

Bài 4 : Chương trình hàm tính lũy thừa

 

double luythua(float x,int n)
	{
		if (n)
			return(x*luythua(x,--n));
		else
			return 1;
	}

main()
	{
		float x;
		int n;
		clrscr();
		printf("\nNhap so can tinh luy thua : ");
		scanf("%f",&x);
		printf("\nNhap luy thua : ");
		scanf("%d",&n);
		printf("\n\t%8.2f luy thua %d la : %lg ",x,n,luythua(x,n));
		getch();
	}


 

Bài tập lập trình c cơ bản : Tổng hợp hàm đệ quy

Bài 1 : In đảo ngược n số nguyên dương

void InDaoNguoc(int n)
{
    if(n!=0)
{
cout<<n%10;
InDaoNguoc(n/10);
}
}

Bài 2 : Đếm số lượng chữ số nguyên dương n

int DemSL(int n)
{
    if(n==0)
        return 0;
    return 1+DemSL(n/10);
}

Bài 3 : Tìm chữ số có giá trị lớn nhất của số nguyên dương n

long ChuSoLonNhat(long n,long &max)
{    
    long m;
    if(n==0)
         return max;
    else
    {
        m=n%10;
        if(m>max)
             max=m;
    }     
    return ChuSoLonNhat(n/10,max);
}

Bài 4 : Tìm giá trị nguyên  logarit cơ số 2 của n

int Logarit(int n)
{
       if(n<0)
              return -1;
    else
          if(n>=2)
                   return 1+logarit(n/2);
        else
        return 0;
}

Bài 5 :Đổi sang hệ nhị phân của số nguyên dương n

void NhiPhan(int n)
{
      if(n!=0)
       {
             NhiPhan (n/2);
            cout<<n%2;
        }
}
             HOẶC

 long NhiPhan(int a)
{
    long b;
    if(a==0)
         return 0;
    else
         b=a%2; 
    return NhiPhan(a/2)*10+b;
}

Bài 6 : Tính  P(n)=1.3.5…(2n+1) với n>=0

long Tich(int n)
{
    if(n==0)
return 1;
else
     return(2*n+1)* Tich(n-1);
}

Bài 7 : Tính S(n)=1+3+5+…+(2.n+1) với n>=0

long  Tong(unsigned n)
{
    if(n==0)
        return 1;
    return n+Tong(n-2);
}

Bài  8: Tính S(n)=1-2+3-4+…+ ((-1)^(n+1)).n với n>0

int Tong(usigned  n)
{
    if(n==0)
        return 0;
    return pow(-1,(double)n+1)*n+Tong(n-1);
}
//pow(-1,n+1)=(-1)^(n+1)
HOẶC
int Tong(usigned  n)
{
    if(n==0)
        return 0;
    if(n%2==0)
        return –n+Tong(n-1);
    return n+Tong(n-1);
}

Bài  9 : Tính S(n)=1+1.2+1.2.3+…+1.2.3…n với n>0

long GiaiThua(int n)
{

if(n==1)
{
    return 1;
}

  return GiaiThua(n-1)*n;
}

long Tong(int n)

{

      if(n == 1)

{

    return 1;
}

      return Tong(n-1) + GiaiThua(n-1)*n;

}

Bài 10 : Tính S(n)=1^2+2^2+3^2+….+n^2 với n>0

long TongBinhPhuong(int n)
{ 
if(n<=1)
    return 1;
    else
         return n*n+ TongBinhPhuong(n-1);
}

Bài 11 : Tính P(x,y)=x^y

float LuyThua(int x,int y)
{
    if(y==0)
         return 1;
    else
             if(y<0)
                     return LuyThua(x,y+1)*(float)1/x;
            else      
        return x*LuyThua(x,y-1);
}

Bài 12 : Tính S(n) = 1 + 1/2 + 1/3 + … + 1/n với n>0

float Tinh(float n)
{    
if (n==1)
        return 1;
     return Tinh(n-1) + 1/n;
}

Bài 13 : Tính S(n)=1+1/2+1/(2.4)+1/(2.4.6)+…+1/(2.4.6.2n) với n>0

float T (unsigned n)
{
    if(n==0)
return 1;
return T(n-1)*2*n;
}
float  Tong(unsigned n)
{
    if(n==0)
        return 1;
    return Tong(n-1)+1/T;
}

Bài 14 : Tìm chữ số đầu tiên của số nguyên dương n.

int ChuSoDauTien(int a)
{ 
if(a<10)
         return a;
    else
        return ChuSoDauTien(a/10);
}

Bài 15 :Tìm ước số chung lớn nhất của 2 số nguyên a, b.

int UCLN(int a,int b)
{
       if(a==b)
        return a;
    else
    {
            if(a>b)
                    a=a-b;
           else
                  b=b-a;
     }
    return UCLN(a,b);
}

Nguồn : lập trình c cơ bản

No votes yet.
Please wait...

BÌNH LUẬN