Chương 1 Bài 1: Cho biết kết quả khi thực thi chương trình sau: #include<stdio.h> int mani(void) { int a = 5, c; c = a; printf(‘’c = %d \n’’, c); //Kết quả in: 5 c += a; printf(‘’c = %d \n’’, c); //Kết quả in: 10 c -= a; printf(‘’c = %d \n’’, c); //Kết quả in: 5 c *= a; printf(‘’c = %d \n’’, c); //Kết quả in: 25 c /= a; printf(‘’c = %d \n’’, c); //Kết quả in: 5 c %= a; printf(‘’c = %d \n’’, c); Kết quả in: 0 } 4 0 0 Bài 2: Vẽ lưu đồ và viết chương trình nhập 2 số nguyên từ bàn phím và in ra tổng, hiệu, tích, thương của 2 số đó 5 0 0 #include<stdio.h> Int main (void) { 6 0 0 Int a, b, tong, hieu, tich; float thuong; printf(“Moi ban nhap vao 2 so a va b : \n’’); scanf(‘’%d%d’’, &a, &b); tong = a + b; hieu = a – b; tich = a*b; thuong = (float)a/b; printf(‘’ Tong cua 2 so a va b la :%d’’, tong); printf(‘’\n Hieu cua 2 so a va b la: %d’’, hieu); printf(‘’\n Tich cua 2 so a va b la: %d’’, tich); printf(‘’\n Thuong cua 2 so a va b la: %.2f’’, thuong); } Bài 6 : Vẽ lưu đồ giải thuật cho bài toán: nhập vào 1 số nguyên và kiểm tra xem số vừa nhập có phải là số nguyên tố hay không, 7 0 0 Bài 7: Viết chương trình cho bài toán nhập vào 4 số nguyên, in ra màn hình số lớn nhất, số bé nhất trong các số đã nhập.h> 8 0 0 Int main (void) { int a, b, c, d, min, max, max1 ,max2, min1, min2; printf(‘’ nhap 4 so a b c d :\n’’); scanf(‘’%d%d%d%d’’, &a, &b, &c, &d); max1 = a; max2 = c; if(a<b) max1 = b; if(c<d) max2 = d; max = max1; if(max1<max2) max = max2; printf(‘’So lon nhat trong 4 so la : %d’’, max); min1 = a; min2 = c ; if(b<a) min1 = b; if(d<c) min2 = d; min = min1; if(min1>min2) min = min2; printf(‘’\n so nho nhat trong 4 so la: %d’’ ,min); } 9 0 0 Chương 2 Câu 1: Viết chương trình nhập vào 4 số nguyên từ bàn phím và in ra số lớn nhất trong 4 số này.h> void main (void){ int a,b,c,d,max ; printf("Moi ban nhap 4 so"); scanf("%d%d%d%d",&a,&b,&c,&d); max=a; if(b>max) { max=b; } if(c>max) { max=c; } if(d>max) { max=d; } printf("so lon nhat trong 4 so la: %d",max); } Câu 2: Viết chương trình giải phương trình bậc 2 (a khác 0) # include <stdio.h> void main (void){ float a,b,c,x,x1,x2,delta; printf ("Moi ban nhap 3 so a b c"); scanf("%f%f%f",&a,&b,&c); delta = b * b - 4 * a * c; printf ("Delta=%f\n",delta); if (delta < 0) { printf("\nPhuong trinh vo nghiem"); } else if (delta == 0) { float x = -b / (2 * a); printf("\nPhuong trinh co nghiem kep x1 = x2 = %f", x); } else { float x1 = (-b + sqrt(delta)) / (2 * a); float x2 = (-b - sqrt(delta)) / (2 * a); printf("\nPhuong trinh co 2 nghiem phan biet:\nx1 = %f\nx2 = %f", x1, x2); } } Câu 3: Viết chương trình giải phương trình bậc 2 (xét đến a có thể bằng 0) 11 0 0 include <stdio.h> int main() { float a, b, c; printf("\nNhap vao a = "); scanf("%f", &a); printf("\nNhap vao b = "); scanf("%f", &b); printf("\nNhap vao c = "); scanf("%f", &c); if (a == 0) { if (b == 0) { if (c == 0) { printf("\nPhuong trinh co vo so nghiem"); } else { printf("\nPhuong trinh vo nghiem"); } } else { 12 0 0 float x = -c / b; printf("\nPhuong trinh co nghiem duy nhat x = %f", x); } } else { float Delta = b * b - 4 * a * c; if (Delta < 0) { printf("\nPhuong trinh vo nghiem"); } else if (Delta == 0) { float x = -b / (2 * a); printf("\nPhuong trinh co nghiem kep x1 = x2 = %f", x); } else { float x1 = (-b + sqrt(Delta)) / (2 * a); float x2 = (-b - sqrt(Delta)) / (2 * a); printf("\nPhuong trinh co 2 nghiem phan biet:\nx1 = %f\nx2 = %f", x1, x2); } } getch(); return 0; } 13 0 0 Câu 4: Viết chương trình nhập vào: giờ: phút : giây từ bàn phím; kiểm tra thời gian vừa nhập vào có hợp lệ hay không; nếu hợp lệ cho biết sau đó 15s là thời gian bao nhiêu.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 15 giay la 00:00:14"); else printf("\nGio sau do 15 giay la %d:00:14",h+1); } else printf("\nGio sau do 15 giay la %d:%d:14",h,p+1); } else if(s>=45){ s=abs(60-s-15); p=p+1; 14 0 0 }else s=s+15; printf("\nGio sau do 15 giay la %d:%d:%d",h,p,s); } else printf("%d gio %d phut %d giay khong hop le",h,p,s);} 15 0 0 Chương 3 Bài 4: Viết chương trình nhâpbvào 2 số nguyên a, b từ bàn phím và in ra tất cả các số nguyên tố trong đo愃n [a b] #include <stdio.h> int main() { int a, b, num, dem, i; do { printf("Moi ban nhap vao a "); scanf("%d", &a); printf("Moi ban nhap vao b "); scanf("%d", &b); } while (0 > a > b); for (num = a+1; num < b; ++num) { dem = 0; for (i = 2; i <= sqrt(num); i++) { if (num % i == 0) { dem++; } 16 0 0 } if (dem == 0) printf("%d\t", num); } if (dem != 0) printf("Khong co so nguyen to"); } Bài 5: Viết chương trình nhâpbvào 2 số nguyên a và b. Tìm và in ra ước số chung lớn nhất và bôibsố chung nhf nhất của 2 số này #include <stdio.h> int main() { int i,s=0,n; float kq=0; printf("nhap n:"); scanf("%d",&n); for (i=1;i<=n;i++) { s=s+i; kq = kq +1.0/s; } printf("\nketqua: %f",kq); getch(); return 0; } Bài 7: Viết chương trình giải bài toán trăm trâu trăm cf.h> 18 0 0 void main() { int traudung, traunam, traugia; for (traudung = 1; traudung <= 20; traudung++){ for (traunam = 1; traunam <= 33; traunam++){ traugia=100-traudung-traunam; if ((5 * traudung + 3 * traunam + traugia / 3 == 100) && (traugia % 3 == 0) ){ printf("Trau dung : %d con Trau nam : %d con Trau gia : %d con\n", tr audung, traunam, traugia); } } } } 19 0 0 Chương 4 Câu 1: Viết chương trình nhập vào một mảng gồm n số nguyên, với n nhập từ bàn phím, tìm và in ra số nguyên tố có trong mảng; nếu không có thì in ra thông báo.h> void main() { int i, j, n ; int d = 0; int t = 0; printf("Moi ban nhap so phan tu mang: "); scanf("%d", &n); int a[n]; for (i=0 ; i<n ; i++) { printf ("Nhap phan tu thu %d: ", i+1); scanf ("%d", &a[i]); } for (i=0 ; i<n ; i++) { if (a[i] >=2) { if (a[i] == 2) { printf ("%d \t", a[i]); t++; } else { for (j=2 ; j<=sqrt(a[i]) ; j++) { if (a[i] % j == 0) { break; 20 0 0 } } if (j > sqrt(a[i])) { d = j; } if (d != 0) { printf ("%d \t", a[i]); t++; d = 0; } } } } if (t==0) { printf ("\nKhong co so nguyen to trong mang!"); } } Câu 2: Viết chương trình nhập vào một ma trận m X n các số nguyên, sắp xếp từng hàng của ma trận theo thứ tự tăng dần và in ra.h> void main() { int m,n,i,j,k; int a[10][10]; printf("Nhap so hang:"); 21 0 0 scanf("%d",&m); printf("\nNhap so cot:"); scanf("%d",&n); //nhap ma tran for( i=0;i<m;i++) for( j=0;j<n;j++) { printf("\na[%d][%d] = ",i,j); scanf("%d",&a[i][j]); } printf("\nMA TRAN VUA NHAP:\n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) printf("%d\t",a[i][j]); printf("\n"); } for(i=0;i<m;i++) for(j=0;j<n-1;j++) for(k=j+1;k<n;k++) if (a[i][j]>a[i][k]) { int tam=a[i][j]; a[i][j]=a[i][k]; a[i][k]=tam; 22 0 0 } printf("\nMA TRAN SAU KHI SAP XEP TANG DAN:\n"); for(i=0;i<m;i++){ for(j=0;j<n;j++){ printf("%d\t",a[i][j]); } printf("\n"); } getch(); } } Câu 3: Viết chương trình nhập vào một ma trận m X n các số nguyên. Tìm và in ra giá trị lớn nhất trên đường chéo chính của ma trận: #include<stdio.h> void main() { int m,n,i,j,k; int a[100][100]; int max=a[0][0]; 23 0 0 printf("Nhap so hang:"); scanf("%d",&m); printf("\nNhap so cot:"); scanf("%d",&n); for( i=0;i<m;i++) for( j=0;j<n;j++) { printf("\na[%d][%d] = ",i,j); scanf("%d",&a[i][j]); } printf("\nMA TRAN VUA NHAP:\n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) printf("%d\t",a[i][j]); printf("\n"); } for ( i = 0; i < n; i++) { for ( j = 0; j < n; j++) { if (i == j && max < a[i][j]) { max = a[i][j]; } 24 0 0 } } printf("Phan tu lon nhat cua mang la %d",max); } Câu 4: Viết chương trình nhập vào một mảng gồm 10 số nguyên, yêu cầu: không cho phép nhập số âm. Sau đó tiến hành sắp xếp mảng theo thứ tự số lẻ tăng dần và số chtn giảm dần; in ra mảng đã sắp xếp.h> void main (void) { int i,j,n; int a[10]; for(i=0;i<10;i++){ printf(" nhap phan tu thu %d : ",i); scanf("%d",&a[i]); if(a[i]<0){ printf("nhap lai"); scanf("%d",&a[i]); } } while(a[i]<0); 25 0 0 int tam; for(i=0;i<9;i++) for(j=i+1;j<10;j++) { if ((a[i]>a[j])&&(a[i]%2!=0)) { tam=a[i]; a[i]=a[j]; a[j]=tam; } if((a[i]<a[j])&&(a[i]%2==0)) { tam=a[i]; a[i]=a[j]; a[j]=tam; } } for(i=0;i<10;i++) printf(" %d",a[i]); getch(); } 26 0 0 Chương 5 Bài 2: Viết chương trình nhập vào một mảng gồm 10 số nguyên.
Sau đó copy và lưu các số lẻ (nếu có) trong mảng đã nhập ra một mảng thứ hai. In ra mảng thứ hai vừa copy được #include<math.h> int main (void) { int a[10],i,*p,n=0,j=0; for(i=0;i<10;i++) { printf("nhap vao phan tu thu %d\n",i+1); scanf("%d",&a[i]); } for(i=0;i<10;i++) { if(a[i]%2==1) n=n+1; } if(n==0) printf("mang khong co so le"); else p=(int *)malloc(n *sizeof(int)); for(i=0;i<10;i++) { 27 0 0 if(a[i]%2==1) { *(p+j)=a[i]; j=j+1;} } for(j=0;j<n;j++) { printf("%d ",*(p+j)); } } Bài 3. Viết chương trình nhập vào n số nguyên, sau đó nhập vào một số X bất kỳ, tìm xem số X này có tồn t愃i trong dãy số vừa nhập không.h> int main (void) { int n,*p,i,dem=0,x; printf("so cac so nguyen can nhap:\n"); scanf("%d",&n); p=(int *)malloc(n * sizeof(int)); for(i=0;i<n;i++) { printf("nhap gia tri cho so nguyen thu %d\n",i+1); scanf("%d",(p+i)); } 28 0 0 printf("nhap vao mot so nguyen bat ki\n"); scanf("%d",&x); for(i=0;i<n;i++) { if(*(p+i)==x) dem=dem+1; } if(dem>0) printf("x co ton tai trong day so vua nhap"); else printf("x khong ton tai trong day so vua nhap"); } Bài 4: Viết chương trình nhâpbvào mô tbmảng 1 chivu gồm n số nguyên và thực hiênb các yêu cầu: - Không được phép nhâpbsố âm. - Tìm và in ra số lẻ lớn nhất trong mảng, nếu mảng không có số lẻ thì in ra thông báo.h> int main (void) { int *p,n,i,max=0; printf("so cac so nguyen can nhap la:\n"); scanf("%d",&n); p=(int *)malloc(n*sizeof(int)); for(i=0;i<n;i++) 29 0 0 { printf("nhap vao phan tu thu %d\n",i+1); scanf("%d",(p+i)); } for(i=0;i<n;i++) { while(*(p+i)<0) { printf("ban da nhap sai phan tu thu %d.moi ban nhap lai\n",i+1); scanf("%d",p+i); } } for(i=0;i<n;i++) { if(*(p+i)%2==1&&*(p+i)>max) max=*(p+i); } if(max==0) printf("mang khong co so le"); else printf("so le lon nhat la:%d",max); } Bài 5: Viết chương trình nhập mảng gồm n phần tử số nguyên, in các phần tử vừa nhập theo thứ tự giảm dần.
Nhập tiếp m phần tử số nguyên vào mảng trên, in (n+m) phần tử vừa nhập theo thứ tự giảm dần.