Bài tập lập trình C lớp AT10A - Phần 2: For...(Lượt xem: 6,760) Bài tập lập trình C lớp AT10A - Phần 2: For... Bài 1. Tính giá trị giai thừa n! trong đó n nhập vào từ bàn phím. In kết quả ra màn hình. Code: #include "stdio.h" #include "conio.h" main() { int i,n,s; clrscr(); printf("Nhap so n: "); scanf("%d",&n); if (n>0) { s=1; for (i=1;i<=n;i++) s = s*i; printf("ket qua %d!= %d",n,s); } else printf("Ban phai nhap so nguyen duong!"); getch(); return 0; } br/> Bài 2: Tính tổng: S = 1 + 1/2! + 1/3! +...+ 1/n! với giá trị của n nhập từ bàn phím. Code: #include "stdio.h" #include "conio.h" main() { int i,n,s; float s1; clrscr(); printf("Nhap so n: "); scanf("%d",&n); if (n>0) { s=1; for (i=1;i<=n;i++) { s = s*i; s1 = s1 + (float)1/s; } printf("ket qua S = %f",s1); } else printf("Ban phai nhap so nguyen duong!"); getch(); return 0; } Bài 3: Nhập vào một dãy n số bất kì từ bàn phím. Tính giá trị lớn nhất và nhỏ nhất của dãy số đó. In kết quả ra màn hình cùng vị trí thứ tự của các giá trị max, min trong dãy số. Code: #include "stdio.h" #include "conio.h" main() { int i,n,vtmax,vtmin; float a[100],max,min; clrscr(); printf("Nhap so phan tu cua day so: "); scanf("%d",&n); if (n>0) { for (i=0;i<n;i++) { printf("\nNhap phan tu thu a[%d]: ",i); scanf("%f",&a[i]); } max = a[0]; min = a[0]; for (i=0;i<n;i++) { if (max < a[i]) max = a[i]; if (min > a[i]) min = a[i]; } printf("\nSo lon nhat trong day la: %f, o vi tri ",max); for (i=0;i<n;i++) if (a[i] == max) printf("%4d",i); printf("\nSo nho nhat trong day la: %f, o vi tri ",min); for (i=0;i<n;i++) if (a[i] == min) printf("%4d",i); } else printf("Ban phai nhap so nguyen duong!"); getch(); return 0; } Bài 4: Nhập vào một dãy số bất kì từ bàn phím. Đếm tổng số các số dương và tổng số các số âm. Tính trung bình cộng của các số dương, trung bình cộng các số âm. Tính trung bình cộng của cả dãy số. In kết quả ra màn hình. Code: #include "stdio.h" #include "conio.h" main() { int i,n,am,duong; float a[100],sduong,sam,tbduong,tbam,tbday,sday; clrscr(); printf("Nhap so phan tu cua day so: "); scanf("%d",&n); if (n>0) { for (i=0;i<n;i++) { printf("\nNhap phan tu thu %d: ",i+1); scanf("%f",&a[i]); } am=duong=sduong=sam=sday=0; for (i=0;i<n;i++) { if (a[i] > 0) { sduong=sduong+a[i]; duong = duong + 1; } if (a[i] < 0) { sam=sam+a[i]; am = am + 1; } sday = sday + a[i]; //printf("\nPhan tu thu %d cua day la: %f",i+1,a[i]); } if (duong!=0) { tbduong = (float)sduong/duong; printf("\nTong cac so duong cua day la %.3f, trung binh cong la %.3f",sduong,tbduong); } else printf("\nDay khong co so duong!"); if (am!=0) { tbam = (float)sam/am; printf("\nTong cua cac so am la %.3f, trung binh cong la %.3f",sam,tbam); } else printf("\nDay khong co so am!"); tbday = (float)sday/n; printf("\nTrung binh cong cua day so la %.3f",tbday); } else printf("Ban phai nhap so nguyen duong!"); getch(); return 0; } Bài 5: Tìm giá trị lớn nhất và đếm các giá trị lớn nhất của nửa dưới đường chéo phụ của một ma trận cấp A[n,n]. In ma trận cùng kết quả tìm được ra màn hình. Code: #include "stdio.h" #include "conio.h" main() { int i,j, n,t; float a[100][100],max; clrscr(); printf("Nhap so n: "); scanf("%d",&n); if (n>0) { for (i=0;i<n;i++) for (j=0;j<n;j++) { printf("Nhap gia tri a[%d][%d]: ",i,j); scanf("%f",&a[i][j]); } max = a[2][n-1]; for (i=1;i<n;i++) for (j=n-i;j<n;j++) if (max < a[i][j]) max = a[i][j]; t=0; for (i=1;i<n;i++) for (j=n-i;j<n;j++) if (a[i][j] == max) t=t+1; printf("\nMa tran A:"); printf("\n"); for (i=0;i<n;i++) { for (j=0;j<n;j++) printf("%6.2f",a[i][j]); printf("\n"); } printf("\nGia tri lon nhat la %6.2f",max); printf("\nTim duoc %d vi tri.",t); } else printf("Ban phai nhap so nguyen duong!"); getch(); return 0; } Bài 6: Tính tích hai ma trận C[n,p] = A[n,m] x B[m,p]. In các ma trận ra màn hình. Code: #include "stdio.h" #include "conio.h" main() { int i,j,t,n1,n2,m1,m2; float a[100][100],b[100][100],c[100][100]; clrscr(); printf("\nNhap cap cua ma tran a: "); scanf("%d%d",&n1,&n2); printf("\nNhap cap cua ma tran b: "); scanf("%d%d",&m1,&m2); if (n2!=m1) printf("Hai ma tran khong nhan duoc!"); else if (n1>0&&n2>0&&m2>0) { for (i=0;i<n1;i++) for (j=0;j<n2;j++) { printf("Nhap gia tri a[%d][%d]: ",i,j); scanf("%f",&a[i][j]); } for (i=0;i<n2;i++) for (j=0;j<m2;j++) { printf("Nhap gia tri b[%d][%d]: ",i,j); scanf("%f",&b[i][j]); } for (i=0;i<n1;i++) for (j=0;j<m2;j++) for (t=0;t<n2;t++) c[i][j] = c[i][j] + (a[i][t])*(b[t][j]) ; printf("Ma tran a: \n"); for (i=0;i<n1;i++) { for (j=0;j<n2;j++) printf("%6.2f",a[i][j]); printf("\n"); } printf("Ma tran b: \n"); for (i=0;i<m1;i++) { for (j=0;j<m2;j++) printf("%6.2f",b[i][j]); printf("\n"); } printf("Ma tran c: \n"); for (i=0;i<n1;i++) { for (j=0;j<m2;j++) printf("%6.2f",c[i][j]); printf("\n"); } } else printf("Ban phai nhap so nguyen duong!"); getch(); return 0; } Bài 7. Viết chương trình nhập vào số nguyên dương n. Sau đó in ra màn hình ma trận xoáy A[n,n] theo dạng: 1 2 3 8 9 4 7 6 5 với n = 3 Code: #include "stdio.h" #include "conio.h" main() { int i,j,n,v,m, A[100][100]; clrscr(); printf("Nhap so chieu n cua ma tran vuong a: "); scanf("%d",&n); if (n%2==0) m=n/2; else { m=n/2+1; A[n/2][n/2]=n*n;} v=1; for (i=0;i<m;i++) { for (j=i;j<n-i-1;j++) { A[i][j] = v; ++v; } for (j=i;j<n-i-1;j++) { A[j][n-i-1] = v; ++v; } for (j=n-i-1;j>i;j--) { A[n-i-1][j] = v; ++v; } for (j=n-i-1;j>i;j--) { A[j][i] = v; ++v; } } for (i=0;i<n;i++) { for (j=0;j<n;j++) printf("%6d",A[i][j]); printf("\n"); } getch(); return 0; } Bài 8: Viết chương trình nhập vào hai dãy số nguyên theo chiều tăng dần. Sau đó trộn hai dãy này lại thành dãy thứ ba vẫn theo chiều tăng dần mà không cần sắp xếp lại. In ra màn hình ba dãy. Code: #include "stdio.h" #include "conio.h" main() { int i,j,t,n,m,p,a[100],b[100],c[100]; clrscr(); printf("\nSo phan tu cua day thu nhat: "); scanf("%d",&n); printf("\nSo phan tu cua day thu hai: "); scanf("%d",&m); if (n>0&&m>0) { for (i=0;i<n;i++) { printf("\nNhap phan tu thu %d cua day thu nhat: ",i+1); scanf("%d",&a[i]); } for (i=0;i<m;i++) { printf("\nNhap phan tu thu %d cua day thu hai: ",i+1); scanf("%d",&b[i]); } p = m + n; t=j=0; for (i=0;i<p;i++) { if (b[j] > a[t]) { c[i] = a[t]; ++t; if (t==n) { c[i+1] = b[j]; break; } } else { c[i] = b[j]; ++j; if (j==m) { c[i+1] = a[t]; break; } } } printf("\nDay thu nhat: "); for (i=0;i<n;i++) printf("%4d",a[i]); printf("\nDay thu hai: "); for (i=0;i<m;i++) printf("%4d",b[i]); printf("\nDay thu ba: "); for (i=0;i<p;i++) printf("%4d",c[i]); } else printf("Ban phai nhap so nguyen duong!"); getch(); return 0; } Bài 9: Code: #include "stdio.h" #include "conio.h" #include "math.h" main() { int n,i; float a[100],x,p; clrscr(); printf("\So mu cao nhat : "); scanf("%d",&n); if (n>0) { for (i=0;i<=n;i++) { printf("\nNhap so hang a%d : ",i); scanf("%f",&a[i]); } printf("\nNhap x: "); scanf("%f",&x); p=0; for (i=0;i<=n;i++) p = p + a[i]*pow(x,i); for (i=n;i>=0;i--) { if ((a[i] != 0)&&(a[i]!=1)&&(a[i]!=-1)&&(i!=0)&&(i!=1)) printf(" %.2fx%d ",a[i],i); else if ((a[i]==1)&&(i!=1)) printf("x%d",i); else if ((a[i]==1)&&(i==1)) printf("x",i); else if ((a[i]==-1)&&(i!=1)) printf(" - x%d",i); else if (a[i]==0) continue; else if (i==0) printf(" %.2f ",a[i]); else if (i==1) printf(" %.2fx ",a[i]); if ((a[i-1]>0)&&(i>0)) printf(" + "); } printf(" = %.2f voi x = %.2f",p,x); } getch(); return 0; }
Có 1 kinh nghiệm nhỏ mà anh học được trong khi học lập trình là nên đặt tên biến sao cho dễ gợi nhớ nhất, để khi ta dùng, người khác dùng đều có thể hiểu được. Anh nghĩ em nên sử dụng nó.
copy - paste nguyên bài của b rồi đổi sang .C để chạy thử thì nhập số 2 vào nó cho ra tổng = 0 là sao ? mình cũng làm y hệt vậy ko biết sai ở đâu, lên xem giải ở đây cũng vậy @@ đáng ra nhập 2 vào tổng phải là 1,5 chứ
Có thể là do 2 bạn sử dụng 2 ide khác nhau. Mình sử dụng code block và mình sử lại code bài 2 để chạy được trên codeblock như thế này: Code: #include <stdio.h> #include <stdlib.h> int main() { int i,n,s; float s1; printf("Nhap so n: "); scanf("%d",&n); if (n>0) { s=1; for (i=1;i<=n;i++) { s = s*i; s1 = s1 + (float)1/s; } printf("ket qua S = %f",s1); } else printf("Ban phai nhap so nguyen duong!"); return 0; }
cho hỏi bạn dùng phần mềm gì để chạy code, mình dùng trên ubuntu, mình cũng đã thử trên windows trước đó, cụ thể là dùng turbo c++ 3.0, kết quả không sai.
0 nhận xét:
Đăng nhận xét