bai tap c1

36
Bài tp Thc hành Lp trình C cơ bn – GVHD: Ninh Văn Anh - Trang 1 - BÀI TP CHƯƠNG 1 BÀI TP 1: mi BN LÀM QUEN VI Turbo C #include<stdio.h> #include <conio.h> main() { printf(" Chao ban !"); /* Co trong tap stdio.h */ printf("Moi ban lam quen voi Turbo C"); getch(); /* Dung man hinh de xem ket qua */ } Bài tp 2: Câu lnh xoá màn hình #include<conio.h> main() { clrscr(); /* Cau lenh xoa man hinh */ cprintf(" Chao ban !\n"); /* Co trong tap conio.h */ cprintf("Moi ban lam quen voi Turbo C"); getch(); } BÀI TP: Mi làm quen vi C #include<conio.h> main() { clrscr(); cprintf(" Chao ban !\n\r"); /* Them dinh dang \r de ve dau dong */ cprintf("Moi ban lam quen voi Turbo C"); getch(); } bài Tp: Cho biết bn tên gì #include<stdio.h> main() { char ten[150]; printf("Cho biet ten cua ban \n"); scanf("%s",ten); printf("Chao ban :%s\n",ten); getch(); } Bài tp: Hi thoi vTurbo C #include<conio.h> main() { clrscr(); printf(" HOI THOAI VE TURBO C \n"); printf("-SON : Nghe noi hoc Turbo C kho lam phai khong ?\n"); printf("-HA : Cung nghe noi vay, nhung khong biet co dung khong ? \n"); printf("-XA : Thi cung tuong tu nhu Pascal vay thoi \n"); printf("-TAC : Ban da hoc roi phai khong, noi cho nghe di nao \n"); printf("-XA : Cung thuoc loai lap trinh cau truc nhung chay nhanh hon nhieu \n"); getch(); } Bài tp: Hin thni dung đon thơ Ao thu #include<conio.h> main() { clrscr(); cprintf(" AO THU \n\r"); cprintf("\n"); cprintf("Ao thu lanh leo nuoc trong veo\n\r"); cprintf("Mot chiec thuyen con be teo teo\n\r"); cprintf("Song biec theo lan hoi gon ty\n\r"); cprintf("La vang truoc gio se dua veo\n\r"); cprintf("\n\r"); cprintf(" NGUYEN KHUYEN"); getch(); } Bài tp: CLN & BCNN #include <stdio.h> unsigned USCLN (unsigned n, unsigned m) { while (n != 0 && m != 0) if (n>m) n -= m; else m -= n; if (n == 0) return m; else return n; } unsigned BSCNN (unsigned n, unsigned m) { return n * m / USCLN(n, m); } void main() { unsigned n, m; printf("\nNhap hai vao so nguyen duong : "); scanf("%u%u", &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();

Upload: catcomay

Post on 18-Apr-2015

62 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 1 -

BÀI TẬP CHƯƠNG 1 BÀI TẬP 1: mời BẠN LÀM QUEN V ỚI Turbo C #include<stdio.h> #include <conio.h> main() { printf(" Chao ban !"); /* Co trong tap stdio.h */ printf("Moi ban lam quen voi Turbo C"); getch(); /* Dung man hinh de xem ket qua */ } Bài tập 2: Câu lệnh xoá màn hình #include<conio.h> main() { clrscr(); /* Cau lenh xoa man hinh */ cprintf(" Chao ban !\n"); /* Co trong tap conio.h */ cprintf("Moi ban lam quen voi Turbo C"); getch(); } BÀI TẬP: Mới làm quen với C #include<conio.h> main() { clrscr(); cprintf(" Chao ban !\n\r"); /* Them dinh dang \r de ve dau dong */ cprintf("Moi ban lam quen voi Turbo C"); getch(); } bài Tập: Cho biết bạn tên gì #include<stdio.h> main() { char ten[150]; printf("Cho biet ten cua ban \n"); scanf("%s",ten); printf("Chao ban :%s\n",ten); getch(); } Bài tập: Hội thoại về Turbo C #include<conio.h> main() { clrscr(); printf(" HOI THOAI VE TURBO C \n"); printf("-SON : Nghe noi hoc Turbo C kho lam phai khong ?\n"); printf("-HA : Cung nghe noi vay, nhung khong biet co dung khong ? \n");

printf("-XA : Thi cung tuong tu nhu Pascal vay thoi \n"); printf("-TAC : Ban da hoc roi phai khong, noi cho nghe di nao \n"); printf("-XA : Cung thuoc loai lap trinh cau truc nhung chay nhanh hon nhieu \n"); getch(); } Bài tập: Hi ển thị nội dung đoạn thơ Ao thu #include<conio.h> main() { clrscr(); cprintf(" AO THU \n\r"); cprintf("\n"); cprintf("Ao thu lanh leo nuoc trong veo\n\r"); cprintf("Mot chiec thuyen con be teo teo\n\r"); cprintf("Song biec theo lan hoi gon ty\n\r"); cprintf("La vang truoc gio se dua veo\n\r"); cprintf("\n\r"); cprintf(" NGUYEN KHUYEN"); getch(); } Bài tập: ỨCLN & BCNN #include <stdio.h> unsigned USCLN (unsigned n, unsigned m) { while (n != 0 && m != 0) if (n>m) n -= m; else m -= n; if (n == 0) return m; else return n; } unsigned BSCNN (unsigned n, unsigned m) { return n * m / USCLN(n, m); } void main() { unsigned n, m; printf("\nNhap hai vao so nguyen duong : "); scanf("%u%u", &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();

Page 2: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 2 -

} #include <stdio.h> main() { int a,b,tong,hieu,tich; /*Khai bao 4 bien so nguyen */ float thuong; /* Khai bao bien so thuc */ clrscr(); /* Lenh xoa man hinh */ printf("Nhap so thu nhat : "); scanf("%d",&a); /* Lenh nhap so lieu tu ban phim va gan cho bien */ printf("Nhap so thu hai : "); scanf("%d",&b); tong = a+b; hieu = a-b; tich= a*b; thuong= (float)a/b; /* Chuyen doi kieu so nguyen sang so thuc */ printf("\n"); printf("Tong cua 2 so a=%d va b=%d la=%d\n",a,b,tong); printf("Hieu cua 2 so a=%d va b=%d la=%d\n",a,b,hieu); printf("Tich cua 2 so a=%d va b=%d la=%d\n",a,b,tich); printf("Thuong cua 2 so a=%d va b=%d la=%f\n",a,b,thuong); getch(); } /* Chuong trinh Tinh chu vi va dien tich hinh tron */ #include "stdio.h" main() { float r,c,s; printf("- Cho biet ban kinh r= "); scanf("%f",&r); c=6.28*r; s=3.14*r*r; /*In ket qua tren 3 dong*/ clrscr(); printf(" KET QUA TINH CHU VI DIEN TICH HINH TRON \n"); printf(" -Ban kinh hinh tron r = %8.2f met \n",r); printf(" -Chu vi hinh tron c = %8.2f met \n",c); printf(" -Dien tich hinh tron s = %8.2f met vuong \n",s); getch(); } /* Bai tap -Tinh can bac hai theo phep lap Newton */ #include <stdio.h>

#include <math.h> void main() { double a, xn, ketqua; printf("\nNhap vao so muon tinh can bac hai : "); scanf("%lf", &a); xn = (a+1)/2; do { ketqua = xn; xn = 0.5 * (xn + a/xn); } while (fabs(xn-ketqua) > 0.0001); printf("\nKet qua = %lf", xn); getch(); } /* Bài tập – In bảng cửu chương */ #include <stdio.h> #include <conio.h> #include <string.h> void main() { int i, j; char chuoi[] = "B A N G C U U C H U O N G"; char ten[10][5] = {"","","Hai", "Ba", "Bon", "Nam", "Sau", "Bay", "Tam", "Chin"}; clrscr(); textcolor(YELLOW); gotoxy((80 - strlen(chuoi)) / 2, 1); cprintf("%s\n\n", chuoi); for (i=2; i<=9; i++) { gotoxy(10*(i-2) + (10 - strlen(ten[i]))/2, 4); textcolor(i); cprintf("%s", ten[i]); } for (j=1; j<=10; j++) for (i=2; i<=9; i++) { gotoxy(10*(i-2) + 1, j+4); textcolor(i); cprintf("%dx%2d = %2d", i, j, i*j); } getch(); } /* Bài tập - In dãy số Fibonanci */ #include <stdio.h> void main() { int n, i, fib1 = 1, fib2 = 1, fib = 2; printf("\nNhap gia tri N : "); scanf("%d", &n);

Page 3: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 3 -

printf("%d %d ", fib1, fib2); while (fib1+fib2 < n) { fib = fib1 + fib2; printf("%d ", fib); fib2 = fib1; fib1 = fib; } getch(); } Bài tập: Nhập vao 10 phan tu nguyen cua day, Kiểm tra dãy giảm #include <stdio.h> void main() { int a[10], i; printf("\nNhap vao 10 phan tu nguyen cua day : "); for (i=0; i<10; i++) scanf("%d", &a[i]); i = 1; while (a[i] <= a[i-1] && i<10) i++; if (i==10) printf("Day da cho la day giam"); else printf("Day da cho khong la day giam"); getch(); } /* Bai tap - Cho biet goc thuoc goc vuong nao */ #include <stdio.h> void main() { int goc; printf("\nNhap vao gia tri goc : "); scanf("%d", &goc); printf("Goc do thuoc goc vuong thu %d", (goc/90)%4 + 1); getch(); } /* Bai tap - In số Hex tương ứng với một số nguyên dương*/ #include <stdio.h> void main() { unsigned number; char hex[] = "0123456789ABCDEF"; printf("\nNhap vao mot gia tri nguyen duong 16 bit : ");

scanf("%u", &number); printf("Gia tri Hex tuong ung = %c%c%c%c", hex[number/0x1000], hex[(number/0x100)%0x10], hex[(number/0x10)%0x10], hex[number%0x10]); getch(); } Bài tập/* Giải hệ phương trình bậc nhất */ #include <stdio.h> void main() { int a, b, c, d, e, f, dthuc; float x, y; printf("\nNhap vao cac he so a,b,c,d,e,f : "); scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f); dthuc = b*d - e*a; if (dthuc != 0) { y = (float)(c*d-a*f)/dthuc; x = (float)(b*f-c*e)/dthuc; printf("Nghiem x = %f, y = %f", x, y); } else printf("\nHe phuong trinh vo ngiem."); getch(); } /* Tim nhung gia tri nguyen x, y, z thoa xý + yý = zý */ #include <math.h> void main() { long x, y, z, count = 0; for (x=1; x<100; x++) for (y=1; y<100; y++) { z = sqrt(x*x+y*y); if (z*z == x*x + y*y) { printf("\n%6ld %6ld %6ld", x, y, z); count++; } } printf("\nTong cong co %ld cap so thoa man.", count); getch(); } BÀI TẬP Tính giai thừa. #include <stdio.h> #include <math.h> #include <conio.h> double giaithua(double n)

Page 4: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 4 -

{ double i, ketqua=1; for (i=2; i<=n; i++) ketqua *= i; return ketqua; } void main() { double ketqua, epsilon, x, n = 1; printf("\nNhap gia tri x (radian) : "); scanf("%lf", &x); ketqua = x; do { epsilon = pow(x, 2*n+1) / giaithua(2*n+1); ketqua += pow(-1, n) * epsilon; n++; } while (fabs(epsilon) > 0.0001); printf("\nKet qua tinh theo cong thuc = %10.8lf", ketqua); printf("\nKet qua tinh theo ham = %10.8lf", sin(x)); getch(); } Bài tập /* In chuỗi theo các từ, mỗi từ một dòng */ #include <stdio.h> void main() { char s[50]; int i, len; printf("\nNhap vao mot chuoi : "); gets(s); len = strlen(s); i = 0; while (i<len) { while (s[i] == ' ' && i<len) i++; while (s[i] != ' ' && i<len) putc(s[i++], stdout); putc('\n', stdout); } getch(); } BT/* Cau truc va cac ham thao tac len so phuc */ #include <math.h>

typedef struct tagcomplex { float thuc, ao; } complex; complex tong(complex a, complex b) { complex c; c.thuc = a.thuc + b.thuc; c.ao = a.ao + b.ao; return c; } complex hieu(complex a, complex b) { complex c; c.thuc = a.thuc - b.thuc; c.ao = a.ao - b.ao; return c; } complex tich(complex a, complex b) { complex c; c.thuc = a.thuc*b.thuc - a.ao*b.ao; c.ao = a.thuc*b.ao + a.ao*b.thuc; return c; } complex thuong(complex a, complex b) { complex c; float tongbp; tongbp = b.thuc*b.thuc + b.ao*b.ao; c.thuc = (a.thuc*a.ao + b.thuc*b.ao)/tongbp; c.ao = (a.ao*b.thuc - a.thuc*b.ao)/tongbp; return c; } float argument(complex a) { return acos(a.thuc/sqrt(a.thuc*a.thuc + a.ao*a.ao)); } float modul(complex a) { return sqrt(a.thuc*a.thuc + a.ao*a.ao); } void print_complex(complex a) { printf("%.2f + %.2fi", a.thuc, a.ao); } void main() { complex a, b, c; printf("\nNhap he so thuc va phuc cua A : ");

Page 5: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 5 -

scanf("%f%f", &a.thuc, &a.ao); printf("\nNhap he so thuc va phuc cua B : "); scanf("%f%f", &b.thuc, &b.ao); printf("\nSo phuc A = "); print_complex(a); printf("\nSo phuc B = "); print_complex(b); printf("\nTong cua chung = "); c = tong(a, b); print_complex(c); printf("\nHieu cua chung = "); c = hieu(a, b); print_complex(c); printf("\nTich cua chung = "); c = tich(a, b); print_complex(c); printf("\nThuong cua chung = "); c = thuong(a, b); print_complex(c); printf("\nArgument cua a = %f", argument(a)); printf("\nModul cua a = %f", modul(a)); getch(); } /* Bài tập - Tim số dòng, số từ, số ký tự nhập từ bàn phím */ #include <stdio.h> void main() { int sokytu=0, dautu = 0, sotu=0, sodong=1; char c; puts("\n"); do { c = getchar(); if (c != '\n' && c != EOF) sokytu++; if (isalnum(c) && dautu == 0) { sotu++; dautu=1; } if (!isalnum(c) && dautu == 1) dautu = 0; if (c == '\n') sodong++; } while (c != EOF); printf("\n\nSo dong : %d", sodong); printf("\nSo tu : %d", sotu); printf("\nSo ky tu : %d", sokytu); getch(); }

Chuoi bien thanh số #include <stdio.h> void main() { char s[100]; int i; printf("\nNhap vao mot chuoi : "); gets(s); i = 0; while (s[i] != 0) { if (isalpha(s[i])) if (s[i] < 97) s[i] += 32; else s[i] -= 32; i++; } printf("\nChuoi bien thanh : %s", s); getch(); } /* BT – Tìm các số hoàn hảo nhỏ hơn N */ #include <stdio.h> void main() { int n, i, j, tong; printf("\nCHo biet gia tri N : "); scanf("%d", &n); for (i=2; i<=n; i++) { tong = 1; for (j=2; j<=i/2; j++) if (i%j == 0) tong += j; if (tong == i) printf("\n%d", i); } getch(); } /* BT – In t ất cả các ước số của số 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);

Page 6: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 6 -

getch(); } /* BT – Tìm số từ trong chuỗi */ #include <stdio.h> #include <string.h> #include <conio.h> #pragma warn -pia char *trim(char *chuoi) { char *p; while (p = strstr(chuoi, " ")) memmove(p, p+1, strlen(chuoi) - (p - chuoi)); if (chuoi[0] == ' ') memmove(chuoi, chuoi+1, strlen(chuoi) - 1); if (chuoi[strlen(chuoi)-1] == ' ') chuoi[strlen(chuoi)-1] = 0; return chuoi; } void main() { char chuoi[125]; int i = 0, count = 0; printf("\nNhap chuoi mau : "); textattr(0x1e); gets(chuoi); trim(chuoi); if (strlen(chuoi)) { while(chuoi[i] != 0) if (chuoi[i++] == ' ') count++; count++; } printf("\nSo tu co trong chuoi : %d", count); getch(); } /* Tong hai so chi gio */ void main() { int gio1, phut1, giay1, gio2, phut2, giay2, gio3 = 0, phut3 = 0, giay3; printf("\nNhap vao gia tri chi gio thu nhat (hh:mm:gg): "); scanf("%d:%d:%d", &gio1, &phut1, &giay1); printf("\nNhap vao gia tri chi gio thu hai (hh:mm:gg): "); scanf("%d:%d:%d", &gio2, &phut2, &giay2); giay3 = giay1 + giay2; if (giay3 >=60)

{ giay3 %=60; phut3 = 1; } phut3 += phut1 + phut2; if (phut3 >=60) { phut3 %=60; gio3 = 1; } gio3 += gio1 + gio2; gio3 %= 24; printf("\nTong hai gia tri gio tren = %2d:%2d:%2d", gio3, phut3, giay3); getch(); } /* Bai tap - Tinh so PI voi sai so 0.0001 */ #include <stdio.h> #include <math.h> void main() { double PI = 1.0, n = 3.0; int i = 0; while (1.0/n > 0.0001) { if (i%2 == 0) PI -= 1.0/n; else PI += 1.0/n; n += 2; i++; } PI *= 4.0; printf("\nSo PI tinh toan duoc la : %lf", PI); printf("\nSo M_PI trong C = %lf", M_PI); getch(); } /* Bai tap - Ham tinh to hop chap K cua N */ #include <stdio.h> #include <conio.h> unsigned long giaithua(int n) { unsigned long ketqua = 1; int i; for (i=2; i<=n; i++) ketqua *= i; return ketqua; } unsigned long to_hop_chap(int k, int n) {

Page 7: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 7 -

return giaithua(n) / (giaithua(k) * giaithua(n-k)); } void main() { int n, k; printf("\nNhap vao gia tri N va K : "); scanf("%d%d", &n, &k); printf("Top hop chap %d cua %d = %lu", k, n, to_hop_chap(k, n)); getch(); } /* Bai tap - Tinh tong binh phuong hai so nguyen */ #include <stdio.h> void main() { int a, b; printf("\nNhap hai so nguyen : "); scanf("%d%d", &a, &b); printf("Tong %dý + %dý = %d", a, b, a * a + b * b); getch(); } /* Cuon dong chu ngang man hinh */ #include <stdio.h> #include <conio.h> void main() { char qcao[81], i=0, len; textattr(0x1e); printf("\nNhap vao dong quang cao : "); gets(qcao); len = strlen(qcao); while (!kbhit()) { movetext(2, 1, 80, 1, 1, 1); gotoxy(80, 1); cprintf("%c", qcao[i++]); delay(100); i %= len; } getch(); } /* Bai tap 1_100 - Tinh thu cua ngay */ #include <stdio.h> struct date { int month;

int day; int year; } date_1; long int funct1 (int y,int m) { long int result; if ( m <= 2 ) y -= 1; result = y; return (result); } long int funct2 (int m) { long int result; if ( m <= 2 ) result = m + 13; else result = m + 1; return(result); } long int day_count (int m, int d, int y) { long int number; number = 1461 * funct1(y,m) / 4 + 153 * funct2(m) / 5 + d; return (number); } void main () { long int number_of_days1; int day_of_week; printf ("Nhap vao mot ngay (dd mm yyyy), vd 12 03 1999 \n"); scanf ("%d %d %d", &date_1.day, &date_1.month, &date_1.year); number_of_days1 = day_count (date_1.month, date_1.day, date_1.year); printf ("\nNgay la : " ); day_of_week = (number_of_days1 - 621049) % 7; switch (day_of_week) { case 0 : printf ("Chu Nhat,"); break; case 1 : printf ("Thu Hai,"); break; case 2 : printf ("Thu Ba,"); break;

Page 8: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 8 -

case 3 : printf ("Thu Tu,"); break; case 4 : printf ("Thu Nam,"); break; case 5 : printf ("Thu Sau,"); break; case 6 : printf ("Thu Bay,"); break; } getch(); } /* Bai tap -Li ệt kê tất cả các hoán vị của n phần tử */ #include <stdio.h> #define MAX 10 int mang[MAX], n; void swap (int *x, int *y) { int tmp; tmp = *x; *x = *y; *y = tmp; } void hoanvi(int k) { int j; if (k==1) { printf("\n"); for (j=0; j<n; j++) printf("%d ", mang[j]); } else for (j=k-1; j>=0; j--) { swap(&mang[k-1], &mang[j]); hoanvi(k-1); swap(&mang[j], &mang[k-1]); } } void main() { int i; printf("\nCho biet so phan tu (N < 10) : "); scanf("%d", &n); for (i=0; i<n; i++)

mang[i] = i; hoanvi(n); getch(); } /*Chuong trinh tinh x luy thua y*/ #include"stdio.h" #include "math.h" main() { double pow(); /*khai bao ham pow kieu double*/ double x,y,z; /* khai bao 3 bien kieu double*/ clrscr(); printf("- Cho biet gia tri cua X= "); scanf("%lf",&x); printf("- Cho biet gia tri cua Y= "); scanf("%lf",&y); z=pow(x,y); /* Tinh x luy thua y va gan cho z */ /* In ket qua */ clrscr(); printf("KET QUA CUA CHUONG TRINH TINH X LUY THUA Y \n"); printf("- X= %8.2f \n",x); printf("- Mu Y= %8.2f \n",y); printf("* X luy thua y = %8.2f",z); getch(); }

Page 9: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 9 -

BÀI TẬP CHƯƠNG 2 #include <stdio.h> #include <ctype.h> #include <conio.h> #include <string.h> void main() { FILE *fp; char sf[50], chuoi[250]; int len, i; long count = 0; printf("\nNhap vao ten tap tin : "); scanf("%s", sf); if ((fp = fopen(sf, "r")) == NULL) fprintf(stderr, "\nKhong the mo tap tin %s", sf); else { while (fgets(chuoi, 250, fp) != NULL) { len = strlen(chuoi) - 1; i=0; do { while (chuoi[i] == ' ' && i <= len-1) i++; if (i<=len-1) { while (isalnum(chuoi[i])) i++; count++; } } while (i <= len-1); } printf("\nSo ky tu trong %s la %ld", sf, count); } getch(); } /* Mo ta su khac nhau ve vi tri ca1c bien */ #include<stdio.h> main() { int i=3,j=5; { int i=2,j=4; /* Cac bien nay chi ton tai trong khoi */ printf("KET QUA IN RA\n"); printf("-Gia tri i trong khoi =%d\n",i);

printf("-Gia tri j trong khoi =%d\n",j); } printf("-Gia tri i ngoai khoi =%d\n",i); printf("-Gia tri j ngoai khoi =%d\n",j); getch(); } /* Minh hoa cách dùng Các hằng */ #include"stdio.h" /* Khong can khai bao cung duoc */ #include"stdlib.h" /* Khong can khai bao cung duoc */ main() { printf("\nHang so thuc :%10.2f%10.2f%10.2f%10.2f", 14689.e-4,-0.125666E3,23468E-2,1e4); printf("\nHang nguyen :%10ld%10ld%6ld%6ld%6d", 45639846l,45639846,35L,35,-123); printf("\nHang nguyen he 8 va he 16 :%7d %7d %7d %7d %7d", 0345,0xa9,0xA9,0Xa9,0XA9); /* In hang ky tu dung dac ta %[fw]c */ printf("%c%c%6c%6c%6c%6c%6c",'\n','\n','a','\141', '\'','\"','\\'); /* In chuoi ky tu dac ta */ printf("\n\n%10c%10s",'',"Chuc may man"); getch(); } /* Dem so lan xuat hien cac ky tu trong chuoi */ #include <stdio.h> #include <ctype.h> void main() { char chuoi[80]; int i = 0, count = 0; printf("\nNhap vao mot chuoi bat ky : "); gets(chuoi); while (chuoi[i] != 0) { if (isalpha(chuoi[i++])) count++; } printf("So ky tu trong chuoi = %d", count); getch();

Page 10: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 10 -

} #include <stdio.h> void main() { int num, tram, chuc, donvi, count = 0; for (num = 100; num < 1000; num++) { donvi = num % 10; chuc = (num / 10) % 10; tram = num / 100; if (donvi * donvi * donvi + chuc * chuc * chuc + tram * tram * tram == num) { printf("\nSo %d thoa man", num); count++; } } printf("\nTong cong co %d so thoa man yeu cau", count); } /* Bai tap - Bai toan Ancarokhi */ #include <stdio.h> void main() { int dai, rong; printf("\nBai toan Ancarokhi : Tim dien tich hinh chu nhat co chieu dai gap hai"); printf("\nchieu rong va dien tich = chu vi"); for (dai = 1; dai < 100; dai ++) for (rong=1; rong < 100; rong++) if (dai == 2 * rong && (dai + rong)*2 == dai*rong) printf("\nDai = %d; Rong = %d", dai, rong); getch(); } BT /* Chuong trinh su dung cac ky tu dieu khien */ #include<stdio.h> main() { clrscr(); printf("\n Day la dau nhay don \'Turbo C 2.0 \'"); printf("\n"); printf("\n Va day la dau nhay kep \"Turbo C\" "); printf("\n"); printf("\n Duong dan vao file stdio.h la \"C:\\TC\\INCLUDE\\stdio.h\""); printf("\n\n File Edit Run Compile Project Debug Break/watch");

printf("\n EDIT \n\b COMPILE \n\b DEBUG \n\b WATCH "); printf("\n EDIT \a COMPILE \a DEBUG \a WATCH "); getch(); } BT ma Ascii #include"stdio.h" main() { clrscr(); cprintf(" Day la nua tren dau tich phan : ma Ascii ," "he 16 la F4 \xF4 \n"); cprintf("\n\r\ Day la nua duoi dau tich phan : ma Ascii," "he 16 la F5 \xF5 \n"); cprintf("\n\r Day la ca dau tich phan "); cprintf("\n\r"); cprintf(" \xF4"); /*tao nguyen dau tich phan */ cprintf("\n\b\xF5"); getch(); } BT kiểm tra ký tự #include"stdio.h" char c=97; main() { clrscr(); printf("\nc=%c\t c=%d",c,c); getch(); } BẢNG ĐỔI NHI ỆT ĐỘ FRENHEIT RA CELSIUS main() { int thap,cao,khoang; float fahr,celsius; thap=0; cao=320; khoang=20; fahr=thap; clrscr(); printf("BANG DOI DO FRENHEIT RA CELSIUS\n"); printf("\n"); printf("==============================\n"); printf("| Frenheit | Celsius |\n"); printf("------------------------------\n"); while(fahr <= cao) /* Lenh vong lap,se hoc o chuong 4 */ { celsius=(5.0/9)*(fahr-32.0);

Page 11: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 11 -

printf("| %4.0f | %6.1f |\n",fahr,celsius); fahr=fahr+khoang; } printf("==============================\n"); getch(); } BÀI TẬP CHƯƠNG 3 main() { int i; clrscr(); printf("\nNhap so he 10 la = "); scanf("%d",&i); printf("\nChuyen sang he 8 la = %o",i); printf("\nChuyen sang he 16 la = %x",i); getch(); } /* Vi du ve cac phep toan so hoc */ main() { int i=10,j=4,x1,k; float x; k=i+j; clrscr(); printf("\nLuc dau ban co 2 so nguyen i=10, j=4\n\n"); printf("Tong cua 2 so nguyen = %d\n\n",k); x=i; printf("Gan tri cua i ( kieu int ) cho x ( kieu float ) thi X= %f\n\n",x); x1=i/j; printf("Thuong so cua ( int ) i/j = %d\n\n",x1); x=(float)i/j; printf("Thuong so cua (loat) i/j = %f\n\n",x); k=i%j; printf("Du so cua phep chia nguyen = %d\n\n",k); x=1.5;i=5; printf("Gan x=1.5 va i=5 Tong cua 2 so =%f\n",x+i); getch(); } /* Phep toan quan he */ main() { int i,j; clrscr(); printf("\nNhap so thu nhat = "); scanf("%d",&i); printf("\nNhap so thu hai = ");

scanf("%d",&j); printf("\nSo %d > %d : %d ",i,j,i>j); printf("\nSo %d < %d : %d ",i,j,i<j); printf("\nSo %d >= %d : %d ",i,j,i>=j); printf("\nSo %d <= %d : %d ",i,j,i<=j); printf("\nSo %d != %d : %d ",i,j,i!=j); printf("\nSo %d == %d : %d ",i,j,i==j); getch(); } /* Phep toan luan ly */ main() { int i,j; clrscr(); printf("\nNhap so thu nhat = "); scanf("%d",&i); printf("\nNhap so thu hai = "); scanf("%d",&j); printf("\nSo %d co NOT %d : %d ",i,i,!i); printf("\nSo %d co NOT %d : %d ",j,j,!j); printf("\nSo %d AND %d : %d ",i,j,i&&j); printf("\nSo %d OR %d : %d ",i,j,i||j); getch(); } /* Phep toan xu ly tren bit */ #include<stdio.h> main() { int i,j; clrscr(); printf("\nNhap so thu nhat (i) = "); scanf("%d",&i); printf("\nNhap so thu hai (j) = "); scanf("%d",&j); printf("\nPhep ~%d : %d ",i,~i); printf("\nSo %d & %d : %d (He 10)",i,j,i&j); printf("\nSo %d & %d : %o (He 8)",i,j,i&j); printf("\nSo %d & %d : %X (He 16)",i,j,i&j); printf("\nSo %d | %d : %d (He 10)",i,j,i|j); printf("\nSo %d | %d : %o (He 8)",i,j,i|j); printf("\nSo %d | %d : %X (He 16)",i,j,i|j); printf("\nSo %d ^ %d : %d (He 10)",i,j,i^j); printf("\nSo %d ^ %d : %o (He 8)",i,j,i^j); printf("\nSo %d ^ %d : %X (He 16)",i,j,i^j); getch(); }

Page 12: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 12 -

/* Bai tap - 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(); } /* Phep toan dich trai */ main() { int i,j,n; clrscr(); printf("\nNhap mot so nguyen = "); scanf("%d",&i); printf("\nCan dich trai may bit= "); scanf("%d",&n); j=i<<n; printf("\nSo %d dich trai %d bit co tri (He 10) la = %d",i,n,j); printf("\nSo %d dich trai %d bit co tri (He 8 ) la = %o",i,n,j); printf("\nSo %d dich trai %d bit co tri (He 16) la = %X",i,n,j); getch(); } /* Phep toan dich phai kieu unsigned */ main() { unsigned i,j,n; clrscr(); printf("\nNhap mot so nguyen = "); scanf("%d",&i); printf("\nCan dich phai may bit= "); scanf("%d",&n);

j=i>>n; printf("\nSo %d dich trai %d bit co tri (He 10) la = %d",i,n,j); printf("\nSo %d dich trai %d bit co tri (He 8 ) la = %o",i,n,j); printf("\nSo %d dich trai %d bit co tri (He 16) la = %X",i,n,j); getch(); } /* Phep toan dich phai kieu signed */ main() { int i,j,n; clrscr(); printf("\nNhap mot so nguyen = "); scanf("%d",&i); printf("\nCan dich phai may bit= "); scanf("%d",&n); j=i>>n; printf("\nSo %d dich trai %d bit co tri (He 10) la = %d",i,n,j); printf("\nSo %d dich trai %d bit co tri (He 8 ) la = %o",i,n,j); printf("\nSo %d dich trai %d bit co tri (He 16) la = %X",i,n,j); getch(); } /*Hay du doan ket qua cua chuong trinh sau */ main() { int a=4,b=6,n; clrscr(); n=a+b; printf("a=%d\tb=%d\tn=%d\n",a,b,n); n=++a +b; printf("a=%d\tb=%d\tn=%d\n",a,b,n); n=a++ +b; printf("a=%d\tb=%d\tn=%d\n",a,b,n); n=--a +b; printf("a=%d\tb=%d\tn=%d\n",a,b,n); n=a-- +b; printf("a=%d\tb=%d\tn=%d\n",a,b,n); n=a+b; printf("a=%d\tb=%d\tn=%d\n",a,b,n); getch(); } /* Phep toan dieu kien */ main() { int a,b; clrscr();

Page 13: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 13 -

printf("\nNhap so thu nhat= "); scanf("%d",&a); printf("\nNhap so thu hai = "); scanf("%d",&b); printf("\nSo lon hon trong 2 so vua nhap la so %d ",(a>b) ? a:b); getch(); } /* Phan so */ #include <stdio.h> int USCLN(int a, int b) { a = abs(a); b = abs(b); while (a != 0 && b != 0) if (a > b) a -= b; else b -= a; if (a == 0) return b; else return a; } int BSCNN(int a, int b) { return a * b / USCLN(a, b); } typedef struct tagphanso { int tuso, mauso; } PHANSO; PHANSO uocluoc(PHANSO a) { PHANSO c; c.tuso = a.tuso / USCLN(a.tuso, a.mauso); c.mauso = a.mauso / USCLN(a.tuso, a.mauso); return c; } PHANSO cong(PHANSO a, PHANSO b) { PHANSO c; c.tuso = a.tuso * b.mauso + a.mauso * b.tuso; c.mauso = a.mauso * b.mauso; c = uocluoc(c); return c; }

PHANSO tru(PHANSO a, PHANSO b) { PHANSO c; c.tuso = a.tuso * b.mauso - a.mauso * b.tuso; c.mauso = a.mauso * b.mauso; c = uocluoc(c); return c; } PHANSO nhan(PHANSO a, PHANSO b) { PHANSO c; c.tuso = a.tuso * b.tuso; c.mauso = a.mauso * b.mauso; c = uocluoc(c); return c; } PHANSO chia(PHANSO a, PHANSO b) { PHANSO c; c.tuso = a.tuso * b.mauso; c.mauso = a.mauso * b.tuso; c = uocluoc(c); return c; } void print(PHANSO a) { printf("%d/%d", a.tuso, a.mauso); } void main() { PHANSO a, b, c; printf("\nNhap phan so a : "); scanf("%d%d", &a.tuso, &a.mauso); printf("\nNhap phan so b : "); scanf("%d%d", &b.tuso, &b.mauso); printf("\nToi gian a ta duoc : "); a = uocluoc(a); print(a); printf("\nToi gian b ta duoc : "); b = uocluoc(b); print(b); printf("\nTong cua hai phan so = "); c = cong(a, b); print(c); printf("\nHieu cua hai phan so = "); c = tru(a, b); print(c);

Page 14: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 14 -

printf("\nTich cua hai phan so = "); c = nhan(a, b); print(c); printf("\nThuong cua hai phan so = "); c = chia(a, b); print(c); getch(); } Bài tập /* Du doan ket qua truoc khi chay chuong trinh */ main() { clrscr(); printf("\n1.5*(11/3)=%6.2f\n1.5*11/3=%6.2f",1.5*(11/3),1.5*11/3); printf("\n(11/3)*1.5=%6.2f\n11/3*1.5=%6.2f",(11/3)*1.5,11/3*1.5); printf("\n11/3+1.5 =%6.2f",11/3+1.5); printf("\n\nGia tri cua quan he 3 > 7 la :%3d",3>7); printf("\n\nGia tri cua quan he 7 < 3 la : %3d",7>3); printf("\nGia tri cua phep toan 3&&7 la : %3d",3&&7); { int x=10,y=11; /* khong than trong khi dung phep toan tang giam */ printf("\n\nKhi x=10 va y=11 thi cau lenh"); printf("\ printf(\"\\n\\n%6 d\\n%6 d\\n%6 d\","); printf("\n x-- * ++y,x-- - --y,x++ + ++y);"); printf("\n\n se in ra :(gia tri sai)"); printf("\n\n%6d\n%6d\n%6d",x-- * ++y,x-- - --y,x++ + ++y); } getch(); } /* Bai tap - Tinh n!! */ #include <stdio.h> 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(); } /* Bai tap - Giai phuong trinh bac nhat AX + B = 0 */ #include <stdio.h> void main() { float a, b; printf("\nGiai phuong trinh bac nhat AX + B = 0"); printf("\nCho biet ba he so A B : "); scanf("%f%f", &a, &b); if (a==0) if (b!=0) printf("Phuong trinh vo nghiem"); else printf("Phuong trinh co nghiem khong xac dinh"); else printf("Dap so cua phuong trinh tren = %f", -b/a); getch(); } Day tang #include <stdio.h> void main() { int a[10], i, maxstart, maxend, maxtotal, tmpstart, tmpend, tmptotal; printf("\nNhap vao 10 phan tu nguyen cua day :"); for (i=0; i<10; i++) scanf("%d", &a[i]); printf("Day da cho :\n"); for (i=0; i<10; i++) printf("%6d", a[i]); maxstart = maxend = tmpstart = tmpend = 0; maxtotal = tmptotal = a[0]; for (i=1; i< 10; i++) { if (a[i] < a[tmpend]) { if (maxtotal < tmptotal) { maxstart = tmpstart; maxend = tmpend;

Page 15: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 15 -

maxtotal = tmptotal; } tmpstart = tmpend = i; tmptotal = a[i]; } else { tmptotal += a[i]; tmpend++; } } if (maxtotal < tmptotal) { maxstart = tmpstart; maxend = tmpend; } printf("\n Day tang co tong nhieu nhat la : \n"); for (i=maxstart; i<=maxend; i++) printf("%6d", a[i]); getch(); } /* Hay du du doan ket qua truoc khi chay chuong trinh */ main() { int x=10,y=11; clrscr(); printf("\nKhi x=10 va y=11 thi gia tri cua"); printf("\n\n x-- * ++y\n x-- - --y\n x++ + ++y\n"); printf("\n\n se la :\n"); printf("\n%10d",x-- * ++y); printf("\n%10d",x-- - --y); printf("\n%10d",x++ + ++y); getch(); } BÀI TẬP CHƯƠNG 4 /*Tim so lon nhat trong 2 so thuc */ /*Cau truc if thieu */ 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; } /* Tim so lon nhat trong 4 so nguyen */ /* Cau truc if du */ 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);

Page 16: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 16 -

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; } /* Chuyen ky tu tu aA-fF sang ky so he 16 */ /* Cau truc else if */ main() { char c,k; clrscr(); printf("\nHay nhap mot ky tu tu aA den fF : "); scanf("\n%c",&c); clrscr(); if (c >='0' && c<='9') k=c-'0'; else if (c>='A' && c<='F') k=c-'A'+10; else if (c>= 'a' && c<= 'f') k=c-'a'+10; else

k=0; printf("\nNeu ban nhap vao ky tu la :%c\n",c); printf("\nLa ky so thu : %d cua he 16",k); getch(); } /* Cau truc if long nhau */ main() { int gio,gio1,phut,phut1,giay,giay1,them,t; tt:clrscr(); gio=0; phut=0; giay=0; them=0; printf("\nCHUONG TRINH TINH THOI GIAN"); printf("\n-Cho biet gio : "); scanf("%2d",&gio); gio1=gio; printf("-Cho biet phut : "); scanf("%2d",&phut); phut1=phut; printf("-Cho biet giay : "); scanf("%2d",&giay); giay1=giay; printf("-Cho biet giay muon them vao : "); scanf("%2d",&them); if ((giay+them) < 60) giay=giay+them; else { giay=giay+them-60; phut=phut+1; if (phut >=60) { phut=phut-60; gio=gio+1; } } printf("\n*Luc dau la %2d : %2d : %2d ",gio1,phut1,giay1); printf("\n*Neu ban cong them : %2d giay ",them); printf("\n*Gio moi la= %2d : %2d : %2d ",gio,phut,giay); printf("\n\n Tiep tuc (bam so 1) / Cham dut (bam so 0) "); scanf("%d",&t);

Page 17: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 17 -

if (t==1) goto tt; } Bài tập/* Chuong trinh giai phuong trinh bac 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; } main() { int i,tt; kk:clrscr(); printf("\nHUONG DAN MUA VE MAY BAY DI CAC TUYEN DUONG"); printf("\nCac tuyen bay trong nuoc"); printf("\n 1-Ha Noi");

printf("\n 2-Da Nang"); printf("\n 3-Buon Ma Thuot"); printf("\n 4-Dien Bien Phu"); printf("\n 5-Phu Quoc"); printf("\n 6-Con Dao"); printf("\n\nCac tuyen bay Quoc te"); printf("\n 7- New York"); printf("\n 8- London"); printf("\n 9- Paris"); printf("\n 10-Moscow"); printf("\n 11-Bac Kinh"); printf("\n 12-Taiwan"); printf("\n 13-Binh Nhuong"); printf("\n 14-Bankoc"); printf("\n 15-Tokyo"); printf("\nNhap vao mot so tu 1 den 15 : "); scanf("%2d",&i); switch(i) { case 1: goto t1; case 2: goto t2; case 3: goto t3; case 4: goto t4; case 5: goto t5; case 6: goto t6; case 7: goto t7; case 8: goto t8; case 9: goto t9; case 10: goto t10; case 11: goto t11; case 12: goto t12; case 13: goto t13; case 14: goto t14; case 15: goto t15; t1:printf("\n Quy khach di tuyen Ha Noi"); printf("\n XIN MOI DEN PHONG SO 1, Lau 1"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; break; t2:printf("\n Quy khach di tuyen Da Nang"); printf("\n XIN MOI DEN PHONG SO 2, Lau 1"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt);

Page 18: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 18 -

if (tt==1) goto kk; break; t3:printf("\n Quy khach di tuyen Buon Ma Thuot"); printf("\n XIN MOI DEN PHONG SO 3, Lau 1"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; break; t4:printf("\n Quy khach di tuyen Dien Bien Phu"); printf("\n XIN MOI DEN PHONG SO 4, Lau 1"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; break; t5:printf("\n Quy khach di tuyen Phu Quoc"); printf("\n XIN MOI DEN PHONG SO 5, Lau 1"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; break; t6:printf("\n Quy khach di tuyen Con Dao"); printf("\n XIN MOI DEN PHONG SO 6, Lau 1"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; break; t7:printf("\n Quy khach di tuyen New York"); printf("\n XIN MOI DEN PHONG SO 1, Lau 2"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1)

goto kk; break; t8:printf("\n Quy khach di tuyen London"); printf("\n XIN MOI DEN PHONG SO 2, Lau 2"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; break; t9:printf("\n Quy khach di tuyen Paris"); printf("\n XIN MOI DEN PHONG SO 3, Lau 2"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; break; t10:printf("\n Quy khach di tuyen Moscow"); printf("\n XIN MOI DEN PHONG SO 4, Lau 2"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; break; t11:printf("\n Quy khach di Bac Kinh"); printf("\n XIN MOI DEN PHONG SO 1, Lau 3"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; break; t12:printf("\n Quy khach di Taiwan"); printf("\n XIN MOI DEN PHONG SO 2, Lau 3"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk;

Page 19: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 19 -

break; t13:printf("\n Quy khach di Binh Nhuong"); printf("\n XIN MOI DEN PHONG SO 3, Lau 3"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; break; t14:printf("\n Quy khach di Bankoc"); printf("\n XIN MOI DEN PHONG SO 4, Lau 3"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; break; t15:printf("\n Quy khach di Tokyo"); printf("\n XIN MOI DEN PHONG SO 5, Lau 3"); printf("\nTiep tuc (Bam so 1)/Cham dut (Bam so 0)"); scanf("%d",&tt); if (tt==1) goto kk; } } /* In ra cau hoi va 4 cau tra loi */ #include<stdio.h> main() { int c; /* In ra cau hoi va 4 cau tra loi */ clrscr(); tt:printf("\n\nAi la nguoi da de xuat ra ngon ngu Turbo C"); printf("\n\nA)-Brian Kernighan ?\nB)-Ken Thompson ?"); printf("\nC)-Dennis Ritchie ?\nD)-Niklau Wirth ?"); printf("\n\nHay go vao cau tra loi tu aA den dD "); /*Cho nhan mot ky tu va kiem tra de thong bao */ scanf("%d",&c); switch (c=getchar())

{ case 'A': case 'a': case 'B': case 'b': case 'D': case 'd':printf(" *****************************"); printf("\n * Ban tra loi khong dung ! *\n"); printf("\ *****************************"); goto tt; case 'C': case 'c': printf(" *************************"); printf("\n * Ban da tra loi dung ! *\n"); printf("\ *************************"); break; case'\n':break; default:printf(" Chi tra loi tu A den D thoi !"); break; } getch(); } BÀI TẬP: CHUONG TRINH TINH DIEN TICH HINH HOC SO CAP 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;

Page 20: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 20 -

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; } } CHƯƠNG TRÌNH TÍNH N ĂM main() { int nam,n; tt:clrscr(); printf("\nCHUONG TRINH TINH NAM NHUAN"); printf("\nCho biet nam can tinh (?) : "); scanf("%4d",&nam); switch (nam % 4) { case 0:printf("\nNam %4d ",nam); printf("La nam nhuan"); printf("\n\nTiep tuc (bam 1)/Cham dut (bam 0) ");

Page 21: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 21 -

scanf("%d",&n); if (n==1) goto tt; break; case 1:printf("Nam ngoai tuc la nam %4d ",nam-1); printf("Moi la nam nhuan "); printf("\n\nTiep tuc (bam 1)/Cham dut (bam 0) "); scanf("%d",&n); if (n==1) goto tt; break; case 2:printf("Hai nam ve truoc (tuc nam %4d) moi la nam nhuan ",nam-2); printf("\n\nTiep tuc (bam 1)/Cham dut (bam 0) "); scanf("%d",&n); if (n==1) goto tt; break; default:printf("Nam toi (tuc nam %4d) moi la nam nhuan",nam+1); printf("\n\nTiep tuc (bam 1)/Cham dut (bam 0) "); scanf("%d",&n); if (n==1) goto tt; break; } } float a[]={3.5,0,23.3,0,4.7,-2,10,30,40}; main() { float s=0,max=0; int k=0,i; clrscr(); for (i=0;i<9;++i) { if(a[i] <0) break; if(a[i] >0) { s+=a[i]; k++; if (max < a[i]) max=a[i];

} } printf("\nPhan tu am dau tien la phan tu thu %d\ co tri = %8.2f",i+1,a[i]); printf("\nSo phan tu duong dau tien la = %d",k); printf("\nTong cac phan tu duong dau tien la= %8.2f",s); printf("\nMax cua phan tu duong dau tien la %8.2f",max); getch(); } Tong cac phan tu duong float a[][4]={ {25,0,-3,5}, {-6,4,0,-2}, {30,-4,7,-3} }; main() { int i,j,k=0; float s=0,max=0; for (i=0;i<3;++i) for(j=0;j<4;++j) { if (a[i][j] < 0) continue; s+=a[i][j]; if(max <a[i][j]) max=a[i][j]; if(a[i][j] >0) ++k; } printf("\nSo phan tu duong la=%d",k); printf("\nTong cac phan tu duong la=%8.2f",s); printf("\nMax cua cac phan tu duong la =%8.2f",max); getch(); } ** BANG MA ASCII ** main() { unsigned char c; printf("\n ** BANG MA ASCII ** \n\r"); for(c=0;c<255;c++) printf("\n Ma (He 10) = %3d Ma (He 16) = %3x Ky Hieu = %c", c,c,c); } /* chuong trinh tim phan tu am dau tien */

Page 22: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 22 -

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(); } /* Chuong trinh tim max va min tren moi hang cua ma tran */ 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(); } /* Phep chia chi la phep tru */ main() { int schia,sbchia,sluu,sthuong,sdu; clrscr(); printf("\nCho biet so bi chia : "); scanf("%d",&sbchia); printf("\nCho biet so chia : "); scanf("%d",&schia); sluu=sbchia; sthuong=0; while ( schia<=sbchia ) { sbchia=sbchia-schia; sthuong=sthuong+1; } sdu=sbchia; printf("\nNeu dem so : %d chia cho : %d ",sluu,schia); printf("\nThuong so la : %d ",sthuong); printf("\nSo du la : %d ",sdu); getch(); } /* Bai tap- Tim phuong an doi tien */ #include <stdio.h> #define TONGSOTIEN 300000 void main() { long i, j, k, l, m, count=0, soluong = 0; for (i=0; i<=TONGSOTIEN/1000; i++) for (j=0; j<=TONGSOTIEN/2000; j++) for (k=0; k<=TONGSOTIEN/5000; k++) for (l=0; l<=TONGSOTIEN/10000; l++) for (m=0; m<=TONGSOTIEN/20000; m++) { if ((i*1000 + j*2000 + k*5000 + l*10000 + m*20000) == TONGSOTIEN)

Page 23: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 23 -

printf("\n%5ld - %5ld%5ld%5ld%5ld%5ld", ++count, i, j, k, l, m); soluong++; } printf("so luong = %ld", soluong); getch(); } /* Bai tap - Tim chuoi doi xung */ #include <stdio.h> #include <conio.h> #include <string.h> void main() { char chuoi[125]; int i = 0, j; printf("\nNhap vao chuoi kiem tra : "); gets(chuoi); j = strlen(chuoi) - 1; while(chuoi[i++] == chuoi[j--]); if (--i>=++j) printf("Chuoi doi xung"); else printf("Chuoi khong doi xung"); getch(); } /* Chuong trinh dem chu,so tu va so dong khi nhap tu ban phim */ /*Bam phim ESC khi ket thuc nhap lieu */ #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(); } /* Chuong trinh tinh can bac 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);

Page 24: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 24 -

if(i==1) goto tt; } BÀI TẬP CHƯƠNG 5 #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); } #include"stdio.h" long double gt(int i); main() { int i,n; float s; printf("\n CHUONG TRINH TINH TONG NGHICH DAO \n"); printf("\n CUA n GIAI THUA DAU TIEN \n"); printf("\n Hay nhap vao so can tinh : "); scanf("%d",&n); s=0; for (i=1;i<=n;++i); s=s+1/gt(i); printf("\n Tong nghich dao cua giai thua %d = %11.9f",n,s); getch(); } long double gt(int i) { long double tempo; int k; tempo = 1; for (k=1;k<=i;k++) tempo=tempo*k; return (tempo); } char nhuan(nam) { if ( nam % 100 ) return( !(nam % 4)); else return( !(nam % 400)); } char kiemtra(ngay,thang,nam) {

Page 25: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 25 -

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); } 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 CHƯƠNG 6 main() { const int a[]={23,67,78,65,43,32,12}; int k; clrscr(); for (k=0;k<7;printf(" %d ",*(a+k++))) ; getch(); } #include<stdio.h> main() { const char ten[][18]={"Nguyen Van Xuan","Tran Van Ha", "Bui Thi Thu","Pham Van Dong","Le Van Son","Chu Van Ha", "Dang Van Xa","Vo Van Tac"}; int k; for ( k=0,puts(" ");k<8;puts(ten[k++])); getch(); } NHẬP MẢNG, SẮP XẾP MẢNG #include "stdio.h" #define SIZE 10 main() { int a[SIZE]; nhap(a,'a'); printf("\nTruoc khi chua duoc sap xep\n"); hienthi(a,'a'); sapxep(a); printf("\nSau khi sap xep ta co mang giam nhu sau :\n"); hienthi(a,'a');

Page 26: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 26 -

getch(); } nhap(int x[],char chu) { int k; printf("\n"); for(k=0;k<SIZE;k++) { printf("\%c[%d]=",chu,k+1); scanf("%d",&x[k]); } printf("\n"); } hienthi(int x[],char chu) { int k; printf("%c=(",chu); for(k=0;k<SIZE-1;k++) printf("%d\,",x[k]); printf("%d)\n",x[k]); } sapxep(int x[]) { int i,j; for(i=0;i<SIZE;i++) for(j=i;j<SIZE;j++) { int tam; if(x[j]>x[i]) { tam=x[j]; x[j]=x[i]; x[i]=tam; } } } TẠO MẢNG NGẪU NHIÊN #include"stdio.h" #include"stdlib.h" int a[1000]; int i; sapxep(int l, int r) { int i,j,x,y; i=l;j=r;x=a[(l+r)/2];

do { while(a[i]<x) i=i+1; while(x<a[j]) j=j-1; if (i<=j) { y=a[i]; a[i]=a[j]; a[j]=y; i++; j--; } } while (i<=j); if (l<j) sapxep(l,j); if (i<r) sapxep(i,r); } main() { printf("Khoi tao 1000 so ngau nhien..."); randomize(); for(i=0;i<1000;i++) a[i]=random(30000); printf("\n"); printf("\Sap xep cac so ngau nhien..."); printf("\nBam phim bat ky de bat dau sap xep\n"); getch(); sapxep(0,1000-1); printf("\n"); for (i=0;i<1000;i++) printf(" %8d ",a[i]); getch(); } main() { int a,b,*px; clrscr(); printf("\nNhap mot so nguyen : "); scanf("%d",&a); px=&a; printf("\nDia chi cua bien A= %d dang thap luc (Hex) = %p ",a,&a); printf("\nDia chi cua bien A= %d dang thap phan (Dec)= %u ",a,&a); printf("\nNoi dung cua bien....................... A = %d ",a); printf("\nDia chi cua px tro toi dang thap luc (Hex) = %p ",px);

Page 27: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 27 -

printf("\nNoi dung tai dia chi px dang tro...........= %d ",*px); printf("\nNhap mot so nguyen khac : "); scanf("%d",&b); *px=b; printf("\nSau khi thuc hien gan *px= %d ",b); printf("\nDia chi cua bien A dang thap luc (Hex) = %p ",&a); printf("\nNoi dung cua bien A .............. ... = %d ",a); printf("\nNoi dung cua bien B vua nhap...........= %d ",b); getch(); } void bo_nho(long int dia_chi) { char far *px; int t; px=(char far *) dia_chi; for ( t=0;;t++,px++ ) { if (t%8==0) puts(" "); printf(" %4x ",*px); if ( kbhit() ) return; } } main() { unsigned long int bat_dau; printf("\nNhap vao mot dia chi : "); scanf("%ld",&bat_dau); bo_nho(bat_dau); getch(); } #include<alloc.h> #define max 10 typedef char ten[24]; main() { ten *p[max]; char k; clrscr(); printf("\nBat dau chuong trinh,bo nho la = %u bytes",coreleft()); for (k=0;k<max;k++) { p[k]=malloc(sizeof(ten));

printf("\nTen nguoi thu : %2d la : ",k+1); gets(p[k]); printf("\nBo nho bay gio con lai la = %u ",coreleft()); } printf("\n"); \ printf("\n%10cHIEN THI DANH SACH VUA NHAP",''); printf("\n%13cVA GIAI PHONG BO NHO",''); for (k=0;k<max;printf("\n%15c %s",'',(p[k++]))); for (k=0;k<max;free(p[k++])); printf("\nKet thuc chuong trinh,bo nho la = %u bytes",coreleft()); getch(); } #include<math.h> float ptb2(a,b,c,x1,x2) float a,b,c,*x1,*x2; { double sqrt(); float delta; if (a==0) return(0); delta=b*b-4*a*c; if (delta < 0) return(-1); *x1=(-b+sqrt((double)delta))/(2*a); *x2=(-b-sqrt((double)delta))/(2*a); return(1); } #include<stdio.h> main() { int s; float a,b,c,x1,x2; printf("\nNhap he so A= "); scanf("%f",&a); printf("\nNhap he so B= "); scanf("%f",&b); printf("\nNhap he so C= "); scanf("%f",&c); s=ptb2(a,b,c,&x1,&x2); if (s==0) { printf("\nVi he so a=0 nen tro thanh phuong trinh bac nhat");

Page 28: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 28 -

printf("\nBam phim bat ky de ket thuc"); getch(); exit(); } else if (s ==-1) { printf("\nVi delta < 0 nen phuong trinh vo nghiem"); printf("\nBam phim bat ky de ket thuc"); getch(); exit(); } else printf("\nPhuong trinh co 2 nghiem"); printf("\nNghiem thu nhat x1= %8.2f",x1); printf("\nNghiem thu hai x2= %8.2f",x2); getch(); } TẠO NĂM 12 CON GIÁP #include"stdio.h" typedef char name[8]; main() { name a[12]={"Ty","Suu","Dan","Mao","Thin","Ti", "Ngo","Mui","Than","Dau","Tuat","Hoi"}; int k; name *p; p=a; clrscr(); for(k=0;k<=11;k++) printf("\n%30c %s ",' ',*(p+k)); getch(); }� Lái xe #include<stdio.h> #define n 10 /*So chuyen di trong mot ngay khong qua 10 */ #define l 20 /* So lai xe khong qua 20 */ int k[n]; /* Km */ float t[n]; /* tan */ int *pk[l]; /* Mang con tro pk */ float *pt[l]; /* Mang con tro pt */ char *thongbao="\nKhong co lai xe thu %d "; nhap(m) /* So lai xe la m */

int m; { int i,*pkk; float *ptt; pkk=pk[0]=k; ptt=pt[0]=t; for (i=1;i<=m;++i) { printf("*So lieu cua lai xe %d\n",i); doc :printf("+Bao nhieu cay so (Bam so 0 de dung) ="); scanf("%d",pkk); printf("+Bao nhieu tan (Bam so 0 de dung)= "); scanf("%f",ptt); if (*pkk !=0) { ptt++; pkk++; goto doc; } pk[i]=pkk; pt[i]=ptt; } } xuat(m,i) int m; /* So lai xe thuc te la m */ int i; /*Can in so lieu cua nguoi thu i i(-[l,n] */ { int *pkk; float *ptt; if (i<1 || i>m) { printf(thongbao,i); return(0); } pkk=pk[i-1]; ptt=pt[i-1]; printf("\n\n%4c So lieu cua lai xe %d\n",'',i); while (pkk < pk[i]) printf("\n%4d Km %8.2f Tan ",*pkk++,*ptt++); } float klvc(m,i) int m; /* So lai xe la m */ int i; /* Tinh khoi luong van chuyen cua la xe i,i(-[1,m]) */ { int *pkk;

Page 29: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 29 -

float *ptt,s=0; if (i<1 || i>m) { printf(thongbao,i); return(0); } pkk=pk[i-1]; ptt=pt[i-1]; while (pkk < pk[i]) s+= (*pkk++)*(*ptt++); return(s); } main() { int m,i; clrscr(); printf("\n%10cNHAP SO LIEU VAN CHUYEN",''); printf("\nCo bao nhieu lai xe = "); scanf("%d",&m); nhap(m); /* In so lieu cua toan bo don vi */ clrscr(); printf("\n%10cBAO CAO TONG HOP",''); for (i=1;i<=m;++i) { xuat(m,i); printf("\nKhoi luong van chuyen = %8.2f Km/Tan ",klvc(m,i)); } getch(); } BÀI TẬP CHƯƠNG 7+ 8 /* Bai tap - Bai toan Ancarokhi */ #include <stdio.h> void main() { int dai, rong; printf("\nBai toan Ancarokhi : Tim dien tich hinh chu nhat co chieu dai gap hai"); printf("\nchieu rong va dien tich = chu vi"); for (dai = 1; dai < 100; dai ++) for (rong=1; rong < 100; rong++) if (dai == 2 * rong && (dai + rong)*2 == dai*rong) printf("\nDai = %d; Rong = %d", dai, rong); getch(); } /* Bai tap - The hien cac gia tri bit cua so */

#include <stdio.h> void main() { unsigned int mang[24], i; int bit[16], k, index; printf("\nNhap vao 23 gia tri nguyen : "); for (i=0; i<23; i++) scanf("%d",&mang[i]); printf(" FEDCBA9876543210"); for (i=0; i<23; i++) { k = mang[i]; for (index = 0; index < 16; index++) bit[index] = 0; index = 15; while (k) { bit[index--] = k%2; k /= 2; } printf("\n%5d ",mang[i]); for (index=0; index<16; index++) if (bit[index] == 1) printf("*"); else printf("-"); } getch(); } /* Baitap - Xem tap tin DBF */ #include <stdio.h> #include <conio.h> #include <alloc.h> #include <string.h> typedef struct tagDBF_HEADER { unsigned char signature; /* 03 = dbf, 83 dbf+dbt */ unsigned char ymd[3]; long num_records; int data_off; int rec_size; unsigned char pad[20]; } DBF_HEADER; typedef struct tagDBF_STRUCT { char name[11]; char type; long fstart; unsigned char fsize; unsigned char decimal; char pad[14];

Page 30: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 30 -

} DBF_STRUCT; DBF_HEADER dbheader; DBF_STRUCT dbstruct[255]; int numfields; void main() { char filename[50]; char *dump, chuoi[250] ; int i, j, offset, k; FILE *fp; printf("\nCho biet ten tap tin DBF muon xem : "); gets(filename); if ((fp=fopen(filename, "rb")) == NULL) printf("Khong the mo tap tin %s", filename); else { fread(&dbheader, sizeof(DBF_HEADER), 1, fp); if (dbheader.signature == 3 || dbheader.signature == 0x83) { numfields = (dbheader.data_off - 33) / 32; fread(&dbstruct, sizeof(DBF_STRUCT), numfields, fp); fgetc(fp); dump = (char *)malloc(dbheader.rec_size); k = 7; for (j=0; j<numfields; j++) { gotoxy(k, wherey()); textcolor(j+1); cprintf("%s", dbstruct[j].name); k += dbstruct[j].fsize; } for (i=0; i<dbheader.num_records; i++) { fread(dump, dbheader.rec_size, 1, fp); printf("\n%3d ", i+1); if (dump[0] != 32) printf("* "); else printf(" "); offset= 1; for (j=0; j<numfields; j++) { switch(dbstruct[j].type) { case 'C' : strncpy(chuoi, &dump[offset], dbstruct[j].fsize); chuoi[dbstruct[j].fsize] = 0;

printf("%s ", chuoi); break; case 'D' : printf("%c%c/%c%c/%c%c%c%c ",dump[offset+6], dump[offset+7], dump[offset+4],dump[offset+5],dump[offset],dump[offset+1], dump[offset+2],dump[offset+3]); break; case 'N' : for (k=0; k<dbstruct[j].fsize; k++) printf("%c", dump[offset+k]); printf(" "); break; case 'L' : printf("%c ", dump[offset]); break; } offset += dbstruct[j].fsize; } } free(dump); } else printf("Khong phai tap tin DBF"); fclose(fp); } getch(); } Bài tập/* Tính t ổng ma trận */ #include <stdio.h> #define MAX 10 void in_ma_tran(int A[MAX][MAX], int n, int m, char id) { int i, j; printf("\nMa tran %c : ", id); for (i=0; i<n; i++) { printf("\n"); for(j=0; j<m; j++) printf("%3d ",A[i][j]); } } void nhap_so_nguyen(int *value, int min, int max, char id) { do { printf("\nNhap gia tri %c (trong khoang %d den %d)", id, min, max);

Page 31: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 31 -

scanf("%d", value); } while (*value < min || *value > max); } void main() { int A[MAX][MAX], B[MAX][MAX], C[MAX][MAX], n, m, i, j; nhap_so_nguyen(&n, 2, MAX, 'n'); nhap_so_nguyen(&m, 2, MAX, 'm'); printf("\nNhap ma tran A : "); for (i=0; i<n; i++) for (j=0; j<m; j++) { printf("A[%d,%d] = "); scanf("%d", &(A[i][j])); } printf("\nNhap ma tran B : "); for (i=0; i<n; i++) for (j=0; j<m; j++) { printf("B[%d,%d] = "); scanf("%d", &(B[i][j])); } in_ma_tran(A, n, m, 'A'); in_ma_tran(B, n, m, 'B'); for (i=0; i<n; i++) for (j=0; j<m; j++) C[i][j] = A[i][j] + B[i][j]; in_ma_tran(C, n, m, 'C'); getch(); } * Bai tap - Dien gia tri cho mot mang vuong theo chieu kim dong ho */ #include <stdio.h> 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; } }

Page 32: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 32 -

for (hang=0; hang < n; hang++) { printf("\n"); for (cot=0; cot < n; cot++) printf("%4d", matran[hang][cot]); } getch(); } /* Bai tap - Doc tu file mot mang 2 chieu 10x10 */ #include <stdio.h> #include <conio.h> #define MAX 10 char filename[] = "ghep.cpp"; void main() { int mang[MAX][MAX], i, j; FILE *fp; if ((fp = fopen(filename, "r")) == NULL) printf("\nKhong the mo tap tin %s", filename); else { fread(&mang, sizeof(int), MAX * MAX, fp); fclose(fp); printf("\nViec doc hoan tat."); for (i=0; i<MAX; i++) { printf("\n"); for (j=0; j<MAX; j++) printf("%d ", mang[i][j]); } } getch(); } /* Bai tap - Tro choi Logic */ #include <conio.h> #include <dos.h> #include <string.h> #include <stdlib.h> #include<stdio.h> int day[7] = {-1,-1,-1,-1,-1,-1,-1}; int sonhap[4]; int somay[4]; int solanthu; int timthay; void khoitao() {

char tieude[] = "L O G I C G A M E"; int j, i, dich; textmode(C40); clrscr(); textcolor(YELLOW); dich = (40 - strlen(tieude)) / 2; for (i=strlen(tieude)-1; i>=0; i--) { movetext(1,3,39,3,2,3); gotoxy(1,3); putch(tieude[i]); delay(40); } for (i=1; i<=dich; i++) { movetext(1,3,39,3,2,3); gotoxy(1,3); putch(' '); delay(40); } randomize(); for (i=0; i<4; i++) { do { j = random(6)+1; } while (day[j] != -1); day[j] = i; somay[i] = j; // printf ("%d",&j); } gotoxy(14,5); cprintf("ÉÍÍÍÍÍÍÑÍÍÍÍÍÍ»"); for (i=0; i<6; i++) { gotoxy(14,5+i*2+1); cprintf("º ³ º"); gotoxy(14,5+i*2+2); cprintf("ÇÄÄÄÄÄÄÅÄÄÄÄÄĶ"); } gotoxy(14,17); cprintf("ÈÍÍÍÍÍÍÏÍÍÍÍÍͼ"); solanthu = 1; timthay = 0; textcolor(WHITE); gotoxy(1, 25); cprintf("Nhap chuoi 4 so khac nhau tu 1 den 6"); } void nhapso() { char c; int i; for (i=0; i<4; i++)

Page 33: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 33 -

sonhap[i]=0; gotoxy(16,5+solanthu*2-1); do { c = getch(); switch(c) { case '1' : case '2' : case '3' : case '4' : case '5' : case '6' : textcolor(c-39); cprintf("%c",c); sonhap[wherex()-16-1] = c - 48; if (wherex()==20) gotoxy(wherex()-1, wherey()); break; case 0 : c = getch(); switch(c) { case 75 : if (wherex()>16) gotoxy(wherex()-1,wherey()); break; case 77 : if (wherex()<19) gotoxy(wherex()+1,wherey()); break; } break; default : sound(880); delay(100); nosound(); } } while (!((c=='\r') && (sonhap[0] != 0) && (sonhap[1] != 0) && (sonhap[2] != 0) && (sonhap[3] != 0))); } void kiemtra() { int diem = 0, i; for (i=0; i<4; i++) if (day[sonhap[i]] != -1) if (day[sonhap[i]] == i) diem += 10; else diem ++; if (diem==40)

timthay=1; else { int sotrung, sotrat; sotrung=diem / 10; sotrat = diem % 10; textcolor(GREEN); gotoxy(23,5+solanthu*2-1); for (i=1; i<=sotrung; i++) cprintf("+"); textcolor(WHITE); for (i=1; i<=sotrat; i++) cprintf("-"); solanthu ++; } } void main() { int i; khoitao(); do { nhapso(); kiemtra(); } while ((solanthu <= 6) && (timthay==0)); if (timthay==1) { textcolor(YELLOW+BLINK); gotoxy(1,23); cprintf("Ban da thang."); } else { textcolor(GREEN+BLINK); gotoxy(1,23); cprintf("Ban da thua."); textcolor(YELLOW); } cprintf(" Ket qua dung = "); for (i=0; i<4; i++) { textcolor(somay[i]+9+BLINK); cprintf("%c",somay[i]+48); } getch(); } #include <stdio.h> #include <conio.h> void main() {

Page 34: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 34 -

FILE *fp1, *fp2, *fpout; char sf1[50], sf2[50], sfout[50]; int c; printf("\nNhap ten tap tin thu nhat : "); scanf("%s", &sf1); printf("\nNhap ten tap tin thu hai : "); scanf("%s", &sf2); printf("\nNhap ten tap tin ket qua : "); scanf("%s", &sfout); if ((fp1 = fopen(sf1, "r")) == NULL) fprintf(stderr, "Khong the mo tap tin %s\n", sf1); if ((fp2 = fopen(sf2, "r")) == NULL) fprintf(stderr, "Khong the mo tap tin %s\n", sf2); if ((fpout = fopen(sfout, "w")) == NULL) fprintf(stderr, "Khong the mo tap tin %s\n", sfout); while ((c = getc(fp1)) != EOF) putc(c, fpout); while ((c = getc(fp2)) != EOF) putc(c, fpout); fclose(fp1); fclose(fp2); fclose(fpout); printf("\nHoan tat! Nhan phim bat ky de ket thuc."); getch(); } /* Bai tap – Trò chơi phá sản */ #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <dos.h> #include <ctype.h> int player[2], luot = 0, y; void giam0() { player[0]--; gotoxy(player[0]%5*2+1, y + player[0]/5); cprintf(" "); gotoxy(player[1] % 5*2 + 25, y + player[1]/5); cprintf("*"); player[1]++; } void giam1() { player[1]--; gotoxy(player[1]%5*2+25, y + player[1]/5);

cprintf(" "); gotoxy(player[0] % 5*2 + 1, y + player[0]/5); cprintf("*"); player[0]++; } void main() { int i, n, k, dong, tudong = 0; char c; randomize(); player[0] = player[1] = 20; clrscr(); printf("Tro choi tung dong tien sap ngua."); printf("\nHai nguoi choi A va B se lan luot tung dong tien"); printf("\nNeu den luot nguoi nao ma tung ra dong sap thi"); printf("\nNguoi kia se bi mat tien va nguoc lai."); printf("\nTro choi se ket thuc neu mot nguoi het tien hoac nhan ESC.\n\n"); printf("\n A \t\t B\n"); y = wherey(); for (i=0; i<4; i++) printf("* * * * *\t\t* * * * *\n"); gotoxy(1,y+11); cprintf("Nhan phim bat ky de di hoac T de choi tu dong"); do { gotoxy(1,y+10); cprintf("Den luot %c di : ", luot + 'A'); if (tudong) { delay(100); if (kbhit()) c = getch(); } else { c = toupper(getch()); if (c == 'T') tudong = 1; } if (c != 27) { n = random(100); dong = random(2); for (k=0; k<n; k++) {

Page 35: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 35 -

if (dong == 1) dong = 0; else dong = 1; gotoxy(18,y+10); cprintf("%d", dong); delay(10); } if (dong == 0) { if (luot == 1) giam1(); else giam0(); } else { if (luot == 1) giam0(); else giam1(); } if (luot == 0) luot = 1; else luot = 0; } } while (player[0] > 0 && player[1] > 0 && c != 27); gotoxy(1,y+12); if (player[0] ==0) cprintf("A da het tien roi!"); else if (player[1] ==0) cprintf("B da het tien roi!"); else cprintf("Khong bai bac la tot!!!"); getch(); } /* Bai tap – Chương trình Piano đơn giản */ #include <stdio.h> #include <dos.h> #include <ctype.h> #include <conio.h> void main() { char c; clrscr(); printf("\nNhan cac phim A, B, C, D, E, F, G, H, J, K de choi cac not nhac."); printf("\nNhan phim ESC de ket thuc."); do {

c = toupper(getch()); switch(c) { case 'A' : sound(440); break; case 'B' : sound(494); break; case 'C' : sound(333); break; case 'D' : sound(587); break; case 'E' : sound(659); break; case 'F' : sound(750); break; case 'G' : sound(510); break; case 'H' : sound(850); break; case 'J' : sound(920); break; case 'K' : sound(1010); break; } delay(500); nosound(); } while (c != 27); } * Bai tap – In ra các giá trị của một mảng vuông theo chiều kim đồng hồ */ #include <stdio.h> #include <conio.h> #include <dos.h> void main() { int m, 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 so hang cua ma tran (3 <= n <= 12) : "); scanf("%d%*c",&n); } while (! (n >=3 && n<=12) ); do { printf("\nNhap so cot cua ma tran (3 <= m <= 12) : "); scanf("%d%*c",&m); } while (! (m >=3 && m<=12) );

Page 36: BAI TAP C1

Bài tập Thực hành Lập trình C cơ bản – GVHD: Ninh Văn Anh

- Trang 36 -

/* Nhap ma tran */ for (hang=0; hang <n; hang++) for (cot=0; cot<m; cot++) { printf("phan tu [%02d][%02d] = ",hang,cot); scanf("%d",&matran[hang][cot]); } hang = cot = 0; chanhangtang = n-1; chancottang = m-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; clrscr(); for (w=0; w<n*m; w++) { gotoxy(10 + cot * 4, 3 + hang); printf("%4d",matran[hang][cot]); delay(200); 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; } } getch(); } /* Bai tap – Bài toán trăm trâu */ /* Giai bai toan co : Tram trau tram co Trau dung an nam Trau nam an ba Trau gia an mot */ #include <stdio.h> #include <conio.h> void main() { int tdung, tnam, tgia, phuongan=0; for (tdung = 1; tdung <= 98; tdung ++) for (tnam = 1; tnam < 99 - tdung; tnam ++) for (tgia = 1; tgia < 99 - (tdung + tnam); tgia++) if ((tdung*5 + tnam*3 + tgia) == 100) { printf("\nTrau dung : %5d ; Trau nam : %5d ; Trau gia : %5d", tdung, tnam, tgia); phuongan++; } printf("\nTong cong co %d phuong an.", phuongan); getch(); }

--------- CHÚC CÁC EM SINH VIÊN THỰC HÀNH TỐT --------------- Thầy ANH SĐT: 0935495519 Email: [email protected]

------------------------------- THE END --------------------------