SlideShare a Scribd company logo
1 of 33
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
PHẦN 1
Câu 1.1: Viết hàm tính tổng s = 1 + 3 + 5 + … + (2*n + 1), với n nguyên dương. Viết chương trình nhập vào từ bàn phím số nguyên
dương n, áp dụng hàm trên tính và in ra màn hình tổng tương ứng.
#include <stdio.h>
#include <conio.h>
int tong (int n)
{
int i, s=0;
for (i=0;i<=n;i++)
s+=(2*i+1);
return s;
}
void main()
{
int n,s;
clrscr();
nhap: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap;
s = tong(n);
printf("Tong la: s = %d",s);
getch();
}
Câu 1.2: Viết hàm tính giai thừa của một số nguyên không âm. Viết chương trình nhập vào từ bàn phím số nguyên dương n, áp
dụng hàm trên in ra màn hình giai thừa của n.
#include <stdio.h>
#include <conio.h>
unsigned long int giai_thua (int n)
{
int i, gt=1;
for (i=1;i<=n;i++)
gt*=i;
return gt;
}
void main()
{
int n;
unsigned long int gt;
clrscr();
nhap: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap;
gt = giai_thua(n);
printf("Giai thua cua %d la: gt[%d] = %d",n,n,gt);
getch();
}
Câu 1.3: Viết hàm đổi một số nguyên không âm thành xâu nhị phân. Viết chương trình nhập vào từ bàn phím số nguyên không
âm n, áp dụng hàm trên in ra màn hình xâu nhị phân tương ứng.
#include <stdio.h>
#include <conio.h>
int np(int n)
{
int i,m, snp;
m=128;
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
for(i=0; i<=7; i++)
{snp= n/m;
printf("%d",snp) ;
n = n- snp*m;
m= m/2;
}
return snp;}
void main()
{
int n;
printf("Moi ban nhap N="); scanf("%d", &n);
np(n);
getch();
}
Câu 1.4: Viết hàm tính tổng s = 2 + 4 + 6 + … + 2*n, với n nguyên dương. Viết chương trình nhập vào từ bàn phím số nguyên
dương n, áp dụng hàm trên tính và in ra màn hình tổng tương ứng.
#include <stdio.h>
#include <conio.h>
int tong (int n)
{
int i, s=0;
for (i=1;i<=n;i++)
s+=(2*i);
return s;
}
void main()
{
int n,s;
clrscr();
nhap: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap;
s = tong(n);
printf("Tong la: s = %d",s);
getch();
}
Câu 1.5: Viết hàm đổi một số nguyên không âm thành xâu Hecxa. Viết chương trình nhập vào từ bàn phím số nguyên không âm
n, áp dụng hàm trên tìm và in ra màn hình xâu Hecxa tương ứng.
#include <conio.h>
#include <stdio.h>
void hexa(int n)
{int i=0,j=0;
int a[20];
while (n!=0)
{a[j]=n%16;n=n/16;j++;}
for(i=j;i>=0;i--)
{if (a[i]<10) printf("%d",a[i]);
else
switch (a[i])
{case 10: printf("A");break;
case 11: printf("B");break;
case 12: printf("C");break;
case 13: printf("D");break;
case 14: printf("E");break;
case 15: printf("F");break;
}
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
}
}
void main()
{clrscr();
int n;
tiep:printf("nBan hay nhap so can chuyen doi: ");
scanf("%d",&n);
if (n<0) goto tiep;
printf("nnMa Hexa cua so vua nhap la: ");
printf("nntt");
hexa(n);
printf("nnChuc vui. Copyright Hiro ^^");
getch();
}
Câu 1.6: Viết hàm tính tổng s = 13 + 23 + ... + n3, với n nguyên dương. Viết chương trình nhập vào từ bàn phím số nguyên dương
n, áp dụng hàm trên tính và in ra màn hình tổng tương ứng
#include <stdio.h>
#include <conio.h>
#include <math.h>
int tong (int n)
{
int i, s=0;
for (i=1;i<=n;i++)
s+=i*i*i;
return s;
}
void main()
{
int n,s;
clrscr();
nhap: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap;
s = tong(n);
printf("Tong la: s = %d",s);
getch();
}
Câu 1.7: Viết hàm kiểm tra tính nguyên tố của một số nguyên dương. Viết chương trình nhập vào từ bàn phím số nguyên dương
n, áp dụng hàm trên hãy cho biết n có phải là số nguyên tố hay không?
#include <stdio.h>
#include <conio.h>
#include <math.h>
int so_ngto (int n)
{
int i,kt=1;
if (n==1) kt=0;
for (i=2;i<(int)(n/2);i++){
if (n%i == 0) return kt=0;
break;
}
return kt;
}
void main()
{
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
int n;
clrscr();
nhap: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap;
if (so_ngto(n) == 1) printf("So %d la so nguyen to!",n);
else printf("So %d khong phai la so nguyen to!",n);
getch();
}
Câu 1.8: Viết hàm tính tổng s = 1*2*3 + 2*3*4 + ...+ n*(n+1)*(n+2), với n nguyên dương. Viết chương trình nhập vào từ bàn phím
số nguyên dương n, áp dụng hàm trên tính và in ra màn hình tổng tương ứng.
#include <stdio.h>
#include <conio.h>
#include <math.h>
int tong (int n)
{
int i, s=0;
for (i=1;i<=n;i++)
s+=i*(i+1)*(i+2);
return s;
}
void main()
{
int n,s;
clrscr();
nhap: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap;
s = tong(n);
printf("Tong la: s = %d",s);
getch();
}
Câu 1.9: Viết hàm kiểm tra tính hoàn thiện của một số nguyên dương. Viết chương trình nhập vào từ bàn phím số nguyên dương
n, áp dụng hàm trên thông báo ra màn hình số n có phải là số hoàn thiện hay không?
#include <stdio.h>
#include <conio.h>
int so_hoanthien (int n)
{
int i,s=0;
for (i=1;i<=(n/2);i++)
if (n%i == 0)
s+=i;
if (s==n) return 1;
return 0;
}
void main()
{
int n;
clrscr();
nhap: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap;
if (so_hoanthien(n) == 1) printf("So %d la so hoan thien!",n);
else printf("So %d khong phai la so hoan thien!",n);
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
getch();
}
Câu 1.10: Viết hàm tìm số bé nhất của 3 số thực. Viết chương trình nhập vào từ bàn phím 3 số thực x, y, z, áp dụng hàm trên tìm
và in ra màn hình số bé nhất của 3 số vừa nhập.
Câu 1.11: Viết hàm giải và biện luận phương trình bậc hai ax2
+ bx + c = 0. Viết chương trình nhập vào từ bàn phím ba số thực a,
b, c, áp dụng hàm trên cho biết kết quả giải phương trình bậc hai với ba hệ số a, b, c vừa nhập
#include <stdio.h>
#include <conio.h>
#include <math.h>
void giai_ptb2(float a, float b, float c)
{
float delta;
if (a!=0) {
delta = b*b - 4*a*c;
if (delta>0)
printf("Phuong trinh co 2 nghiem thuc phan biet: x1 = %5.2f, x2 = %5.2f",
(-b-sqrt(delta))/(2*a),(-b+sqrt(delta))/(2*a));
else if (delta==0)
printf("Phuong trinh co 2 nghiem thuc chung: x1 = x2 = %5.2f",(-b)/(2*a));
else printf("Phuong trinh khong co nghiem so thuc.");
}
else if (b!=0)
printf("Phuong trinh co mot nghiem thuc: x = %5.2f",-c/b);
else if (c==0)
printf("Phuong trinh co vo so nghiem thuc.");
else
printf("Phuong trinh khong co nghiem so thuc.");
}
void main()
{
float a,b,c;
clrscr();
printf("Nhap a: a = "); scanf("%f",&a);
printf("Nhap b: b = "); scanf("%f",&b);
printf("Nhap c: c = "); scanf("%f",&c);
giai_ptb2(a,b,c);
getch();
}
//nuyen bui hau
#include <stdio.h>
#include <conio.h>
#include <math.h>
void bh(float a, float b,float c)
{
float dt;
if (a!=0)
{
dt = b*b-4*a*c;
if (dt>0) printf("PT co 2 nghiem phan biet: x1=%f x2=%f",(-b-sqrt(dt))/2/a,(-
b+sqrt(dt))/2/a );
if (dt == 0) printf("PT co nghiem kep x= %f", -b/2/a);
if (dt <0) printf("PT VN");
}
else
if (b!=0) printf("Ngiem duy nhat: x= %f",-c/b);
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
else if (c!=0) printf("Vo li");
else printf("Vo so nghiem");
}
void main()
{ clrscr();
float a,b,c;
printf("nNhap 3 so: "); scanf("%f%f%f", &a, &b, &c);
bh(a,b,c);
getch();}
Câu 1.12: Viết hàm kiểu int kiểm tra xem 3 số thực có thể lập thành 3 cạnh của một tam giác hay không? Viết chương trình nhập
vào từ bàn phím 3 số thực a, b, c, áp dụng hàm trên thông báo ra màn hình 3 số vừa nhập có tạo thành 3 cạnh của một tam giác
hay không?
#include <stdio.h>
#include <conio.h>
int tg(int a, int b, int c)
{
int kt =1;
if ((a+b <= c) || (a+c <= b) || (b+c <= a)) return kt =0;
return kt;
}
void main()
{ clrscr();
int a, b,c;
printf("nMoi ban nhap 3so can kt: "); scanf("%d%d%d", &a, &b,&c);
if (tg(a,b,c) == 1) printf ("3 so %d %d %d lap thanh 3 canh cua tam giac", a,b,c);
else printf("3 so %d %d %d khong lap thanh 3 canh cua tam giac", a,b,c);
getch();
}
Câu 1.13: Viết hàm đếm số từ trong một xâu ký tự chuẩn (xâu chuẩn theo nghĩa các từ trong xâu được ngăn cách bởi một dấu
cách trống). Viết chương trình nhập vào từ bàn phím một xâu ký tự chuẩn s, áp dụng hàm trên thông báo ra màn hình số từ của
xâu.
#include <stdio.h>
#include <conio.h>
int sotu(char *s)
{
int i=0,n=0;
while (s[i]!='0') {
if (s[i]==' ') n++;
i++;
}
return n+1;
}
void main()
{
char *s;
clrscr();
printf("Nhap vao mot xau ki tu: ");
gets(s);
printf("So tu trong xau vua nhap la: %d",sotu(s));
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
getch();
}
Câu 1.14: Viết hàm tính số fibonaxi thứ n. Viết chương trình nhập vào từ bàn phím số nguyên dương n. Áp dụng hàm trên tìm và
in ra màn hình số fibonaxi tương ứng.
#include <stdio.h>
#include <conio.h>
int so_fibonaxi (int n)
{
if ((n==1) || (n==2)) return 1;
return so_fibonaxi(n-1) + so_fibonaxi(n-2);
}
void main()
{
int n,f;
clrscr();
nhap: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap;
f = so_fibonaxi(n);
printf("So fibonaxi thu %d la: %d",n,f);
getch();
}
Câu 1.15: Viết hàm có kiểu void nhằm đổi chỗ giá trị hai biến thực cho nhau. Viết chương trình nhập vào từ bàn phím hai số thực
x, y, áp dụng hàm trên để đổi chỗ giá trị hai biến x, y cho nhau. In ra màn hình giá trị của x và y trước và sau khi đổi chỗ.
#include <stdio.h>
#include <conio.h>
void doicho(float *x, float *y)
{
float temp;
temp = *x;
*x = *y;
*y = temp;
}
void main()
{
float a,b;
clrscr();
printf("Nhap so thuc a: a = "); scanf("%f",&a);
printf("Nhap so thuc b: b = "); scanf("%f",&b);
printf("nnnTruoc khi doi cho.nnta = %4.2fntb = %4.2f",a,b);
doicho(&a,&b);
printf("nnnSau khi doi cho.nnta = %4.2fntb = %4.2f",a,b);
getch();
}
Câu 1.16: Viết hàm tìm ước chung lớn nhất của 2 số nguyên dương. Viết chương trình nhập vào từ bàn phím 2 số nguyên dương a
và b, áp dụng hàm trên tìm và in ra màn hình ước chung lớn nhất của chúng
#include <stdio.h>
#include <conio.h>
#include <math.h>
int ucln(int x, int y)
{
x = abs(x);
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
y = abs(y);
if (x==y) return x;
if (x>y) return ucln(x-y,y);
return ucln(x,y-x);
}
void main()
{
int a,b,c;
clrscr();
nhap: printf("Nhap a: a = "); scanf("%d",&a);
printf("Nhap b: b = "); scanf("%d",&b);
if ((a<=0) || (b<=0)) goto nhap;
c = ucln(a,b);
printf("Uoc chung lon nhat cua 2 so %d va %d la: %d",a,b,c);
getch();
}
Câu 1.17: Viết hàm tính độ dài xâu ký tự (không sử dụng hàm chuẩn strlen). Viết chương trình nhập vào từ bàn phím xâu ký tự s,
áp dụng hàm trên in ra màn hình độ dài của xâu vừa nhập
#include <stdio.h>
#include <conio.h>
int do_dai_xau(char *s)
{
int i=0;
while (s[i]!='0') i++;
return i;
}
void main()
{
char *s;
clrscr();
printf("Nhap vao mot xau ki tu: ");
gets(s);
printf("Do dai xau vua nhap la: %d",do_dai_xau(s));
getch();
}
Câu 1.18: Viết hàm đếm số chữ cái in hoa trong một xâu ký tự. Viết chương trình nhập vào từ bàn phím xâu ký tự s, áp dụng hàm
trên cho biết trong xâu s có bao nhiêu chữ in hoa.
#include <stdio.h>
#include <conio.h>
int so_kytu_hoa(char *s)
{
int i=0,n=0;
while (s[i]!='0') {
if ((s[i]>='A') && (s[i]<='Z')) n++;
i++;
}
return n;
}
void main()
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
{
char *s;
clrscr();
printf("Nhap vao mot xau ki tu: ");
gets(s);
printf("So ky tu hoa trong xau vua nhap la: %d",so_kytu_hoa(s));
getch();
}
Câu 1.19: Viết hàm đổi các chữ cái in hoa của một xâu ký tự thành chữ cái in thường. Viết chương trình nhập vào từ bàn phím
xâu ký tự s, áp dụng hàm trên đổi các chữ cái in hoa của xâu s thành chữ cái in thường. In ra màn hình xâu trước và sau khi đổi.
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
void doi_kytu(char *s)
{
int i=0;
while (s[i]!='0') {
s[i] = s[i]+'a'-'A';
i++;
}
s[i] = '0';
}
void main()
{
char *s;
clrscr();
printf("Nhap vao mot xau ki tu: ");
gets(s);
printf("nXau ban dau: nt");
puts(s);
doi_kytu(s);
printf("nXau sau khi chuyen doi: nt");
puts(s);
getch();
}
Câu 1.20: Viết hàm giải và biện luận phương trình bậc nhất ax + b = 0. Viết chương trình nhập vào từ bàn phím hai số thực a, b,
áp dụng hàm trên cho biết kết quả giải phương trình bậc nhất với hai hệ số a, b vừa nhập.
#include <stdio.h>
#include <conio.h>
void giai_ptb1(float a, float b)
{
if (a!=0) printf("Phuong trinh co mot nghiem: x = %5.2f",-b/a);
else if (b==0) printf("Phuong trinh co vo so nghiem thuc.");
else printf("Phuong trinh vo nghiem.");
}
void main()
{
float a,b;
clrscr();
printf("Nhap a: a = "); scanf("%f",&a);
printf("Nhap b: b = "); scanf("%f",&b);
giai_ptb1(a,b);
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
getch();
}
PHẦN 2
Câu 2.1: Viết chương trình nhập một mảng một chiều a gồm n số thực. Hãy tính và in ra màn hình trung bình cộng của các phần
tử trong mảng.
#include <stdio.h>
#include <conio.h>
void nhap_mang(float A[], int n)
{
int i;
for (i=0;i<n;i++) {
printf("A[%d] = ",i);
scanf("%f",&A[i]);
}
}
void in_mang(float A[], int n)
{
int i;
for (i=0;i<n;i++) printf("%6.2f",A[i]);
}
float tb_cong(float A[], int n)
{
int i;
float s=0;
for (i=0;i<n;i++)
s+=A[i];
return s/n;
}
void main()
{
float A[100];
int n;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n);
printf("Mang vua nhap la: nn");
in_mang(A,n);
printf("nnTrung binh cong cua mang vua nhap la: %5.2f",tb_cong(A,n));
getch();
}
Câu 2.2: Viết chương trình nhập một mảng một chiều n số nguyên. Sắp xếp mảng theo thứ tự tăng dần. In ra màn hình mảng
trước và sau khi sắp xếp
#include <stdio.h>
#include <conio.h>
void nhap_mang(int A[], int n)
{
int i;
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
for (i=0;i<n;i++) {
printf("A[%d] = ",i);
scanf("%d",&A[i]);
}
}
void in_mang(int A[], int n)
{
int i;
for (i=0;i<n;i++) printf("%6d",A[i]);
}
void sap_xep(int A[], int n)
{
int i,j,temp;
for (i=0;i<n-1;i++)
for (j=i;j<n;j++)
if (A[i]>A[j]) {
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
void main()
{
int A[100];
int n;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap_n;
printf("nNhap so lieu vao mang A:nn");
nhap_mang(A,n);
printf("Mang vua nhap la: nn");
in_mang(A,n);
sap_xep(A,n);
printf("nnMang sau khi sap xep la:nn");
in_mang(A,n);
getch();
}
Câu 2.3: Viết chương trình nhập một mảng một chiều n số thực. Sắp xếp mảng theo thứ tự giảm dần. In ra màn hình mảng trước
và sau khi sắp xếp
#include <stdio.h>
#include <conio.h>
void nhap_mang(float A[], int n)
int i;
for (i=0;i<n;i++) {
printf("A[%d] = ",i);
scanf("%f",&A[i]);
}
}
void in_mang(float A[], int n)
{
int i;
for (i=0;i<n;i++) printf("%6.2f",A[i]);
}
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
void sap_xep(float A[], int n)
{
int i,j;
float temp;
for (i=0;i<n-1;i++)
for (j=i;j<n;j++)
if (A[i]<A[j]) {
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
void main()
{
float A[100];
int n;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap_n;
printf("nNhap so lieu vao mang A:nn");
nhap_mang(A,n);
printf("Mang vua nhap la: nn");
in_mang(A,n);
sap_xep(A,n);
printf("nnMang sau khi sap xep la:nn");
in_mang(A,n);
getch();
}
Câu 2.4: Viết chương trình nhập một mảng một chiều n số thực. Đếm và thông báo ra màn hình trong mảng có bao nhiêu phần tử
âm
#include <stdio.h>
#include <conio.h>
void nhap_mang(float A[], int n)
{
int i;
for (i=0;i<n;i++) {
printf("A[%d] = ",i);
scanf("%f",&A[i]);
}
}
void in_mang(float A[], int n)
{
int i;
for (i=0;i<n;i++) printf("%6.2f",A[i]);
}
int so_pt_am(float A[], int n)
{
int i,s=0;
for (i=0;i<n;i++)
if (A[i]<0) s++;
return s;
}
void main()
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
{
float A[100];
int n;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n);
printf("Mang vua nhap la: nn");
in_mang(A,n);
printf("nnSo phan tu am cua mang la: %d",so_pt_am(A,n));
getch();
Câu 2.5: Viết chương trình nhập một mảng một chiều n số thực. Đếm và thông báo ra màn hình trong mảng có bao nhiêu phần tử
dương.
#include <stdio.h>
#include <conio.h>
void nhap_mang(float A[], int n)
{
int i;
for (i=0;i<n;i++) {
printf("A[%d] = ",i);
scanf("%f",&A[i]);
}
}
void in_mang(float A[], int n)
{
int i;
for (i=0;i<n;i++) printf("%6.2f",A[i]);
}
int so_pt_duong(float A[], int n)
{
int i,s=0;
for (i=0;i<n;i++)
if (A[i]>0) s++;
return s;
}
void main()
{
float A[100];
int n;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n);
printf("Mang vua nhap la: nn");
in_mang(A,n);
printf("nnSo phan tu duong cua mang la: %d",so_pt_duong(A,n));
getch();
}
Câu 2.6: Viết chương trình nhập một mảng một chiều n số thực. Tìm và in ra màn hình giá trị lớn nhất của mảng
#include <stdio.h>
#include <conio.h>
void nhap_mang(float A[], int n)
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
{
int i;
for (i=0;i<n;i++) {
printf("A[%d] = ",i);
scanf("%f",&A[i]);
}
}
void in_mang(float A[], int n)
{
int i;
for (i=0;i<n;i++) printf("%6.2f",A[i]);
}
float max(float A[], int n)
{
int i;
float s;
for (i=0;i<n;i++)
if (A[i]>s) s=A[i];
return s;
}
void main()
{
float A[100];
int n;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n);
printf("Mang vua nhap la: nn");
in_mang(A,n);
printf("nnGia tri lon nhat cua mang la: %6.2f",max(A,n));
getch();
}
Câu 2.7: Viết chương trình nhập một mảng một chiều gồm n số nguyên. Tính và in ra màn hình tổng của các phần tử trong mảng.
#include <stdio.h>
#include <conio.h>
void nhap_mang(int A[], int n)
{
int i;
for (i=0;i<n;i++) {
printf("A[%d] = ",i);
scanf("%d",&A[i]);
}
}
void in_mang(int A[], int n)
{
int i;
for (i=0;i<n;i++) printf("%6d",A[i]);
}
int tong(int A[], int n)
{
int i;
int s=0;
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
for (i=0;i<n;i++)
s+=A[i];
return s;
}
void main()
{
int A[100];
int n;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n);
printf("Mang vua nhap la: nn");
in_mang(A,n);
printf("nnTong cac phan tu cua mang vua nhap la: %6d",tong(A,n));
getch();
}
Câu 2.8: Viết chương trình nhập một mảng một chiều gồm n số nguyên dương. Tính và thông báo ra màn hình tổng các phần tử
có giá trị chẵn trong mảng.
#include <stdio.h>
#include <conio.h>
void nhap_mang(int A[], int n)
{
int i;
for (i=0;i<n;i++) {
nhap: printf("A[%d] = ",i);
scanf("%d",&A[i]);
if (A[i]<=0) goto nhap;
}
}
void in_mang(int A[], int n)
{
int i;
for (i=0;i<n;i++) printf("%6d",A[i]);
}
void tim_pt_chan(int A[], int n)
{
int i;
for (i=0;i<n;i++)
if (A[i]%2==0) printf("%6d",A[i]);
}
void main()
{
int A[100];
int n;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n);
printf("Mang vua nhap la: nn");
in_mang(A,n);
printf("nnCac phan tu chan trong mang la:n");
tim_pt_chan(A,n);
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
getch();
}
Câu 2.9: Viết chương trình nhập một mảng một chiều gồm n số nguyên dương. Tính và thông báo ra màn hình tổng các phần tử
có giá trị lẻ trong mảng.
#include <stdio.h>
#include <conio.h>
void nhap_mang(int A[], int n)
{
int i;
for (i=0;i<n;i++) {
nhap: printf("A[%d] = ",i);
scanf("%d",&A[i]);
if (A[i]<=0) goto nhap;
}
}
void in_mang(int A[], int n)
{
int i;
for (i=0;i<n;i++) printf("%6d",A[i]);
}
void tim_pt_le(int A[], int n)
{
int i;
for (i=0;i<n;i++)
if (A[i]%2!=0) printf("%6d",A[i]);
}
void main()
{
int A[100];
int n;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n);
printf("Mang vua nhap la: nn");
in_mang(A,n);
printf("nnCac phan tu le trong mang la:n");
tim_pt_le(A,n);
getch();
}
Câu 2.10: Viết chương trình nhập và xem một mảng một chiều n số nguyên bằng cách sử dụng con trỏ.
#include <stdio.h>
#include <conio.h>
void main()
{int a[5], i,*p;
p=a;
printf("Nhap mang theo con tro: n");
for(i=0;i<5;i++)
{printf("Nhap phan tu thu %2d= ",i);
scanf("%d",p); p++;
}
printf("nMang vua nhap la:");
p-=5;
for(i=0;i<5;i++)
printf("%5d",*(p+i));
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
getch();
}
Câu 2.11: Viết chương nhập vào một mảng hai chiều anxm gồm các số nguyên. Hãy in ra màn hình dạng chuyển vị của ma trận
a.
#include <stdio.h>
#include <conio.h>
#define N 100
#define M 100
void nhap_mang(int A[N][M], int n, int m)
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<m;j++) {
printf("A[%d][%d] = ",i,j);
scanf("%d",&A[i][j]);
}
}
void in_mang(int A[N][M], int n, int m)
{
int i,j;
for (i=0;i<n;i++){
printf("nn");
for (j=0;j<m;j++)
printf("%5d",A[i][j]);
}
}
void chuyen_vi(int A[N][M], int n, int m)
{
int i,j;
for (j=0;j<m;j++){
printf("nn");
for (i=0;i<n;i++)
printf("%5d",A[i][j]);
}
}
void main()
{
int A[N][M];
int n,m;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
printf("Nhap m: m = "); scanf("%d",&m);
if (n<=0 || m<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n,m);
printf("nnMa tran vua nhap la: n");
in_mang(A,n,m);
printf("nnMa tran chuyen vi cua ma tran A la: ");
chuyen_vi(A,n,m);
getch();
}
Câu 2.12: Viết chương trình nhập hai ma trận anxm, bnxm gồm các số nguyên. Hãy tính và in ra màn hình ma trận cnxm là tổng
của hai ma trận trên.
#include <stdio.h>
#include <conio.h>
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
#define M 100
#define N 100
void nhap(int a[M][N], int m, int n)
{
int i, j, tg;
printf("Moi ban nhap mang:n") ;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
{
printf("PT[%d][%d]=", i,j);
scanf("%d", &a[i][j]);
}}
void in(int a[M][N], int m, int n)
{
int i,j;
// printf("nMang vua nhap la:");
for(i=0; i<m; i++)
{printf("nn");
for(j=0; j<n; j++)
printf("%5d", a[i][j]);}
printf("n");
}
int tong(int a[M][N], int b[M][N], int c[M][N],int m ,int n)
{
int i,j;
//for(i=0; i<m; i++)
//for(j=0; j<n; j++) c[i][j] =0;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
c[i][j]=a[i][j]+b[i][j];
}
void main()
{ clrscr();
int m,n, a[M][N], b[M][N], c[M][N];
printf("nMoi ban nhap m,n:"); scanf("%d%d", &m,&n);
nhap(a,m,n); in(a,m,n);nhap(b,m,n); in(b,m,n);
printf("n Tong hai mang la:"); tong(a,b,c,m,n);in(c,m,n);
getch();}
Câu 2.13: Viết chương trình nhập và xem mảng hai chiều anxn, tính và in ra màn hình tổng các phần tử nằm trên đường chéo
chính.
#include <stdio.h>
#include <conio.h>
#define N 100
#define M 100
void nhap_mang(float A[][N], int n)
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++) {
printf("A[%d][%d] = ",i,j);
scanf("%f",&A[i][j]);
}
}
void in_mang(float A[][N], int n)
{
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
int i,j;
for (i=0;i<n;i++){
printf("nn");
for (j=0;j<n;j++)
printf("%5.2f",A[i][j]);
}
}
float tong_dc_chinh(float A[][N], int n)
{
int i,j,s=0;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
if (i==j) s+=A[i][j];
return s;
}
void main()
{
float A[N][N];
int n;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n);
printf("Mang vua nhap la: n");
in_mang(A,n);
printf("nnTong cac phan tu tren duong cheo chinh trong mang la:
%5.2f",tong_dc_chinh(A,n));
getch();
}
Câu 2.14: Viết chương trình nhập hai ma trận anxm, bnxm gồm các số nguyên. Hãy tính và in ra màn hình ma trận cnxm là hiệu
của hai ma trận trên.
#include <stdio.h>
#include <conio.h>
#define M 100
#define N 100
void nhap(int a[M][N], int m, int n)
{
int i, j, tg;
printf("Moi ban nhap mang:n") ;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
{
printf("PT[%d][%d]=", i,j);
scanf("%d", &a[i][j]);
}}
void in(int a[M][N], int m, int n)
{
int i,j;
// printf("nMang vua nhap la:");
for(i=0; i<m; i++)
{printf("nn");
for(j=0; j<n; j++)
printf("%5d", a[i][j]);}
printf("n");
}
int hieu(int a[M][N], int b[M][N], int c[M][N],int m ,int n)
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
{
int i,j;
//for(i=0; i<m; i++)
//for(j=0; j<n; j++) c[i][j] =0;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
c[i][j]=a[i][j]-b[i][j];
}
void main()
{ clrscr();
int m,n, a[M][N], b[M][N], c[M][N];
printf("nMoi ban nhap m,n:"); scanf("%d%d", &m,&n);
nhap(a,m,n); in(a,m,n);nhap(b,m,n); in(b,m,n);
printf("n Hieu hai mang la:"); hieu(a,b,c,m,n);in(c,m,n);
getch();}
Câu 2.15: Viết chương trình nhập và xem mảng hai chiều anxm, tìm và in ra màn hình phần tử lớn nhất của mảng.
#include <stdio.h>
#include <conio.h>
#define N 100
#define M 100
void nhap_mang(float A[N][M], int n, int m)
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<m;j++) {
printf("A[%d][%d] = ",i,j);
scanf("%f",&A[i][j]);
}
}
void in_mang(float A[N][M], int n, int m)
{
int i,j;
for (i=0;i<n;i++){
printf("nn");
for (j=0;j<m;j++)
printf("%5.2f",A[i][j]);
}
}
float max(float A[N][M], int n, int m)
{
int i,j;
float ma=A[0][0];
for (i=0;i<n;i++)
for (j=0;j<m;j++)
if (A[i][j]<ma) ma=A[i][j];
return ma;
}
void main()
{
float A[N][M];
int n,m;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
printf("Nhap m: m = "); scanf("%d",&m);
if (n<=0 || m<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n,m);
printf("Mang vua nhap la: n");
in_mang(A,n,m);
printf("nnGia tri lon nhat cua mang la: %5.2f",max(A,n,m));
getch();
}
Câu 2.16: Viết chương trình nhập và xem mảng hai chiều anxm, tìm và in ra màn hình phần tử nhỏ nhất của mảng.
#include <stdio.h>
#include <conio.h>
#define N 100
#define M 100
void nhap_mang(float A[N][M], int n, int m)
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<m;j++) {
printf("A[%d][%d] = ",i,j);
scanf("%f",&A[i][j]);
}
}
void in_mang(float A[N][M], int n, int m)
{
int i,j;
for (i=0;i<n;i++){
printf("nn");
for (j=0;j<m;j++)
printf("%5.2f",A[i][j]);
}
}
float min(float A[N][M], int n, int m)
{
int i,j;
float mi=A[0][0];
for (i=0;i<n;i++)
for (j=0;j<m;j++)
if (A[i][j]<mi) mi=A[i][j];
return mi;
}
void main()
{
float A[N][M];
int n,m;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
printf("Nhap m: m = "); scanf("%d",&m);
if (n<=0 || m<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n,m);
printf("Mang vua nhap la: n");
in_mang(A,n,m);
printf("nnGia tri nho nhat cua mang la: %5.2f",min(A,n,m));
getch();
}
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
Câu 2.17: Viết chương trình nhập vào một mảng hai chiều anxm gồm các số nguyên. Hãy xây dựng ma trận b là ma trận chuyển
vị của a. In ra màn hình hai ma trận a và b.
Câu 2.18: Viết chương trình nhập vào một mảng hai chiều anxm gồm các số nguyên. Tính và in ra màn hình tổng của các phần tử
trên mỗi hàng.
#include <stdio.h>
#include <conio.h>
#define M 100
#define N 100
void nhap(int a[M][N], int m, int n)
{
int i, j, tg;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
{
printf("A[%d][%d]=", i,j);
scanf("%d", &a[i][j]);
}}
void in(int a[M][N], int m, int n)
{
int i,j;
printf("nMang vua nhap la:");
for(i=0; i<m; i++)
{printf("nn");
for(j=0; j<n; j++)
printf("%5d", a[i][j]);}
}
int tonghang(int a[M][N], int m ,int n)
{
int i,j, tong;
tong =0;
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
tong+=a[i][j];
printf("nTong hang %d la:%d",i,tong);
tong=0; } }
void main()
{ clrscr();
int m,n, a[M][N];
printf("nMoi ban nhap m,n:"); scanf("%d%d", &m,&n);
nhap(a,m,n); in(a,m,n); tonghang(a,m,n);
getch();}
Câu 2.19: Viết chương trình nhập vào một mảng hai chiều anxm gồm các số nguyên. Tính và in ra màn hình tổng của các phần tử
trên mỗi cột.
#include <stdio.h>
#include <conio.h>
#define M 100
#define N 100
void nhap(int a[M][N], int m, int n)
{
int i, j, tg;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
{
printf("A[%d][%d]=", i,j);
scanf("%d", &a[i][j]);
}}
void in(int a[M][N], int m, int n)
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
{
int i,j;
printf("nMang vua nhap la:");
for(i=0; i<m; i++)
{printf("nn");
for(j=0; j<n; j++)
printf("%5d", a[i][j]);}
}
int tongcot(int a[M][N], int m ,int n)
{
int i,j, tong;
tong =0;
for(j=0; j<n; j++)
{
for(i=0; i<m; i++)
tong+=a[i][j];
printf("nTong cot %d la:%d",j,tong);
tong=0; } }
void main()
{ clrscr();
int m,n, a[M][N];
printf("nMoi ban nhap m,n:"); scanf("%d%d", &m,&n);
nhap(a,m,n); in(a,m,n); tongcot(a,m,n);
getch();}
Câu 2.20: Viết chương trình nhập vào một mảng hai chiều anxm gồm các số thực. Đếm và in ra màn hình số phần tử dương có
mặt trong mảng.
#include <stdio.h>
#include <conio.h>
#define N 100
#define M 100
void nhap_mang(float A[N][M], int n, int m)
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<m;j++) {
printf("A[%d][%d] = ",i,j);
scanf("%f",&A[i][j]);
}
}
void in_mang(float A[N][M], int n, int m)
{
int i,j;
for (i=0;i<n;i++){
printf("nn");
for (j=0;j<m;j++)
printf("%5.2f",A[i][j]);
}
}
int so_pt_duong(float A[N][M], int n, int m)
{
int i,j,s=0;
for (i=0;i<n;i++)
for (j=0;j<m;j++)
if (A[i][j]>0) s++;
return s;
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
}
void main()
{
float A[N][M];
int n,m;
clrscr();
nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
printf("Nhap m: m = "); scanf("%d",&m);
if (n<=0 || m<=0) goto nhap_n;
printf("Nhap so lieu vao mang A:nn");
nhap_mang(A,n,m);
printf("Mang vua nhap la: n");
printf("nnSo phan tu duong trong mang la: %d",so_pt_duong(A,n,m));
getch();
}
PHẦN 3
Câu 3.1: Cho cấu trúc phân số gồm tử số và mẫu số như sau: struct PS {int tu, mau;};
- Viết hàm tạo phân số
- Viết hàm in phân số dạng tu/mau
- Viết hàm tính tổng hai phân số, kết quả trả về phân số
Viết chương trình sử dụng các hàm trên nhập hai phân số, tính và in ra màn hình tổng của chúng.
#include <stdio.h>
#include <conio.h>
int ucln(int a, int b)
{
a = abs(a);
b = abs(b);
if (a==b) return a;
if (a>b) return ucln(a-b,b);
return ucln(a,b-a);
}
int bcnn(int a, int b)
{
a = abs(a);
b = abs(b);
return (a*b)/ucln(a,b);
}
typedef struct PS{
int tu;
int mau;
} phanso;
phanso nhap_PS(void)
{
phanso x;
printf("Nhap tu so: "); scanf("%d",&x.tu);
printf("Nhap mau so: "); scanf("%d",&x.mau);
return x;
}
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
void in_PS(phanso *x)
{
printf("%d/%d",x->tu,x->mau);
}
phanso tong_2_PS(phanso x, phanso y)
{
phanso z;
z.tu = x.tu*bcnn(x.mau,y.mau)/x.mau + y.tu*bcnn(x.mau,y.mau)/y.mau;
z.mau = bcnn(x.mau,y.mau);
return z;
}
void main()
{
phanso x,y,z;
clrscr();
printf("Nhap phan so x:n");
x = nhap_PS();
printf("Nhap phan so y:n");
y = nhap_PS();
printf("nnt x = "); in_PS(&x);
printf("nt y = "); in_PS(&y);
z = tong_2_PS(x,y);
printf("nnTong 2 phan so la:n");
printf("nt z = "); in_PS(&z);
getch();
}
Câu 3.2: Cho cấu trúc phân số gồm tử số và mẫu số như sau: struct PS {int tu, mau;};
- Viết hàm tạo phân số
- Viết hàm in phân số dạng tu/mau
- Viết hàm tính hiệu hai phân số, kết quả trả về phân số
Viết chương trình sử dụng các hàm trên nhập hai phân số, tính và in ra màn hình hiệu của chúng.
#include <stdio.h>
#include <conio.h>
int ucln(int a, int b)
{
a = abs(a);
b = abs(b);
if (a==b) return a;
if (a>b) return ucln(a-b,b);
return ucln(a,b-a);
}
int bcnn(int a, int b)
{
a = abs(a);
b = abs(b);
return (a*b)/ucln(a,b);
}
typedef struct PS{
int tu;
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
int mau;
} phanso;
phanso nhap_PS(void)
{
phanso x;
printf("Nhap tu so: "); scanf("%d",&x.tu);
printf("Nhap mau so: "); scanf("%d",&x.mau);
return x;
}
void in_PS(phanso *x)
{
printf("%d/%d",x->tu,x->mau);
}
phanso hieu_2_PS(phanso x, phanso y)
{
phanso z;
z.tu = x.tu*bcnn(x.mau,y.mau)/x.mau - y.tu*bcnn(x.mau,y.mau)/y.mau;
z.mau = bcnn(x.mau,y.mau);
return z;
}
void main()
{
phanso x,y,z;
clrscr();
printf("Nhap phan so x:n");
x = nhap_PS();
printf("Nhap phan so y:n");
y = nhap_PS();
printf("nnt x = "); in_PS(&x);
printf("nt y = "); in_PS(&y);
z = hieu_2_PS(x,y);
printf("nnHieu 2 phan so la:n");
printf("nt z = x-y = "); in_PS(&z);
getch();
}
Câu 3.3: Cho cấu trúc số phức gồm phần thực và phần ảo như sau: struct SP {float thuc, ao;};
- Viết hàm tạo số phức
- Viết hàm in số phức dạng thuc + i*ao
- Viết hàm tính tổng hai số phức, kết quả trả về số phức
Viết chương trình sử dụng các hàm trên nhập hai số phức, tính và in ra màn hình tổng của chúng.
#include <stdio.h>
#include <Conio.h>
typedef struct SP {
float thuc;
float ao;
} sophuc;
sophuc tao_SP(void)
{
sophuc x;
printf("Nhap phan thuc: "); scanf("%f",&x.thuc);
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
printf("Nhap phan ao: "); scanf("%f",&x.ao);
return x;
}
void in_SP(sophuc *x)
{
printf("%.2f + i*%.2f",x->thuc,x->ao);
}
sophuc tong_2SP(sophuc x, sophuc y)
{
sophuc z;
z.thuc = x.thuc+y.thuc;
z.ao = x.ao+y.ao;
return z;
}
void main()
{
sophuc x,y,z;
clrscr();
printf("nnNhap x: n"); x = tao_SP();
printf("nNhap y: n"); y = tao_SP();
printf("nnt x = "); in_SP(&x);
printf("nt y = "); in_SP(&y);
z = tong_2SP(x,y);
printf("nnTong cua 2 so phuc la: ");
printf("nt z = x+y = "); in_SP(&z);
getch();
}
Câu 3.4: Cho cấu trúc số phức gồm phần thực và phần ảo như sau: struct SP {float thuc, ao;};
- Viết hàm tạo số phức
- Viết hàm in số phức dạng thuc + i*ao
- Viết hàm tính tổng hai số phức, kết quả trả về số phức
Viết chương trình sử dụng các hàm trên nhập hai số phức, tính và in ra màn hình hiệu của chúng.
#include <stdio.h>
#include <Conio.h>
typedef struct SP {
float thuc;
float ao;
} sophuc;
sophuc tao_SP(void)
{
sophuc x;
printf("Nhap phan thuc: "); scanf("%f",&x.thuc);
printf("Nhap phan ao: "); scanf("%f",&x.ao);
return x;
}
void in_SP(sophuc *x)
{
printf("%.2f + i*%.2f",x->thuc,x->ao);
}
sophuc hieu_2SP(sophuc x, sophuc y)
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
{
sophuc z;
z.thuc = x.thuc-y.thuc;
z.ao = x.ao-y.ao;
return z;
}
void main()
{
sophuc x,y,z;
clrscr();
printf("nnNhap x: n"); x = tao_SP();
printf("nNhap y: n"); y = tao_SP();
printf("nnt x = "); in_SP(&x);
printf("nt y = "); in_SP(&y);
z = hieu_2SP(x,y);
printf("nnHieu cua 2 so phuc la: ");
printf("nt z = x-y = "); in_SP(&z);
getch();
}
Câu 3.5: Cho cấu trúc sinh viên gồm họ tên, tuổi, điểm kỳ 1, điểm kỳ 2, điểm cả năm như sau:
struct SV
{char hoten[30];
int tuoi;
float diemky1, diemky2, diemcanam;
};
Trong đó, diemcanam = (diemky1 + diemky2*2)/3;
- Viết hàm nhập mảng n sinh viên
- Viết hàm xem thông tin sinh viên gồm họ tên, tuổi, điểm cả năm
Viết chương trình sử dụng các hàm trên nhập vào từ bàn phím 5 sinh viên, cho xem thông tin về các sinh viên vừa nhâp.
PHẦN 4
Câu 4.1: Viết chương trình nhập vào từ bàn phím n số thực, hãy ghi các số thực dương vào một tệp văn bản
#include <stdio.h>
#include <conio.h>
void main()
{
int i,n;
float temp;
FILE *f;
clrscr();
nhap: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap;
f = fopen("so_thdg.txt","wt");
for (i=0;i<n;i++) {
printf("A[%d] = ",i);
scanf("%f",&temp);
if (temp>0)
fprintf(f,"%.2f ",temp);
}
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
fclose(f);
}
Câu 4.2: Cho một tệp văn bản gồm các số nguyên cách nhau ít nhất một dấu cách trống. Hãy đọc các số nguyên từ tệp ra, tính và
in ra màn hình tổng các số có giá trị chẵn
#include <stdio.h>
#include <conio.h>
void main()
{
int ar[100], n = 0, sum,i;
FILE *fi;
clrscr();
fi = fopen("songuyen.txt","rt");
while (!feof(fi))
{
if (fscanf(fi,"%d",ar + n) > 0)
n++;
}
fclose(fi);
sum = 0;
for (i=0;i<n;i++) {
printf("%d ",ar[i]);
if (ar[i] % 2 == 0)
sum += ar[i];
}
printf("nnTong cac so chan la %dn",sum);
getch();
}
Câu 4.3: Cho một tệp văn bản gồm các số nguyên cách nhau ít nhất một dấu cách trống. Hãy đọc tệp, đếm và in ra màn hình số
phần tử dương có mặt trong tệp
#include <stdio.h>
#include <conio.h>
void main()
{
int ar[100], n = 0, sum,i;
FILE *f;
char c;
clrscr();
f = fopen("songuyen.txt","rt");
while (!feof(f))
{
c = getc(f);
putchar(c);
if (fscanf(f,"%d",ar + n) > 0)
n++;
}
fclose(f);
sum = 0;
for (i=0;i<n;i++) {
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
printf("%d ",ar[i]);
if (ar[i] > 0)
sum += ar[i];
}
printf("nnTong cac so duong la %dn",sum);
getch();
}
Câu 4.4: Viết chương trình nhập vào từ bàn phím n số nguyên, hãy ghi các số nguyên dương vào một tệp văn bản
#include <stdio.h>
#include <conio.h>
void main()
{
int i,n,temp;
FILE *f;
clrscr();
nhap: printf("Nhap n: n = "); scanf("%d",&n);
if (n<=0) goto nhap;
f = fopen("so_ngd.txt","w");
for (i=0;i<n;i++) {
printf("A[%d] = ",i);
scanf("%d",&temp);
if (temp>0)
fprintf(f,"%d ",temp);
}
fclose(f);
}
Câu 4.5: Tạo một tệp văn bản gồm hai dòng, mỗi dòng một xâu ký tự. Đọc và in ra màn hình nội dung của tệp.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
FILE *f;
char *str;
clrscr();
if ((f = fopen("vanban.txt","wt+"))==NULL)
printf("Loi. Khong the mo tep.");
else {
printf("Nhap vao 2 xau ky tu (An Enter 2 lan de ket thuc): n");
do {
gets(str);
strcat(str,"n");
fputs(str,f);
} while (*str!='n');
}
rewind(f); //Dat vi tri cua so ve dau tep
while (!feof(f)) {
fgets(str,79,f);
printf(str);
}
fclose(f);
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
getch();
}
Câu 4.6: Cho một tệp văn bản gồm các xâu ký tự. Viết chương trình đọc tệp, đếm và in ra màn hình số chữ cái in hoa có mặt
trong tệp
#include <stdio.h>
#include <conio.h>
void main()
{
char c;
int i=0;
FILE *fpt;
clrscr();
if ((fpt = fopen("test.txt","rt")) == NULL)
printf("an Co loi, khong mo duoc tep de doc.");
else
do {
c=getc(fpt);
putchar(c);
if (c>='A'&&c<='Z')
i++;
} while (c!=EOF);
printf("nnSo chu cai in hoa co trong tep la: %d",i);
getch();
}
// Nguyen Bui Hau
#include <conio.h>
#include <stdio.h>
void main()
{ clrscr();
int i,n;
FILE *f;
char ch, xau[100];
f= fopen("text.txt","rt");
while (!feof(f))
fgets(xau, 100, f);
printf("%-30s", xau);
i=0;n=0;
while (xau[i]!='0'){ if ((xau[i] >='A')&& (xau[i] <= 'Z')) n++;
i++;}
printf("nSo chu HOA trong tep: %d", n);
getch();}
Câu 4.7: Cho một tệp văn bản gồm các số nguyên cách nhau ít nhất một dấu cách trống. Hãy đọc các số nguyên từ tệp ra, tính và
in ra màn hình tổng các số có giá trị lẻ.
#include <stdio.h>
#include <conio.h>
void main()
{
int ar[100], n = 0, sum,i;
FILE *f;
clrscr();
f = fopen("songuyen.txt","rt");
while (!feof(f))
{
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
if (fscanf(f,"%d",ar + n) > 0)
n++;
}
fclose(f);
sum = 0;
for (i=0;i<n;i++) {
printf("%d ",ar[i]);
if (ar[i]%2 != 0)
sum += ar[i];
}
printf("nnTong cac so le la %dn",sum);
getch();
}
Câu 4.8: Cho một tệp văn bản gồm các số nguyên cách nhau ít nhất một dấu cách trống. Hãy tính và in ra màn hình trung bình
cộng của các phần tử đọc ra từ tệp.
#include <stdio.h>
#include <conio.h>
void main()
{
int ar[100], n = 0, sum,i, tbc;
FILE *f;
clrscr();
if ((f = fopen("songuyen.txt","rt")) == NULL)
printf("Co loi! Khong mo duoc file.");
else
while (!feof(f))
{
if (fscanf(f,"%d",ar + n) > 0)
n++;
}
fclose(f);
sum = 0;
for (i=0;i<n;i++) {
printf("%d ",ar[i]);
sum += ar[i];
}
tbc = sum/n;
printf("nnTrung binh cong cac so la %dn",tbc);
getch();
}
Câu 4.9: Cho một tệp văn bản gồm các xâu ký tự. Viết chương trình đọc tệp, đếm và in ra màn hình số chữ cái ‘A‘ có mặt trong
tệp
#include <stdio.h>
#include <conio.h>
void main()
{
char c;
int i=0;
FILE *fpt;
Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh
clrscr();
if ((fpt = fopen("test.txt","rt")) == NULL)
printf("an Co loi, khong mo duoc tep de doc.");
else
do {
c=getc(fpt);
putchar(c);
if (c=='A')
i++;
} while (c!=EOF);
printf("nnSo chu cai 'A' co trong tep la: %d",i);
getch();
}
Câu 4.10: Cho một tệp văn bản gồm các số nguyên cách nhau ít nhất một dấu cách trống. Hãy tính và in ra màn hình tổng của các
phần tử đọc ra từ tệp.
#include <stdio.h>
#include <conio.h>
void main()
{
int ar[100], n = 0, sum,i;
FILE *f;
clrscr();
if ((f = fopen("songuyen.txt","rt")) == NULL)
printf("Co loi! Khong mo duoc file.");
else
while (!feof(f))
{
if (fscanf(f,"%d",ar + n) > 0)
n++;
}
fclose(f);
sum = 0;
for (i=0;i<n;i++) {
printf("%d ",ar[i]);
sum += ar[i];
}
printf("nnTong cac so la %dn",sum);
getch();
}

More Related Content

What's hot

Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)Kieu Anh Nguyen
 
Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++tuandong_ptit
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Congdat Le
 
Bai tap lam quen java
Bai tap lam quen javaBai tap lam quen java
Bai tap lam quen javaTuấn Bùi
 
Cpl test1%20key
Cpl test1%20keyCpl test1%20key
Cpl test1%20keyHồ Lợi
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhHuy Rùa
 
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules
Local sakainame   501127 ktl_trình hlmt1 a01 fall 2013 _ modulesLocal sakainame   501127 ktl_trình hlmt1 a01 fall 2013 _ modules
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modulesTrần Văn Nam
 
bai tap cau truc du lieu ptit
bai tap cau truc du lieu ptitbai tap cau truc du lieu ptit
bai tap cau truc du lieu ptitMit Rin
 
Hướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.docHướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.docTrần Văn Nam
 
Các cấu trúc lệnh trong C
Các cấu trúc lệnh trong CCác cấu trúc lệnh trong C
Các cấu trúc lệnh trong Cpnanhvn
 
Ctdl C05
Ctdl C05Ctdl C05
Ctdl C05giang
 

What's hot (17)

Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)
 
Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++Huong dan su dung va debug voi dev c++
Huong dan su dung va debug voi dev c++
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++
 
Bai tap lam quen java
Bai tap lam quen javaBai tap lam quen java
Bai tap lam quen java
 
Cpl test1%20key
Cpl test1%20keyCpl test1%20key
Cpl test1%20key
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules
Local sakainame   501127 ktl_trình hlmt1 a01 fall 2013 _ modulesLocal sakainame   501127 ktl_trình hlmt1 a01 fall 2013 _ modules
Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules
 
Bai tap oop c++
Bai tap oop c++Bai tap oop c++
Bai tap oop c++
 
Chuyen doi he so
Chuyen doi he soChuyen doi he so
Chuyen doi he so
 
Debug trong c
Debug trong cDebug trong c
Debug trong c
 
bai tap cau truc du lieu ptit
bai tap cau truc du lieu ptitbai tap cau truc du lieu ptit
bai tap cau truc du lieu ptit
 
Ktlt lab full
Ktlt lab fullKtlt lab full
Ktlt lab full
 
Nhung bai mau lap trinh c
Nhung bai mau lap trinh cNhung bai mau lap trinh c
Nhung bai mau lap trinh c
 
Hướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.docHướng dẫn làm bt về chuỗi.doc
Hướng dẫn làm bt về chuỗi.doc
 
Các cấu trúc lệnh trong C
Các cấu trúc lệnh trong CCác cấu trúc lệnh trong C
Các cấu trúc lệnh trong C
 
Ctdl C05
Ctdl C05Ctdl C05
Ctdl C05
 
Tn ktlt
Tn ktltTn ktlt
Tn ktlt
 

Similar to Tai lieu lap trinh vc++ day du

1 de cuong c
1 de cuong c1 de cuong c
1 de cuong cPhú Syd
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiTrung Thanh Nguyen
 
Sổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ CSổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ Cvncoding
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Thanh Giảng Lê
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhLong Kingnam
 
1 Gioi Thieu Chung
1 Gioi Thieu Chung1 Gioi Thieu Chung
1 Gioi Thieu ChungCuong
 
Cac van de co so kh may tinh
Cac van de co so kh may tinhCac van de co so kh may tinh
Cac van de co so kh may tinhTunAnh346
 
TongHop_TestQuizCSKTLT_TrangDT_62 cau.pdf
TongHop_TestQuizCSKTLT_TrangDT_62 cau.pdfTongHop_TestQuizCSKTLT_TrangDT_62 cau.pdf
TongHop_TestQuizCSKTLT_TrangDT_62 cau.pdflinhly42
 
Bài tập CTDL và GT 8
Bài tập CTDL và GT 8Bài tập CTDL và GT 8
Bài tập CTDL và GT 8Hồ Lợi
 
giao trinh c++ Chuong1
giao trinh c++ Chuong1giao trinh c++ Chuong1
giao trinh c++ Chuong1Bễ Nguyễn
 

Similar to Tai lieu lap trinh vc++ day du (20)

1 de cuong c
1 de cuong c1 de cuong c
1 de cuong c
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++
 
Bai tap java
Bai tap javaBai tap java
Bai tap java
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
 
Sổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ CSổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ C
 
Bai tap mau pascal
Bai tap mau pascalBai tap mau pascal
Bai tap mau pascal
 
Tut5 solution
Tut5 solutionTut5 solution
Tut5 solution
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
 
Exercise array
Exercise arrayExercise array
Exercise array
 
Chuong trinh con
Chuong trinh conChuong trinh con
Chuong trinh con
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
1 Gioi Thieu Chung
1 Gioi Thieu Chung1 Gioi Thieu Chung
1 Gioi Thieu Chung
 
Cac van de co so kh may tinh
Cac van de co so kh may tinhCac van de co so kh may tinh
Cac van de co so kh may tinh
 
Khao sat
Khao satKhao sat
Khao sat
 
Khao sat
Khao satKhao sat
Khao sat
 
Lab02 loop
Lab02 loopLab02 loop
Lab02 loop
 
TongHop_TestQuizCSKTLT_TrangDT_62 cau.pdf
TongHop_TestQuizCSKTLT_TrangDT_62 cau.pdfTongHop_TestQuizCSKTLT_TrangDT_62 cau.pdf
TongHop_TestQuizCSKTLT_TrangDT_62 cau.pdf
 
Danhsach baitap
Danhsach baitapDanhsach baitap
Danhsach baitap
 
Bài tập CTDL và GT 8
Bài tập CTDL và GT 8Bài tập CTDL và GT 8
Bài tập CTDL và GT 8
 
giao trinh c++ Chuong1
giao trinh c++ Chuong1giao trinh c++ Chuong1
giao trinh c++ Chuong1
 

Tai lieu lap trinh vc++ day du

  • 1. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh PHẦN 1 Câu 1.1: Viết hàm tính tổng s = 1 + 3 + 5 + … + (2*n + 1), với n nguyên dương. Viết chương trình nhập vào từ bàn phím số nguyên dương n, áp dụng hàm trên tính và in ra màn hình tổng tương ứng. #include <stdio.h> #include <conio.h> int tong (int n) { int i, s=0; for (i=0;i<=n;i++) s+=(2*i+1); return s; } void main() { int n,s; clrscr(); nhap: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap; s = tong(n); printf("Tong la: s = %d",s); getch(); } Câu 1.2: Viết hàm tính giai thừa của một số nguyên không âm. Viết chương trình nhập vào từ bàn phím số nguyên dương n, áp dụng hàm trên in ra màn hình giai thừa của n. #include <stdio.h> #include <conio.h> unsigned long int giai_thua (int n) { int i, gt=1; for (i=1;i<=n;i++) gt*=i; return gt; } void main() { int n; unsigned long int gt; clrscr(); nhap: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap; gt = giai_thua(n); printf("Giai thua cua %d la: gt[%d] = %d",n,n,gt); getch(); } Câu 1.3: Viết hàm đổi một số nguyên không âm thành xâu nhị phân. Viết chương trình nhập vào từ bàn phím số nguyên không âm n, áp dụng hàm trên in ra màn hình xâu nhị phân tương ứng. #include <stdio.h> #include <conio.h> int np(int n) { int i,m, snp; m=128;
  • 2. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh for(i=0; i<=7; i++) {snp= n/m; printf("%d",snp) ; n = n- snp*m; m= m/2; } return snp;} void main() { int n; printf("Moi ban nhap N="); scanf("%d", &n); np(n); getch(); } Câu 1.4: Viết hàm tính tổng s = 2 + 4 + 6 + … + 2*n, với n nguyên dương. Viết chương trình nhập vào từ bàn phím số nguyên dương n, áp dụng hàm trên tính và in ra màn hình tổng tương ứng. #include <stdio.h> #include <conio.h> int tong (int n) { int i, s=0; for (i=1;i<=n;i++) s+=(2*i); return s; } void main() { int n,s; clrscr(); nhap: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap; s = tong(n); printf("Tong la: s = %d",s); getch(); } Câu 1.5: Viết hàm đổi một số nguyên không âm thành xâu Hecxa. Viết chương trình nhập vào từ bàn phím số nguyên không âm n, áp dụng hàm trên tìm và in ra màn hình xâu Hecxa tương ứng. #include <conio.h> #include <stdio.h> void hexa(int n) {int i=0,j=0; int a[20]; while (n!=0) {a[j]=n%16;n=n/16;j++;} for(i=j;i>=0;i--) {if (a[i]<10) printf("%d",a[i]); else switch (a[i]) {case 10: printf("A");break; case 11: printf("B");break; case 12: printf("C");break; case 13: printf("D");break; case 14: printf("E");break; case 15: printf("F");break; }
  • 3. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh } } void main() {clrscr(); int n; tiep:printf("nBan hay nhap so can chuyen doi: "); scanf("%d",&n); if (n<0) goto tiep; printf("nnMa Hexa cua so vua nhap la: "); printf("nntt"); hexa(n); printf("nnChuc vui. Copyright Hiro ^^"); getch(); } Câu 1.6: Viết hàm tính tổng s = 13 + 23 + ... + n3, với n nguyên dương. Viết chương trình nhập vào từ bàn phím số nguyên dương n, áp dụng hàm trên tính và in ra màn hình tổng tương ứng #include <stdio.h> #include <conio.h> #include <math.h> int tong (int n) { int i, s=0; for (i=1;i<=n;i++) s+=i*i*i; return s; } void main() { int n,s; clrscr(); nhap: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap; s = tong(n); printf("Tong la: s = %d",s); getch(); } Câu 1.7: Viết hàm kiểm tra tính nguyên tố của một số nguyên dương. Viết chương trình nhập vào từ bàn phím số nguyên dương n, áp dụng hàm trên hãy cho biết n có phải là số nguyên tố hay không? #include <stdio.h> #include <conio.h> #include <math.h> int so_ngto (int n) { int i,kt=1; if (n==1) kt=0; for (i=2;i<(int)(n/2);i++){ if (n%i == 0) return kt=0; break; } return kt; } void main() {
  • 4. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh int n; clrscr(); nhap: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap; if (so_ngto(n) == 1) printf("So %d la so nguyen to!",n); else printf("So %d khong phai la so nguyen to!",n); getch(); } Câu 1.8: Viết hàm tính tổng s = 1*2*3 + 2*3*4 + ...+ n*(n+1)*(n+2), với n nguyên dương. Viết chương trình nhập vào từ bàn phím số nguyên dương n, áp dụng hàm trên tính và in ra màn hình tổng tương ứng. #include <stdio.h> #include <conio.h> #include <math.h> int tong (int n) { int i, s=0; for (i=1;i<=n;i++) s+=i*(i+1)*(i+2); return s; } void main() { int n,s; clrscr(); nhap: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap; s = tong(n); printf("Tong la: s = %d",s); getch(); } Câu 1.9: Viết hàm kiểm tra tính hoàn thiện của một số nguyên dương. Viết chương trình nhập vào từ bàn phím số nguyên dương n, áp dụng hàm trên thông báo ra màn hình số n có phải là số hoàn thiện hay không? #include <stdio.h> #include <conio.h> int so_hoanthien (int n) { int i,s=0; for (i=1;i<=(n/2);i++) if (n%i == 0) s+=i; if (s==n) return 1; return 0; } void main() { int n; clrscr(); nhap: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap; if (so_hoanthien(n) == 1) printf("So %d la so hoan thien!",n); else printf("So %d khong phai la so hoan thien!",n);
  • 5. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh getch(); } Câu 1.10: Viết hàm tìm số bé nhất của 3 số thực. Viết chương trình nhập vào từ bàn phím 3 số thực x, y, z, áp dụng hàm trên tìm và in ra màn hình số bé nhất của 3 số vừa nhập. Câu 1.11: Viết hàm giải và biện luận phương trình bậc hai ax2 + bx + c = 0. Viết chương trình nhập vào từ bàn phím ba số thực a, b, c, áp dụng hàm trên cho biết kết quả giải phương trình bậc hai với ba hệ số a, b, c vừa nhập #include <stdio.h> #include <conio.h> #include <math.h> void giai_ptb2(float a, float b, float c) { float delta; if (a!=0) { delta = b*b - 4*a*c; if (delta>0) printf("Phuong trinh co 2 nghiem thuc phan biet: x1 = %5.2f, x2 = %5.2f", (-b-sqrt(delta))/(2*a),(-b+sqrt(delta))/(2*a)); else if (delta==0) printf("Phuong trinh co 2 nghiem thuc chung: x1 = x2 = %5.2f",(-b)/(2*a)); else printf("Phuong trinh khong co nghiem so thuc."); } else if (b!=0) printf("Phuong trinh co mot nghiem thuc: x = %5.2f",-c/b); else if (c==0) printf("Phuong trinh co vo so nghiem thuc."); else printf("Phuong trinh khong co nghiem so thuc."); } void main() { float a,b,c; clrscr(); printf("Nhap a: a = "); scanf("%f",&a); printf("Nhap b: b = "); scanf("%f",&b); printf("Nhap c: c = "); scanf("%f",&c); giai_ptb2(a,b,c); getch(); } //nuyen bui hau #include <stdio.h> #include <conio.h> #include <math.h> void bh(float a, float b,float c) { float dt; if (a!=0) { dt = b*b-4*a*c; if (dt>0) printf("PT co 2 nghiem phan biet: x1=%f x2=%f",(-b-sqrt(dt))/2/a,(- b+sqrt(dt))/2/a ); if (dt == 0) printf("PT co nghiem kep x= %f", -b/2/a); if (dt <0) printf("PT VN"); } else if (b!=0) printf("Ngiem duy nhat: x= %f",-c/b);
  • 6. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh else if (c!=0) printf("Vo li"); else printf("Vo so nghiem"); } void main() { clrscr(); float a,b,c; printf("nNhap 3 so: "); scanf("%f%f%f", &a, &b, &c); bh(a,b,c); getch();} Câu 1.12: Viết hàm kiểu int kiểm tra xem 3 số thực có thể lập thành 3 cạnh của một tam giác hay không? Viết chương trình nhập vào từ bàn phím 3 số thực a, b, c, áp dụng hàm trên thông báo ra màn hình 3 số vừa nhập có tạo thành 3 cạnh của một tam giác hay không? #include <stdio.h> #include <conio.h> int tg(int a, int b, int c) { int kt =1; if ((a+b <= c) || (a+c <= b) || (b+c <= a)) return kt =0; return kt; } void main() { clrscr(); int a, b,c; printf("nMoi ban nhap 3so can kt: "); scanf("%d%d%d", &a, &b,&c); if (tg(a,b,c) == 1) printf ("3 so %d %d %d lap thanh 3 canh cua tam giac", a,b,c); else printf("3 so %d %d %d khong lap thanh 3 canh cua tam giac", a,b,c); getch(); } Câu 1.13: Viết hàm đếm số từ trong một xâu ký tự chuẩn (xâu chuẩn theo nghĩa các từ trong xâu được ngăn cách bởi một dấu cách trống). Viết chương trình nhập vào từ bàn phím một xâu ký tự chuẩn s, áp dụng hàm trên thông báo ra màn hình số từ của xâu. #include <stdio.h> #include <conio.h> int sotu(char *s) { int i=0,n=0; while (s[i]!='0') { if (s[i]==' ') n++; i++; } return n+1; } void main() { char *s; clrscr(); printf("Nhap vao mot xau ki tu: "); gets(s); printf("So tu trong xau vua nhap la: %d",sotu(s));
  • 7. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh getch(); } Câu 1.14: Viết hàm tính số fibonaxi thứ n. Viết chương trình nhập vào từ bàn phím số nguyên dương n. Áp dụng hàm trên tìm và in ra màn hình số fibonaxi tương ứng. #include <stdio.h> #include <conio.h> int so_fibonaxi (int n) { if ((n==1) || (n==2)) return 1; return so_fibonaxi(n-1) + so_fibonaxi(n-2); } void main() { int n,f; clrscr(); nhap: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap; f = so_fibonaxi(n); printf("So fibonaxi thu %d la: %d",n,f); getch(); } Câu 1.15: Viết hàm có kiểu void nhằm đổi chỗ giá trị hai biến thực cho nhau. Viết chương trình nhập vào từ bàn phím hai số thực x, y, áp dụng hàm trên để đổi chỗ giá trị hai biến x, y cho nhau. In ra màn hình giá trị của x và y trước và sau khi đổi chỗ. #include <stdio.h> #include <conio.h> void doicho(float *x, float *y) { float temp; temp = *x; *x = *y; *y = temp; } void main() { float a,b; clrscr(); printf("Nhap so thuc a: a = "); scanf("%f",&a); printf("Nhap so thuc b: b = "); scanf("%f",&b); printf("nnnTruoc khi doi cho.nnta = %4.2fntb = %4.2f",a,b); doicho(&a,&b); printf("nnnSau khi doi cho.nnta = %4.2fntb = %4.2f",a,b); getch(); } Câu 1.16: Viết hàm tìm ước chung lớn nhất của 2 số nguyên dương. Viết chương trình nhập vào từ bàn phím 2 số nguyên dương a và b, áp dụng hàm trên tìm và in ra màn hình ước chung lớn nhất của chúng #include <stdio.h> #include <conio.h> #include <math.h> int ucln(int x, int y) { x = abs(x);
  • 8. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh y = abs(y); if (x==y) return x; if (x>y) return ucln(x-y,y); return ucln(x,y-x); } void main() { int a,b,c; clrscr(); nhap: printf("Nhap a: a = "); scanf("%d",&a); printf("Nhap b: b = "); scanf("%d",&b); if ((a<=0) || (b<=0)) goto nhap; c = ucln(a,b); printf("Uoc chung lon nhat cua 2 so %d va %d la: %d",a,b,c); getch(); } Câu 1.17: Viết hàm tính độ dài xâu ký tự (không sử dụng hàm chuẩn strlen). Viết chương trình nhập vào từ bàn phím xâu ký tự s, áp dụng hàm trên in ra màn hình độ dài của xâu vừa nhập #include <stdio.h> #include <conio.h> int do_dai_xau(char *s) { int i=0; while (s[i]!='0') i++; return i; } void main() { char *s; clrscr(); printf("Nhap vao mot xau ki tu: "); gets(s); printf("Do dai xau vua nhap la: %d",do_dai_xau(s)); getch(); } Câu 1.18: Viết hàm đếm số chữ cái in hoa trong một xâu ký tự. Viết chương trình nhập vào từ bàn phím xâu ký tự s, áp dụng hàm trên cho biết trong xâu s có bao nhiêu chữ in hoa. #include <stdio.h> #include <conio.h> int so_kytu_hoa(char *s) { int i=0,n=0; while (s[i]!='0') { if ((s[i]>='A') && (s[i]<='Z')) n++; i++; } return n; } void main()
  • 9. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh { char *s; clrscr(); printf("Nhap vao mot xau ki tu: "); gets(s); printf("So ky tu hoa trong xau vua nhap la: %d",so_kytu_hoa(s)); getch(); } Câu 1.19: Viết hàm đổi các chữ cái in hoa của một xâu ký tự thành chữ cái in thường. Viết chương trình nhập vào từ bàn phím xâu ký tự s, áp dụng hàm trên đổi các chữ cái in hoa của xâu s thành chữ cái in thường. In ra màn hình xâu trước và sau khi đổi. #include <stdio.h> #include <conio.h> #include <ctype.h> void doi_kytu(char *s) { int i=0; while (s[i]!='0') { s[i] = s[i]+'a'-'A'; i++; } s[i] = '0'; } void main() { char *s; clrscr(); printf("Nhap vao mot xau ki tu: "); gets(s); printf("nXau ban dau: nt"); puts(s); doi_kytu(s); printf("nXau sau khi chuyen doi: nt"); puts(s); getch(); } Câu 1.20: Viết hàm giải và biện luận phương trình bậc nhất ax + b = 0. Viết chương trình nhập vào từ bàn phím hai số thực a, b, áp dụng hàm trên cho biết kết quả giải phương trình bậc nhất với hai hệ số a, b vừa nhập. #include <stdio.h> #include <conio.h> void giai_ptb1(float a, float b) { if (a!=0) printf("Phuong trinh co mot nghiem: x = %5.2f",-b/a); else if (b==0) printf("Phuong trinh co vo so nghiem thuc."); else printf("Phuong trinh vo nghiem."); } void main() { float a,b; clrscr(); printf("Nhap a: a = "); scanf("%f",&a); printf("Nhap b: b = "); scanf("%f",&b); giai_ptb1(a,b);
  • 10. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh getch(); } PHẦN 2 Câu 2.1: Viết chương trình nhập một mảng một chiều a gồm n số thực. Hãy tính và in ra màn hình trung bình cộng của các phần tử trong mảng. #include <stdio.h> #include <conio.h> void nhap_mang(float A[], int n) { int i; for (i=0;i<n;i++) { printf("A[%d] = ",i); scanf("%f",&A[i]); } } void in_mang(float A[], int n) { int i; for (i=0;i<n;i++) printf("%6.2f",A[i]); } float tb_cong(float A[], int n) { int i; float s=0; for (i=0;i<n;i++) s+=A[i]; return s/n; } void main() { float A[100]; int n; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n); printf("Mang vua nhap la: nn"); in_mang(A,n); printf("nnTrung binh cong cua mang vua nhap la: %5.2f",tb_cong(A,n)); getch(); } Câu 2.2: Viết chương trình nhập một mảng một chiều n số nguyên. Sắp xếp mảng theo thứ tự tăng dần. In ra màn hình mảng trước và sau khi sắp xếp #include <stdio.h> #include <conio.h> void nhap_mang(int A[], int n) { int i;
  • 11. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh for (i=0;i<n;i++) { printf("A[%d] = ",i); scanf("%d",&A[i]); } } void in_mang(int A[], int n) { int i; for (i=0;i<n;i++) printf("%6d",A[i]); } void sap_xep(int A[], int n) { int i,j,temp; for (i=0;i<n-1;i++) for (j=i;j<n;j++) if (A[i]>A[j]) { temp = A[i]; A[i] = A[j]; A[j] = temp; } } void main() { int A[100]; int n; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap_n; printf("nNhap so lieu vao mang A:nn"); nhap_mang(A,n); printf("Mang vua nhap la: nn"); in_mang(A,n); sap_xep(A,n); printf("nnMang sau khi sap xep la:nn"); in_mang(A,n); getch(); } Câu 2.3: Viết chương trình nhập một mảng một chiều n số thực. Sắp xếp mảng theo thứ tự giảm dần. In ra màn hình mảng trước và sau khi sắp xếp #include <stdio.h> #include <conio.h> void nhap_mang(float A[], int n) int i; for (i=0;i<n;i++) { printf("A[%d] = ",i); scanf("%f",&A[i]); } } void in_mang(float A[], int n) { int i; for (i=0;i<n;i++) printf("%6.2f",A[i]); }
  • 12. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh void sap_xep(float A[], int n) { int i,j; float temp; for (i=0;i<n-1;i++) for (j=i;j<n;j++) if (A[i]<A[j]) { temp = A[i]; A[i] = A[j]; A[j] = temp; } } void main() { float A[100]; int n; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap_n; printf("nNhap so lieu vao mang A:nn"); nhap_mang(A,n); printf("Mang vua nhap la: nn"); in_mang(A,n); sap_xep(A,n); printf("nnMang sau khi sap xep la:nn"); in_mang(A,n); getch(); } Câu 2.4: Viết chương trình nhập một mảng một chiều n số thực. Đếm và thông báo ra màn hình trong mảng có bao nhiêu phần tử âm #include <stdio.h> #include <conio.h> void nhap_mang(float A[], int n) { int i; for (i=0;i<n;i++) { printf("A[%d] = ",i); scanf("%f",&A[i]); } } void in_mang(float A[], int n) { int i; for (i=0;i<n;i++) printf("%6.2f",A[i]); } int so_pt_am(float A[], int n) { int i,s=0; for (i=0;i<n;i++) if (A[i]<0) s++; return s; } void main()
  • 13. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh { float A[100]; int n; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n); printf("Mang vua nhap la: nn"); in_mang(A,n); printf("nnSo phan tu am cua mang la: %d",so_pt_am(A,n)); getch(); Câu 2.5: Viết chương trình nhập một mảng một chiều n số thực. Đếm và thông báo ra màn hình trong mảng có bao nhiêu phần tử dương. #include <stdio.h> #include <conio.h> void nhap_mang(float A[], int n) { int i; for (i=0;i<n;i++) { printf("A[%d] = ",i); scanf("%f",&A[i]); } } void in_mang(float A[], int n) { int i; for (i=0;i<n;i++) printf("%6.2f",A[i]); } int so_pt_duong(float A[], int n) { int i,s=0; for (i=0;i<n;i++) if (A[i]>0) s++; return s; } void main() { float A[100]; int n; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n); printf("Mang vua nhap la: nn"); in_mang(A,n); printf("nnSo phan tu duong cua mang la: %d",so_pt_duong(A,n)); getch(); } Câu 2.6: Viết chương trình nhập một mảng một chiều n số thực. Tìm và in ra màn hình giá trị lớn nhất của mảng #include <stdio.h> #include <conio.h> void nhap_mang(float A[], int n)
  • 14. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh { int i; for (i=0;i<n;i++) { printf("A[%d] = ",i); scanf("%f",&A[i]); } } void in_mang(float A[], int n) { int i; for (i=0;i<n;i++) printf("%6.2f",A[i]); } float max(float A[], int n) { int i; float s; for (i=0;i<n;i++) if (A[i]>s) s=A[i]; return s; } void main() { float A[100]; int n; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n); printf("Mang vua nhap la: nn"); in_mang(A,n); printf("nnGia tri lon nhat cua mang la: %6.2f",max(A,n)); getch(); } Câu 2.7: Viết chương trình nhập một mảng một chiều gồm n số nguyên. Tính và in ra màn hình tổng của các phần tử trong mảng. #include <stdio.h> #include <conio.h> void nhap_mang(int A[], int n) { int i; for (i=0;i<n;i++) { printf("A[%d] = ",i); scanf("%d",&A[i]); } } void in_mang(int A[], int n) { int i; for (i=0;i<n;i++) printf("%6d",A[i]); } int tong(int A[], int n) { int i; int s=0;
  • 15. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh for (i=0;i<n;i++) s+=A[i]; return s; } void main() { int A[100]; int n; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n); printf("Mang vua nhap la: nn"); in_mang(A,n); printf("nnTong cac phan tu cua mang vua nhap la: %6d",tong(A,n)); getch(); } Câu 2.8: Viết chương trình nhập một mảng một chiều gồm n số nguyên dương. Tính và thông báo ra màn hình tổng các phần tử có giá trị chẵn trong mảng. #include <stdio.h> #include <conio.h> void nhap_mang(int A[], int n) { int i; for (i=0;i<n;i++) { nhap: printf("A[%d] = ",i); scanf("%d",&A[i]); if (A[i]<=0) goto nhap; } } void in_mang(int A[], int n) { int i; for (i=0;i<n;i++) printf("%6d",A[i]); } void tim_pt_chan(int A[], int n) { int i; for (i=0;i<n;i++) if (A[i]%2==0) printf("%6d",A[i]); } void main() { int A[100]; int n; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n); printf("Mang vua nhap la: nn"); in_mang(A,n); printf("nnCac phan tu chan trong mang la:n"); tim_pt_chan(A,n);
  • 16. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh getch(); } Câu 2.9: Viết chương trình nhập một mảng một chiều gồm n số nguyên dương. Tính và thông báo ra màn hình tổng các phần tử có giá trị lẻ trong mảng. #include <stdio.h> #include <conio.h> void nhap_mang(int A[], int n) { int i; for (i=0;i<n;i++) { nhap: printf("A[%d] = ",i); scanf("%d",&A[i]); if (A[i]<=0) goto nhap; } } void in_mang(int A[], int n) { int i; for (i=0;i<n;i++) printf("%6d",A[i]); } void tim_pt_le(int A[], int n) { int i; for (i=0;i<n;i++) if (A[i]%2!=0) printf("%6d",A[i]); } void main() { int A[100]; int n; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n); printf("Mang vua nhap la: nn"); in_mang(A,n); printf("nnCac phan tu le trong mang la:n"); tim_pt_le(A,n); getch(); } Câu 2.10: Viết chương trình nhập và xem một mảng một chiều n số nguyên bằng cách sử dụng con trỏ. #include <stdio.h> #include <conio.h> void main() {int a[5], i,*p; p=a; printf("Nhap mang theo con tro: n"); for(i=0;i<5;i++) {printf("Nhap phan tu thu %2d= ",i); scanf("%d",p); p++; } printf("nMang vua nhap la:"); p-=5; for(i=0;i<5;i++) printf("%5d",*(p+i));
  • 17. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh getch(); } Câu 2.11: Viết chương nhập vào một mảng hai chiều anxm gồm các số nguyên. Hãy in ra màn hình dạng chuyển vị của ma trận a. #include <stdio.h> #include <conio.h> #define N 100 #define M 100 void nhap_mang(int A[N][M], int n, int m) { int i,j; for (i=0;i<n;i++) for (j=0;j<m;j++) { printf("A[%d][%d] = ",i,j); scanf("%d",&A[i][j]); } } void in_mang(int A[N][M], int n, int m) { int i,j; for (i=0;i<n;i++){ printf("nn"); for (j=0;j<m;j++) printf("%5d",A[i][j]); } } void chuyen_vi(int A[N][M], int n, int m) { int i,j; for (j=0;j<m;j++){ printf("nn"); for (i=0;i<n;i++) printf("%5d",A[i][j]); } } void main() { int A[N][M]; int n,m; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); printf("Nhap m: m = "); scanf("%d",&m); if (n<=0 || m<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n,m); printf("nnMa tran vua nhap la: n"); in_mang(A,n,m); printf("nnMa tran chuyen vi cua ma tran A la: "); chuyen_vi(A,n,m); getch(); } Câu 2.12: Viết chương trình nhập hai ma trận anxm, bnxm gồm các số nguyên. Hãy tính và in ra màn hình ma trận cnxm là tổng của hai ma trận trên. #include <stdio.h> #include <conio.h>
  • 18. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh #define M 100 #define N 100 void nhap(int a[M][N], int m, int n) { int i, j, tg; printf("Moi ban nhap mang:n") ; for(i=0; i<m; i++) for(j=0; j<n; j++) { printf("PT[%d][%d]=", i,j); scanf("%d", &a[i][j]); }} void in(int a[M][N], int m, int n) { int i,j; // printf("nMang vua nhap la:"); for(i=0; i<m; i++) {printf("nn"); for(j=0; j<n; j++) printf("%5d", a[i][j]);} printf("n"); } int tong(int a[M][N], int b[M][N], int c[M][N],int m ,int n) { int i,j; //for(i=0; i<m; i++) //for(j=0; j<n; j++) c[i][j] =0; for(i=0; i<m; i++) for(j=0; j<n; j++) c[i][j]=a[i][j]+b[i][j]; } void main() { clrscr(); int m,n, a[M][N], b[M][N], c[M][N]; printf("nMoi ban nhap m,n:"); scanf("%d%d", &m,&n); nhap(a,m,n); in(a,m,n);nhap(b,m,n); in(b,m,n); printf("n Tong hai mang la:"); tong(a,b,c,m,n);in(c,m,n); getch();} Câu 2.13: Viết chương trình nhập và xem mảng hai chiều anxn, tính và in ra màn hình tổng các phần tử nằm trên đường chéo chính. #include <stdio.h> #include <conio.h> #define N 100 #define M 100 void nhap_mang(float A[][N], int n) { int i,j; for (i=0;i<n;i++) for (j=0;j<n;j++) { printf("A[%d][%d] = ",i,j); scanf("%f",&A[i][j]); } } void in_mang(float A[][N], int n) {
  • 19. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh int i,j; for (i=0;i<n;i++){ printf("nn"); for (j=0;j<n;j++) printf("%5.2f",A[i][j]); } } float tong_dc_chinh(float A[][N], int n) { int i,j,s=0; for (i=0;i<n;i++) for (j=0;j<n;j++) if (i==j) s+=A[i][j]; return s; } void main() { float A[N][N]; int n; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n); printf("Mang vua nhap la: n"); in_mang(A,n); printf("nnTong cac phan tu tren duong cheo chinh trong mang la: %5.2f",tong_dc_chinh(A,n)); getch(); } Câu 2.14: Viết chương trình nhập hai ma trận anxm, bnxm gồm các số nguyên. Hãy tính và in ra màn hình ma trận cnxm là hiệu của hai ma trận trên. #include <stdio.h> #include <conio.h> #define M 100 #define N 100 void nhap(int a[M][N], int m, int n) { int i, j, tg; printf("Moi ban nhap mang:n") ; for(i=0; i<m; i++) for(j=0; j<n; j++) { printf("PT[%d][%d]=", i,j); scanf("%d", &a[i][j]); }} void in(int a[M][N], int m, int n) { int i,j; // printf("nMang vua nhap la:"); for(i=0; i<m; i++) {printf("nn"); for(j=0; j<n; j++) printf("%5d", a[i][j]);} printf("n"); } int hieu(int a[M][N], int b[M][N], int c[M][N],int m ,int n)
  • 20. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh { int i,j; //for(i=0; i<m; i++) //for(j=0; j<n; j++) c[i][j] =0; for(i=0; i<m; i++) for(j=0; j<n; j++) c[i][j]=a[i][j]-b[i][j]; } void main() { clrscr(); int m,n, a[M][N], b[M][N], c[M][N]; printf("nMoi ban nhap m,n:"); scanf("%d%d", &m,&n); nhap(a,m,n); in(a,m,n);nhap(b,m,n); in(b,m,n); printf("n Hieu hai mang la:"); hieu(a,b,c,m,n);in(c,m,n); getch();} Câu 2.15: Viết chương trình nhập và xem mảng hai chiều anxm, tìm và in ra màn hình phần tử lớn nhất của mảng. #include <stdio.h> #include <conio.h> #define N 100 #define M 100 void nhap_mang(float A[N][M], int n, int m) { int i,j; for (i=0;i<n;i++) for (j=0;j<m;j++) { printf("A[%d][%d] = ",i,j); scanf("%f",&A[i][j]); } } void in_mang(float A[N][M], int n, int m) { int i,j; for (i=0;i<n;i++){ printf("nn"); for (j=0;j<m;j++) printf("%5.2f",A[i][j]); } } float max(float A[N][M], int n, int m) { int i,j; float ma=A[0][0]; for (i=0;i<n;i++) for (j=0;j<m;j++) if (A[i][j]<ma) ma=A[i][j]; return ma; } void main() { float A[N][M]; int n,m; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n);
  • 21. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh printf("Nhap m: m = "); scanf("%d",&m); if (n<=0 || m<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n,m); printf("Mang vua nhap la: n"); in_mang(A,n,m); printf("nnGia tri lon nhat cua mang la: %5.2f",max(A,n,m)); getch(); } Câu 2.16: Viết chương trình nhập và xem mảng hai chiều anxm, tìm và in ra màn hình phần tử nhỏ nhất của mảng. #include <stdio.h> #include <conio.h> #define N 100 #define M 100 void nhap_mang(float A[N][M], int n, int m) { int i,j; for (i=0;i<n;i++) for (j=0;j<m;j++) { printf("A[%d][%d] = ",i,j); scanf("%f",&A[i][j]); } } void in_mang(float A[N][M], int n, int m) { int i,j; for (i=0;i<n;i++){ printf("nn"); for (j=0;j<m;j++) printf("%5.2f",A[i][j]); } } float min(float A[N][M], int n, int m) { int i,j; float mi=A[0][0]; for (i=0;i<n;i++) for (j=0;j<m;j++) if (A[i][j]<mi) mi=A[i][j]; return mi; } void main() { float A[N][M]; int n,m; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); printf("Nhap m: m = "); scanf("%d",&m); if (n<=0 || m<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n,m); printf("Mang vua nhap la: n"); in_mang(A,n,m); printf("nnGia tri nho nhat cua mang la: %5.2f",min(A,n,m)); getch(); }
  • 22. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh Câu 2.17: Viết chương trình nhập vào một mảng hai chiều anxm gồm các số nguyên. Hãy xây dựng ma trận b là ma trận chuyển vị của a. In ra màn hình hai ma trận a và b. Câu 2.18: Viết chương trình nhập vào một mảng hai chiều anxm gồm các số nguyên. Tính và in ra màn hình tổng của các phần tử trên mỗi hàng. #include <stdio.h> #include <conio.h> #define M 100 #define N 100 void nhap(int a[M][N], int m, int n) { int i, j, tg; for(i=0; i<m; i++) for(j=0; j<n; j++) { printf("A[%d][%d]=", i,j); scanf("%d", &a[i][j]); }} void in(int a[M][N], int m, int n) { int i,j; printf("nMang vua nhap la:"); for(i=0; i<m; i++) {printf("nn"); for(j=0; j<n; j++) printf("%5d", a[i][j]);} } int tonghang(int a[M][N], int m ,int n) { int i,j, tong; tong =0; for(i=0; i<m; i++) { for(j=0; j<n; j++) tong+=a[i][j]; printf("nTong hang %d la:%d",i,tong); tong=0; } } void main() { clrscr(); int m,n, a[M][N]; printf("nMoi ban nhap m,n:"); scanf("%d%d", &m,&n); nhap(a,m,n); in(a,m,n); tonghang(a,m,n); getch();} Câu 2.19: Viết chương trình nhập vào một mảng hai chiều anxm gồm các số nguyên. Tính và in ra màn hình tổng của các phần tử trên mỗi cột. #include <stdio.h> #include <conio.h> #define M 100 #define N 100 void nhap(int a[M][N], int m, int n) { int i, j, tg; for(i=0; i<m; i++) for(j=0; j<n; j++) { printf("A[%d][%d]=", i,j); scanf("%d", &a[i][j]); }} void in(int a[M][N], int m, int n)
  • 23. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh { int i,j; printf("nMang vua nhap la:"); for(i=0; i<m; i++) {printf("nn"); for(j=0; j<n; j++) printf("%5d", a[i][j]);} } int tongcot(int a[M][N], int m ,int n) { int i,j, tong; tong =0; for(j=0; j<n; j++) { for(i=0; i<m; i++) tong+=a[i][j]; printf("nTong cot %d la:%d",j,tong); tong=0; } } void main() { clrscr(); int m,n, a[M][N]; printf("nMoi ban nhap m,n:"); scanf("%d%d", &m,&n); nhap(a,m,n); in(a,m,n); tongcot(a,m,n); getch();} Câu 2.20: Viết chương trình nhập vào một mảng hai chiều anxm gồm các số thực. Đếm và in ra màn hình số phần tử dương có mặt trong mảng. #include <stdio.h> #include <conio.h> #define N 100 #define M 100 void nhap_mang(float A[N][M], int n, int m) { int i,j; for (i=0;i<n;i++) for (j=0;j<m;j++) { printf("A[%d][%d] = ",i,j); scanf("%f",&A[i][j]); } } void in_mang(float A[N][M], int n, int m) { int i,j; for (i=0;i<n;i++){ printf("nn"); for (j=0;j<m;j++) printf("%5.2f",A[i][j]); } } int so_pt_duong(float A[N][M], int n, int m) { int i,j,s=0; for (i=0;i<n;i++) for (j=0;j<m;j++) if (A[i][j]>0) s++; return s;
  • 24. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh } void main() { float A[N][M]; int n,m; clrscr(); nhap_n: printf("Nhap n: n = "); scanf("%d",&n); printf("Nhap m: m = "); scanf("%d",&m); if (n<=0 || m<=0) goto nhap_n; printf("Nhap so lieu vao mang A:nn"); nhap_mang(A,n,m); printf("Mang vua nhap la: n"); printf("nnSo phan tu duong trong mang la: %d",so_pt_duong(A,n,m)); getch(); } PHẦN 3 Câu 3.1: Cho cấu trúc phân số gồm tử số và mẫu số như sau: struct PS {int tu, mau;}; - Viết hàm tạo phân số - Viết hàm in phân số dạng tu/mau - Viết hàm tính tổng hai phân số, kết quả trả về phân số Viết chương trình sử dụng các hàm trên nhập hai phân số, tính và in ra màn hình tổng của chúng. #include <stdio.h> #include <conio.h> int ucln(int a, int b) { a = abs(a); b = abs(b); if (a==b) return a; if (a>b) return ucln(a-b,b); return ucln(a,b-a); } int bcnn(int a, int b) { a = abs(a); b = abs(b); return (a*b)/ucln(a,b); } typedef struct PS{ int tu; int mau; } phanso; phanso nhap_PS(void) { phanso x; printf("Nhap tu so: "); scanf("%d",&x.tu); printf("Nhap mau so: "); scanf("%d",&x.mau); return x; }
  • 25. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh void in_PS(phanso *x) { printf("%d/%d",x->tu,x->mau); } phanso tong_2_PS(phanso x, phanso y) { phanso z; z.tu = x.tu*bcnn(x.mau,y.mau)/x.mau + y.tu*bcnn(x.mau,y.mau)/y.mau; z.mau = bcnn(x.mau,y.mau); return z; } void main() { phanso x,y,z; clrscr(); printf("Nhap phan so x:n"); x = nhap_PS(); printf("Nhap phan so y:n"); y = nhap_PS(); printf("nnt x = "); in_PS(&x); printf("nt y = "); in_PS(&y); z = tong_2_PS(x,y); printf("nnTong 2 phan so la:n"); printf("nt z = "); in_PS(&z); getch(); } Câu 3.2: Cho cấu trúc phân số gồm tử số và mẫu số như sau: struct PS {int tu, mau;}; - Viết hàm tạo phân số - Viết hàm in phân số dạng tu/mau - Viết hàm tính hiệu hai phân số, kết quả trả về phân số Viết chương trình sử dụng các hàm trên nhập hai phân số, tính và in ra màn hình hiệu của chúng. #include <stdio.h> #include <conio.h> int ucln(int a, int b) { a = abs(a); b = abs(b); if (a==b) return a; if (a>b) return ucln(a-b,b); return ucln(a,b-a); } int bcnn(int a, int b) { a = abs(a); b = abs(b); return (a*b)/ucln(a,b); } typedef struct PS{ int tu;
  • 26. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh int mau; } phanso; phanso nhap_PS(void) { phanso x; printf("Nhap tu so: "); scanf("%d",&x.tu); printf("Nhap mau so: "); scanf("%d",&x.mau); return x; } void in_PS(phanso *x) { printf("%d/%d",x->tu,x->mau); } phanso hieu_2_PS(phanso x, phanso y) { phanso z; z.tu = x.tu*bcnn(x.mau,y.mau)/x.mau - y.tu*bcnn(x.mau,y.mau)/y.mau; z.mau = bcnn(x.mau,y.mau); return z; } void main() { phanso x,y,z; clrscr(); printf("Nhap phan so x:n"); x = nhap_PS(); printf("Nhap phan so y:n"); y = nhap_PS(); printf("nnt x = "); in_PS(&x); printf("nt y = "); in_PS(&y); z = hieu_2_PS(x,y); printf("nnHieu 2 phan so la:n"); printf("nt z = x-y = "); in_PS(&z); getch(); } Câu 3.3: Cho cấu trúc số phức gồm phần thực và phần ảo như sau: struct SP {float thuc, ao;}; - Viết hàm tạo số phức - Viết hàm in số phức dạng thuc + i*ao - Viết hàm tính tổng hai số phức, kết quả trả về số phức Viết chương trình sử dụng các hàm trên nhập hai số phức, tính và in ra màn hình tổng của chúng. #include <stdio.h> #include <Conio.h> typedef struct SP { float thuc; float ao; } sophuc; sophuc tao_SP(void) { sophuc x; printf("Nhap phan thuc: "); scanf("%f",&x.thuc);
  • 27. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh printf("Nhap phan ao: "); scanf("%f",&x.ao); return x; } void in_SP(sophuc *x) { printf("%.2f + i*%.2f",x->thuc,x->ao); } sophuc tong_2SP(sophuc x, sophuc y) { sophuc z; z.thuc = x.thuc+y.thuc; z.ao = x.ao+y.ao; return z; } void main() { sophuc x,y,z; clrscr(); printf("nnNhap x: n"); x = tao_SP(); printf("nNhap y: n"); y = tao_SP(); printf("nnt x = "); in_SP(&x); printf("nt y = "); in_SP(&y); z = tong_2SP(x,y); printf("nnTong cua 2 so phuc la: "); printf("nt z = x+y = "); in_SP(&z); getch(); } Câu 3.4: Cho cấu trúc số phức gồm phần thực và phần ảo như sau: struct SP {float thuc, ao;}; - Viết hàm tạo số phức - Viết hàm in số phức dạng thuc + i*ao - Viết hàm tính tổng hai số phức, kết quả trả về số phức Viết chương trình sử dụng các hàm trên nhập hai số phức, tính và in ra màn hình hiệu của chúng. #include <stdio.h> #include <Conio.h> typedef struct SP { float thuc; float ao; } sophuc; sophuc tao_SP(void) { sophuc x; printf("Nhap phan thuc: "); scanf("%f",&x.thuc); printf("Nhap phan ao: "); scanf("%f",&x.ao); return x; } void in_SP(sophuc *x) { printf("%.2f + i*%.2f",x->thuc,x->ao); } sophuc hieu_2SP(sophuc x, sophuc y)
  • 28. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh { sophuc z; z.thuc = x.thuc-y.thuc; z.ao = x.ao-y.ao; return z; } void main() { sophuc x,y,z; clrscr(); printf("nnNhap x: n"); x = tao_SP(); printf("nNhap y: n"); y = tao_SP(); printf("nnt x = "); in_SP(&x); printf("nt y = "); in_SP(&y); z = hieu_2SP(x,y); printf("nnHieu cua 2 so phuc la: "); printf("nt z = x-y = "); in_SP(&z); getch(); } Câu 3.5: Cho cấu trúc sinh viên gồm họ tên, tuổi, điểm kỳ 1, điểm kỳ 2, điểm cả năm như sau: struct SV {char hoten[30]; int tuoi; float diemky1, diemky2, diemcanam; }; Trong đó, diemcanam = (diemky1 + diemky2*2)/3; - Viết hàm nhập mảng n sinh viên - Viết hàm xem thông tin sinh viên gồm họ tên, tuổi, điểm cả năm Viết chương trình sử dụng các hàm trên nhập vào từ bàn phím 5 sinh viên, cho xem thông tin về các sinh viên vừa nhâp. PHẦN 4 Câu 4.1: Viết chương trình nhập vào từ bàn phím n số thực, hãy ghi các số thực dương vào một tệp văn bản #include <stdio.h> #include <conio.h> void main() { int i,n; float temp; FILE *f; clrscr(); nhap: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap; f = fopen("so_thdg.txt","wt"); for (i=0;i<n;i++) { printf("A[%d] = ",i); scanf("%f",&temp); if (temp>0) fprintf(f,"%.2f ",temp); }
  • 29. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh fclose(f); } Câu 4.2: Cho một tệp văn bản gồm các số nguyên cách nhau ít nhất một dấu cách trống. Hãy đọc các số nguyên từ tệp ra, tính và in ra màn hình tổng các số có giá trị chẵn #include <stdio.h> #include <conio.h> void main() { int ar[100], n = 0, sum,i; FILE *fi; clrscr(); fi = fopen("songuyen.txt","rt"); while (!feof(fi)) { if (fscanf(fi,"%d",ar + n) > 0) n++; } fclose(fi); sum = 0; for (i=0;i<n;i++) { printf("%d ",ar[i]); if (ar[i] % 2 == 0) sum += ar[i]; } printf("nnTong cac so chan la %dn",sum); getch(); } Câu 4.3: Cho một tệp văn bản gồm các số nguyên cách nhau ít nhất một dấu cách trống. Hãy đọc tệp, đếm và in ra màn hình số phần tử dương có mặt trong tệp #include <stdio.h> #include <conio.h> void main() { int ar[100], n = 0, sum,i; FILE *f; char c; clrscr(); f = fopen("songuyen.txt","rt"); while (!feof(f)) { c = getc(f); putchar(c); if (fscanf(f,"%d",ar + n) > 0) n++; } fclose(f); sum = 0; for (i=0;i<n;i++) {
  • 30. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh printf("%d ",ar[i]); if (ar[i] > 0) sum += ar[i]; } printf("nnTong cac so duong la %dn",sum); getch(); } Câu 4.4: Viết chương trình nhập vào từ bàn phím n số nguyên, hãy ghi các số nguyên dương vào một tệp văn bản #include <stdio.h> #include <conio.h> void main() { int i,n,temp; FILE *f; clrscr(); nhap: printf("Nhap n: n = "); scanf("%d",&n); if (n<=0) goto nhap; f = fopen("so_ngd.txt","w"); for (i=0;i<n;i++) { printf("A[%d] = ",i); scanf("%d",&temp); if (temp>0) fprintf(f,"%d ",temp); } fclose(f); } Câu 4.5: Tạo một tệp văn bản gồm hai dòng, mỗi dòng một xâu ký tự. Đọc và in ra màn hình nội dung của tệp. #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> void main() { FILE *f; char *str; clrscr(); if ((f = fopen("vanban.txt","wt+"))==NULL) printf("Loi. Khong the mo tep."); else { printf("Nhap vao 2 xau ky tu (An Enter 2 lan de ket thuc): n"); do { gets(str); strcat(str,"n"); fputs(str,f); } while (*str!='n'); } rewind(f); //Dat vi tri cua so ve dau tep while (!feof(f)) { fgets(str,79,f); printf(str); } fclose(f);
  • 31. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh getch(); } Câu 4.6: Cho một tệp văn bản gồm các xâu ký tự. Viết chương trình đọc tệp, đếm và in ra màn hình số chữ cái in hoa có mặt trong tệp #include <stdio.h> #include <conio.h> void main() { char c; int i=0; FILE *fpt; clrscr(); if ((fpt = fopen("test.txt","rt")) == NULL) printf("an Co loi, khong mo duoc tep de doc."); else do { c=getc(fpt); putchar(c); if (c>='A'&&c<='Z') i++; } while (c!=EOF); printf("nnSo chu cai in hoa co trong tep la: %d",i); getch(); } // Nguyen Bui Hau #include <conio.h> #include <stdio.h> void main() { clrscr(); int i,n; FILE *f; char ch, xau[100]; f= fopen("text.txt","rt"); while (!feof(f)) fgets(xau, 100, f); printf("%-30s", xau); i=0;n=0; while (xau[i]!='0'){ if ((xau[i] >='A')&& (xau[i] <= 'Z')) n++; i++;} printf("nSo chu HOA trong tep: %d", n); getch();} Câu 4.7: Cho một tệp văn bản gồm các số nguyên cách nhau ít nhất một dấu cách trống. Hãy đọc các số nguyên từ tệp ra, tính và in ra màn hình tổng các số có giá trị lẻ. #include <stdio.h> #include <conio.h> void main() { int ar[100], n = 0, sum,i; FILE *f; clrscr(); f = fopen("songuyen.txt","rt"); while (!feof(f)) {
  • 32. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh if (fscanf(f,"%d",ar + n) > 0) n++; } fclose(f); sum = 0; for (i=0;i<n;i++) { printf("%d ",ar[i]); if (ar[i]%2 != 0) sum += ar[i]; } printf("nnTong cac so le la %dn",sum); getch(); } Câu 4.8: Cho một tệp văn bản gồm các số nguyên cách nhau ít nhất một dấu cách trống. Hãy tính và in ra màn hình trung bình cộng của các phần tử đọc ra từ tệp. #include <stdio.h> #include <conio.h> void main() { int ar[100], n = 0, sum,i, tbc; FILE *f; clrscr(); if ((f = fopen("songuyen.txt","rt")) == NULL) printf("Co loi! Khong mo duoc file."); else while (!feof(f)) { if (fscanf(f,"%d",ar + n) > 0) n++; } fclose(f); sum = 0; for (i=0;i<n;i++) { printf("%d ",ar[i]); sum += ar[i]; } tbc = sum/n; printf("nnTrung binh cong cac so la %dn",tbc); getch(); } Câu 4.9: Cho một tệp văn bản gồm các xâu ký tự. Viết chương trình đọc tệp, đếm và in ra màn hình số chữ cái ‘A‘ có mặt trong tệp #include <stdio.h> #include <conio.h> void main() { char c; int i=0; FILE *fpt;
  • 33. Tài liệu ôn thi Lập trình C. Nguyễn Bùi Hậu Lớp 48A Khoa CNTT Trường Đại học Vinh clrscr(); if ((fpt = fopen("test.txt","rt")) == NULL) printf("an Co loi, khong mo duoc tep de doc."); else do { c=getc(fpt); putchar(c); if (c=='A') i++; } while (c!=EOF); printf("nnSo chu cai 'A' co trong tep la: %d",i); getch(); } Câu 4.10: Cho một tệp văn bản gồm các số nguyên cách nhau ít nhất một dấu cách trống. Hãy tính và in ra màn hình tổng của các phần tử đọc ra từ tệp. #include <stdio.h> #include <conio.h> void main() { int ar[100], n = 0, sum,i; FILE *f; clrscr(); if ((f = fopen("songuyen.txt","rt")) == NULL) printf("Co loi! Khong mo duoc file."); else while (!feof(f)) { if (fscanf(f,"%d",ar + n) > 0) n++; } fclose(f); sum = 0; for (i=0;i<n;i++) { printf("%d ",ar[i]); sum += ar[i]; } printf("nnTong cac so la %dn",sum); getch(); }