CHƯƠNG 8 – Cu trúc lp trình trong C
Hà N i ngày 1/8/2010, Nguy n Th Thu Trang – SE – SoICT
I. Bài t p làm thêm
Bài t p 8.11. Tìm USCLN và BSCNN c a 2 s nguyên d ng nh p t bàn phím ươ
L i gi i m u:
#include <stdio.h>
void main()
{
unsigned n, m, n1, m1, uscln, bscnn;
printf("\nNhap hai vao so nguyen duong : ");
scanf("%u%u", &n, &m);
n1=n; m1=m;
// Tim USCLN
while (n1 != 0 && m1 != 0)
if (n1>m1)
n1 -= m1;
else
m1 -= n1;
if (n1 == 0)
uscln = m1;
else
uscln = n1;
// Tim BSCNN
bscnn = n * m / USCLN(n, m);
printf("\nUSCLN cua %u va %u = %u", n, m, USCLN(n,m));
printf("\nBSCNN cua %u va %u = %u", n, m, BSCNN(n,m));
getch();
}
Bài t p 8.12. Nh n vào t bàn phím tháng năm, có ki m tra đi u ki n. Đ a ra tháng ư
năm đó có bao nhiêu ngày, chú ý n u tháng và năm nh p không đúng thì yêu c uế
nh p l i. S d ng l nh switch…case
L i gi i m u:
/*Bai tap 8.12. Tinh so ngay cua 1 thang*/
#include <stdio.h>
#include <conio.h>
int thang,ngay,nam;
void main()
{
1
clrscr();
printf("Chuong trinh tinh so ngay cua mot thang\n\n");
printf("Nhap thang:");
scanf("%d",&thang);
while (thang<1 || thang>12)
{
printf("\nBan nhap khong dung!\n");
printf("Ban hay nhap lai:");
scanf("%d ",&thang);
}
printf("\nNhap nam:");
scanf("%d",&nam);
switch (thang)
{
case 4:
case 6:
case 9:
case 11: ngay=30;break;
case 2: if ((nam%4==0 && nam%100 != 0) || (nam%400 == 0))
ngay=29;
else
ngay=28;
break;
default: ngay=31;
}
printf("\nSo ngay cua thang do la %d\n",ngay);
getch();
}
Bài t p 8.13. Tìm t t c các c s c a s nguyên d ng nh p t bàn phím. x ướ ươ
ng t trang (5 s / 1 dòng, 20 dòng / 1 trang).
L i gi i m u:
/* Bai tap 8.13 - In tat ca cac uoc so cua so n */
#include <stdio.h>
#include <conio.h>
void main()
{
int n, i;
printf("Cho gia tri N = ");
scanf("%d", &n);
printf("Cac uoc so cua %d la :\n", n);
for (i=1; i<n; i++)
if ((n % i) == 0)
printf("%5d", i);
getch();
}
2
Bài t p 8.14. Nh n s nguyên d ng t bàn phím. Đ a ra k t lu n s đó có ph i là s ươ ư ế
nguyên t hay không.
L i gi i m u:
/* Bai tap 2.4 - Tinh xem so N co phai la so nguyen to khong? */
#include <stdio.h>
#include <math.h>
void main()
{
int N, i, OK = 1;
printf("\nNhap gia tri N : ");
scanf("%d", &N);
for (i=2; i<(int)sqrt(N); i++)
if (N%i == 0)
{
OK = 0;
break;
}
if (OK)
printf("\nSo %d la so nguyen to.", N);
else
printf("\nSo %d khong phai la so nguyen to.", N);
getch();
}
Bài t p 8.15: Vi t ch ng trình nh p vào s nguyên d ng h (2<h<23), sau đó in ra ế ươ ươ
các tam giác có chi u cao là h nh các hình sau: ư
* *
** ***
*** *****
**** *******
***** *********
L i gi i m u:
/* Bai tap 2.6. In hinh tam giac dac */
#include <stdio.h>
#include <conio.h>
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--)
3
printf(" ");
for (j=0; j<i*2+1; j++)
printf("*");
printf("\n");
}
getch();
}
Bài t p 8.16: In ra dãy s Fibonaci < N (N<=10.000)
/* Bai tap 2.7. In day so Fibonaci */
#include <stdio.h>
void main()
{
int n, i, fib1 = 1, fib2 = 1, fib = 2;
printf("\nNhap gia tri N : ");
scanf("%d", &n);
printf("%d %d ", fib1, fib2);
while (fib1+fib2 < n)
{
fib = fib1 + fib2;
printf("%d ", fib);
fib2 = fib1;
fib1 = fib;
}
getch();
}
II. Bài t p v n
Bài t p 8.21. Tính n! (n<=10). Đ a ra 2 l i gi i t ng ng v i vi c s d ng for ho c ư ươ
while.
L i gi i m u:
/*Bai tap 8.21. Tinh n! */
#include<stdio.h>
#include<conio.h>
long n,i,gt;
void main()
{
clrscr();
printf("Chuong trinh tinh n!\n\n");
printf("Ban hay nhap vao mot so tu nhien n:");
scanf("%d",&n);
while (n<0)
{
printf("\nSo vua nhap khong thoa man, ban hay nhap lai:");
scanf("%d",&n);
}
4
gt=1;
i=1;
if (n>0) while (i<=n) gt=gt*i++;
printf("\nn!=%d\n",gt);
getch();
}
Ho c:
void main()
{
int n, start, i;
unsigned long gthua = 1;
printf("\nNhap gia tri N : ");
scanf("%d", &n);
if (n%2 == 0)
start = 2;
else
start = 1;
for (i=start; i<=n; i = i+2)
gthua *= i;
printf("\n%d!! = %ld", n, gthua);
getch();
}
Bài t p 8.22. Đ a ra t t c các s nguyên t t 1 đ n N (1<N<=10000). Cý x ư ế
ng t trang.
L i gi i m u:
#include <stdio.h>
#include <conio.h>
#include <math.h>
unsigned long N,i,j,dk;
void main()
{
clrscr();
printf("Chuong trinh viet cac so nguyen to tu 1 den N (N>1)\n\n");
printf("Ban hay nhap N:");
scanf("%d",&N);
printf("\nCac so nguyen to tu 1 den N la:");
i=2;
dk=1;
while (i<=N)
{
if (dk==1) printf("%d,",i);
dk=1;
i=i+1;
j=2;
while (j<=sqrt(i))
{
if (i%j==0)
5