Thứ Tư, 27 Tháng Mười Một 2024
Trang chủLập trìnhLập trình C/C++Giải bài thực hành 4 - Cấu trúc lặp While, do...while |...

Giải bài thực hành 4 – Cấu trúc lặp While, do…while | Nhập môn lập trình C

DANH SÁCH BÀI VIẾT
Giải bài tập thực hành 1 – Các thành phần trong ngôn ngữ C
Giải bài tập thực hành 2 – Cấu trúc rẽ nhánh
Giải bài tập thực hành 3 – Cấu trúc lặp for
Giải bài thực hành 4 – Cấu trúc lặp While, do…while
Giải bài thực hành 5 – HÀM
Giải bài thực hành 6 – Truyền tham số cho hàm
Giải bài thực hành 7 – Mảng
Giải bài thực hành 8 – Chuỗi ký tự
Giải bài thực hành 9 – Kiểu cấu trúc
Giải bài thực hành 10 – Tập tin

I, Các bài thực hành cơ bản

Bài 3: Viết chương trình nhập số nguyên dương n. Liệt kê n số nguyên tố đầu tiên.

Code mẫu

#include<stdio.h>

#include<math.h>

long nguyento(int n)

{

    if(n==0||n==1) return 0;

    int i=2;
    while(i<=sqrt(n))
   {
   	 if(n%i==0) return 0;
   	 i++;
   }

    return 1;

}

void lietke()

{  

    int i=2;

    int n,count=0;

    printf("\nNhap n = ");

    scanf("%d",&n);

    while(count<n)

    {

                if(nguyento(i)==1)

                        {

                        printf("%5d",i);

                                    count++;

                        }

                i++;

    }

}

int main()

{

    lietke();

}

Bài 4. Viết chương trình nhập vào hai số nguyên dương a và b. tìm ước số chung lớn nhất và bội số chung nhỏ nhất của a và b.

Code mẫu

#include<stdio.h>

int main()

{

            int x,y,a,b;

            do

            {

            printf("Nhap a,b = ");

            scanf("%d%d",&a,&b);

            }

            while (a<=0|| b<=0);

            x=a;

            y=b;

            while(a!=b)

            {

            if(a>b)

            a-=b;

            else

            b-=a;

            }

            printf("Uoc chung lon nhat la %d",a);

            printf("\nBoi chung nho nhat la %d",(x*y)/a);

}

Bài 5. Viết chương trình nhập vào một số nguyên n gồm tối đa 10 chữ số (4 bytes). In ra màn hình giá trị nhị phân của số trên.

Code mẫu

#include <stdio.h>

unsigned long main()

{

            unsigned long n;

            int i2=0,j2,t2,a2[100];

            do {

            printf("Nhap so nguyen duong N:");

            scanf("%lu",&n);

            }

            while ((n>(unsigned long)n)||(n<0));

            i2=0;

            do {

            a2[i2]=n%2;

            n=n/2;

            i2++;

            }

            while (n!=0);

            printf("\nSo N o he 2 la: ");

            t2=i2-1;

            for (j2=t2;j2>=0;j2--)

                        printf("%d",a2[j2]);

}

Bài 6. Viết chương trình đếm số ước số của số nguyên dương N.

Code mẫu

#include <stdio.h>

int main()

{

            int i,in,idem=0;

            printf("Nhap vao so nguyen: ");

            scanf("%d",&in);

            printf("Cac uoc so la: ");
			i=1;
            while(i<=in)
               {
               	 if(in%i == 0)

                {

                   printf("%d, ",i);

                    idem++;

               }
               i++;
			   }

    printf("\nSo uoc so la %d",idem);

}

Bài 7. Viết chương trình giải bài toán cổ điển sau: Vừa gà vừa có 36 con Bó lại cho tròn, đếm đủ trăm chân Hỏi có bao nhiêu gà, bao nhiêu chó?

Code mẫu

#include<stdio.h>

int main()

{
    int ga =1, cho=1;
    while ( ga < 36 )
    { 	
    cho = 1;
     while (cho < 36 )
		{
			if ((2*ga + 4*cho == 100) && (ga + cho == 36))
			printf ("Ga : %d con, Cho : %d con \n" , ga , cho);
			 cho++;
		}
		ga++;
	}
			

}

Bài 8. Viết chương trình giải bài toán cổ điển sau: Trăm trâu, trăm cỏ Trâu đứng ăn nằm Trâu nằm ăn ba, Ba trâu già ăn một Hỏi mỗi loại trâu có bao nhiêu con?

Code mẫu

#include<stdio.h>

int main()

{
	int traudung , traunam , traugia;
	traudung=1;  
	while( traudung <= 100 )
	{
		traunam =1;
		 while( traunam <= 100 ){
		 	 traugia=1;
		 	   while(traugia <= 100 ){
		 	   	if((5*traudung + 3*traunam + traugia/3 == 100) && (traugia%3 == 0) && (traudung + traunam + traugia == 100))
					printf ("Trau dung : %d con Trau nam : %d con Trau gia : %d con\n", traudung , traunam , traugia);
					traugia++;
				}
			traunam++;
		 }
		 traudung++;
	}


}

Bài 9. Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng số nguyên dương n(với n được nhập). Yêu cầu nhập lại nếu n<=0.

Code mẫu

#include<stdio.h>

int main()

{

            int n, i;

            do

            {

                        printf("Nhap N: ");

                        scanf("%d",&n);

            }while(n<=0);
			i = 1;
            while(i<=n)

            {
				
                        if(i%2 == 0)
{
	
                              i++;      continue;
}

                        printf("%d ",i);       
			i++;
            }

}

Bài 10. Viết chương trình tính n!

Code mẫu

#include<stdio.h>

int main()

{

      int n,i;

      long int gt=1;

    

      printf("Nhap so can tinh giai thua: ");

      scanf("%d",&n);
		i=2;
      while(i<=n)
{
	
           gt=gt*i;
           i++;
}

      printf("\n%d giai thua bang: %ld",n,gt);

}

Bài 11. Viết chương trình cho phép tính tổng của nhiều số(chưa biết bao nhiêu số). Nhập số 0 để kết thúc quá trình nhập.

Code mẫu

#include<stdio.h>

int main()

{

            int s=0,a,i=1;

            do

            {

                        printf("Hay nhap so thu %d: ", i);

                        scanf("%d",&a);

                        s+=a;

                        i++;

            }while(a!=0);

           

            printf("\nTong = %d",s);

}

Bài 12. Viết chương trình tìm ước chung lớn nhất(UCLN) của hai số với yêu cầu sử dụng thuật toán Euclid.

Code mẫu

#include<stdio.h>

int main()

{

    int a,b,r;

  

    printf("a = ");

    scanf("%d",&a);

 

    printf("b = ");

    scanf("%d",&b);

  

 

    while((r = (a%b)) != 0)

    {

        a = b;

            b = r;

    }

 

    printf("UCLN = %d",b);

}

Bài 13. Viết chương trình tính tổng s. với n nguyên dương được nhập vào từ bàn phím. S= 1 – 1/(1^2+2^2 ) + 1/(1^2+2^2+3^2 ) – … + 〖(-1)〗^(n+1)/(1^2+2^2+3^2+⋯+n^2 )

Code mẫu

#include<stdio.h>

#include<math.h>

float tong(int n)

{

    float s=0;

    int t=0, i;
	i = 2;
    while (i<=n)
	{
	 {

            t = t + ( i * i );

            s = s + pow( -1 , i + 1 )/t;

        }
		i++;
	}

    return s;

}

int main()

{

    int n;

 

    printf("Nhap gia tri n = ");

    scanf("%d",&n);

   

    printf("S(%d) = %f",n,tong(n));

}

Bài 14. Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng n(với n được nhập). Sao cho 15 số lẻ được in trên một dòng.

Code mẫu

#include<stdio.h>

int main()

{

            int n, i, dem=0;

            do

            {

                        printf("Nhap N: ");

                        scanf("%d",&n);

            }while(n<=0);
		i=1;
            while(i<=n)

            {

                        if(i%2 == 0)

                                   {
                                   	i++; continue;
								   }

                        printf("%d ",i);

                        dem++;

                        if(dem%15==0)

                                    printf("\n");
				i++;
            }

}

Bài 15. Viết chương trình in ra tổng các số lẻ nhỏ hơn hoặc bằng n (Với n được nhập).

Code mẫu

#include<stdio.h>

int main()

{

            long n, sum, i;

            printf("Nhap n: ");

            scanf("%ld", &n);

            sum = 0;
			i = 1;
            while ( i<=n)
{
	
                        sum+=i;
                        i+=2;
}

            printf("Tong cac so le tu 1 den n la %ld", sum);

           

}

Bài 16. Viết chương trình in ra tất cả các ước của một số n(Với n được nhập vào từ bàn phím).

Code mẫu

#include<stdio.h>

int main() {

            int i,in;

 

            printf("Nhap vao so nguyen: ");

            scanf("%d",&in);

 

            printf("Cac uoc so la: ");

 
			i=1;
            while(i<=in)
			{
	
                        if(in%i == 0) {

                                    printf("%d, ",i);

                        } i++;
			}

}

Bài 17. Viết chương trình xét xem một số n có phải là số nguyên tố không.

Code mẫu

#include<stdio.h>

#include<math.h>

int main() {

            int n, i, ngt=1;

 

            printf("Nhap n: ");

            scanf("%d",&n);

 
			i=2;
            while(i<=sqrt(n)) {

                        if (n%i==0) {

                                    ngt=0;

                        }
 i++;
            }

            if(ngt==0)

                        printf("\nSo da nhap khong phai la so nguyen to");

            else

                        printf("\nSo da nhap la so nguyen to");

}

Bài 18. Viết chương trình nhập vào một số nguyên rồi in ra tất cả các ước số của số đó.

Code mẫu

#include<stdio.h>

int main() {

            int n, i;

 

            printf("Nhap n: ");

            scanf("%d", &n);

 
			i=1;
            while( i<=n ) {

                        if(n%i==0)

 

                                    printf("\nUoc so cua n la %d",i);
i++;
            }

}

Bài 19. Viết chương trình nhập vào N số nguyên tìm số lớn nhất, số nhỏ nhất.

Code mẫu

#include<stdio.h>

int main() {

            int n, i, a[100], max, min;

            printf("Nhap so phan tu cua day N = ");

            scanf("%d",&n);
			i= 1;
            while( i<=n) {

                        printf("a[%d]: ",i);

                        scanf("%d",&a[i]);
			i++;
            }

            max=a[1];
		i = 1;
            while(i<=n) {

                        if(a[i]>max) {

                                    max=a[i];

                        }
			i++;
            }

            printf("\nSo lon nhat trong day la: %d", max);

            min=a[1];

            for(i=1; i<=n; i++) {

                        if(a[i]<min) {

                                    min=a[i];

                        }

            }

            printf("\nSo nho nhat trong day la: %d", min);

}

I, Các bài thực hành cơ bản

Bài 20. Viết chương trình tìm các số nguyên gồm 3 chữ số sao cho tích của 3 chữ số bằng tổng của 3 chữ số. Ví dụ 1*2*3 = 1+2+3.

Code mẫu

#include<stdio.h>

int main() {

            int i, a, b, c;
			i=100;
            while( i<=999 ) {

                        a = i/100;

                        b = (i%100)/10;

                        c = i%10;

                        if(a*b*c == a+b+c)

                                    printf("%d%d%d ",a,b,c);
				i++;
            }

}

Bài 21. Nhập vào giờ, phút, giây. Kiểm tra xem giờ, phút, giây đó có hợp lệ hay không, nếu hợp lệ cho biết giờ sau đó một giây là bao nhiêu. Ví dụ nhập 01:59:59, giờ sau đó 1 giây là 02:00:00.

Code mẫu

#include<stdio.h>

int main() {

          int i, h, p, s;

 

          printf("Nhap gio: ");

          scanf("%d",&h);

 

          printf("Nhap phut: ");

          scanf("%d",&p);

 

          printf("Nhap giay: ");

          scanf("%d",&s);

 

          if((h>=0 && h<=23) && (p>=0 && p<=59) && (s>=0 && s<=59)) {

                   printf("%d gio %d phut %d giay hop le",h,p,s);

                   if(s == 59) {

                             if(p == 59) {

                                      if(h == 23)

                                                printf("\nGio sau do 1 giay la 00:00:00");

                                      else

                                                printf("\nGio sau do 1 giay la %d:%d:%d",h+1,p,s);

                             } else

                                      printf("\nGio sau do 1 giay la %d:%d:%d",h,p+1,s);

                   } else

                             printf("\nGio sau do 1 giay la %d:%d:%d",h,p,s+1);

          } else

                   printf("%d gio %d phut %d giay khong hop le",h,p,s);

}
0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?

Dịch vụ code thuê

TUICOCACH.COM NHẬN ĐẶT TEXTLINK, BANNER, GP
0
Giáo sư! có thể ném gạch bên dưới nhé!x