Tải bản đầy đủ (.docx) (64 trang)

C++ Bài Tập Và Lời Giải các Bài tập Cơ Bản

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (498.32 KB, 64 trang )

TÔI CHẮC CHẮN LÀM ĐƯỢC
Bài 1: Cho đoạn chương trình sau:
#include <stdio.h>
#include <math.h>
main()
{ int i = 4, j = 21, k, b, y;
float x = 94.55;
Hãy xác định lần lượt giá trị các phép gán sau:

a) k = i*j;
b) y = x + i;
c) y = j+j;
d) x = i;
e) i = i+j;
f) j = j ;
g) B = (i > j) && (j = -j);
1 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
h) B = (i < j) && (j == j);
i) B = i-5;
j) k = i++;
k) k = i;
l) i += j;
lời giải:
#include <stdio.h>
#include <conio.h>

void main()
{ int i = 4, j = 21, k, y, B;
float x = 94.55;


clrscr();

k = i*j; printf("\nk = %d", k); //84
y = x + i; printf("\ny = %d", y); //98
y = j+j; printf("\ny = %d", y); //42
x = i; printf("\nx = %3.1f", x); //4.0
i = i+j; printf("\ni = %d", i); //25
j = j ; printf("\nj = %d", j); //20
B = (i > j) && (j = -j); printf("\nB = %d", B); //1
B = (i < j) && (j == j); printf("\nB = %d", B); //0
B = i-5; printf("\nB = %d", B); //20
k = i++; printf("\nk = %d", k); //25
k = i; printf("\nk = %d", k); //25
i += j; printf("\ni = %d", i); //5
getch();
}
Bài 2: Cho 4 số a, b, c, d đọc từ bàn phím. Xác định Max là cực đại và Min là cực
tiểu của 4 số đó.
Lời giải
2 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
#include <stdio.h>
#include <conio.h>

int main(void)
{ int a, b, c, d, Min, Max;

printf("\nCho a, b, c, d: ");
scanf("%d%d%d%d", &a, &b, &c, &d);


Min = Max = a;

if (Min > b) Min = b;
else Max = b;

if (Min > c) Min = c;
else if (Max < c) Max = c;

if (Min > d) Min = d;
else if (Max < d) Max = d;

printf("\nBon so da cho: %5d, %5d, %5d, %5d", a, b, c, d);
3 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
printf("\nSo lon nhat : %5d", Max);
printf("\nSo nho nhat : %5d", Min);

getch();
return 0;
}
Bài 3: Giải và biện luận hệ hai phương trình tuyến tính hai ẩn với các hệ số a, b, c,
d, m, n nhập từ bàn phím.

Lời giải:
#include <stdio.h>
#include <conio.h>
#include <math.h>


int main(void)
{ float a, b, c, d, m, n, x, y;
printf("\Giai v bien luan he phuong trinh: ");
printf("\nax + by = m");
printf("\ncx + dy = n\n");
printf("\nCho a, b, c, d, m, n: ");
4 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
scanf("%f%f%f%f%f%f", &a, &b, &c, &d, &m, &n);

float D = a*d - b*c;
float Dx = m*d - n*b;
float Dy = a*n - c*m;

if (fabs(D) <= 0.00001)
if ((fabs(Dx) <= 0.00001) && (fabs(Dy) <= 0.0001))
printf("\nPhuong trinh nghiem dung voi moi x va y");
else
printf("\nPhuong trinh vo nghiem");
else { x = Dx/D;
y = Dy/D;
printf("\nx = %10.2f", x);
printf("\ny = %10.2f", y);
}

getch();
return 0;
}
5 25/05/2014

THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
Bài 4: Viết chương trình xây dựng bảng cửu chương và in lên màn hình.
Lời giải:
#include <stdio.h>
#include <conio.h>
#include <string.h>

int main(void)
{ clrscr();

char *s = "B A N G C U U C H U O N G";
gotoxy((80-strlen(s))/2, 1);
printf("%s", s);

for (int i = 0; i < 9; i++)
{ int x = (i % 5)*15 + 1;
for (int j = 0; j < 9; j++)
{ int y = (i / 5)*10 + j + 3;
gotoxy(x, y);
printf("%2d x %2d = %2d", (i+1), (j+1), (i+1)*(j+1));
}
}
6 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC

getch();
return 0;
}

Giải bằng passcal:
Program Bai5;
Var
A: Array[1 11] OF Integer;
i, c: Integer;
Begin
For i := 1 To 10 Do
Begin
Write('A[', i, '] = ');
ReadLn(a[i]);
End;
For i := 1 To 10 Do
Begin
Write('A[', i, '] = ');
ReadLn(a[i]);
End;
A[11] := 5;
i := 1;
While A[i] <> 5 Do
i := i + 1;
If i < 10 Then
Begin
c := A[i];
A[i] := A[i+1];
A[i+1] := c;
End;
For i := 1 To 10 Do
WriteLn('A[', i, '] = ', A[i]);
ReadLn;
End.

Bài 5: Lập trình tính giai thừa của số N.
7 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
Lời giải :
#include <stdio.h>
#include <conio.h>
#include <math.h>

int main(void)
{ clrscr();

printf("\nC H U O N G T R I N H T I N H G I A I T H U A");
printf("\nCho so N: ");
int N;
scanf("%d", &N);

double GT = 1;
for (int i = 2; i <= N; i++)
GT *= i;

printf("\nGiai thua cua %3d la %-10.0f", N, GT);
getch();
return 0;
}
8 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
Bài 6 : Lập chương trình in lên màn hình các số từ 1 đến 6 thành hình sau:
1

12
123
1234
12345
123456

123456
12345
1234
123
12
1

1
121
12321
1234321
123454321
12345654321
9 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC

Lời giải:
#include <stdio.h>
#include <conio.h>

int main(void)
{ clrscr();
for (int i = 1; i < 7; i++)

{ for (int j = 1; j <= i; j++)
printf("%d",j);
printf("\n");
}

for (i = 1; i < 7; i++)
{ printf("\n\t");
for (int j = i; j >= 1; j )
printf("%d\b\b",j);
}

for (i = 1; i < 7; i++)
{ printf("\n%*s", 7-i, "");
10 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
int j = 1, k = 1;
do {
printf("%d",j);
if (j == i) k = -1;
j += k;
} while (j >= 1);
}

getch();
return 0;
}
Bài 7 : Viết chương trình in lên màn hình các số từ 0 đến 9 thành hình sau:
1
232

34543
4567654
11 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
567898765
67890109876
7890123210987
890123454321098
90123456765432109
0123456789876543210
Lời giải :
#include <stdio.h>
#include <conio.h>

int main(void)
{ clrscr();

for (int i = 1; i <= 10; i++)
{ printf("\n%*s", 10-i, "");
int j = i, k = 1;
do {
printf("%d",j%10);
if (j == 2*i - 1) k = -1;
j += k;
} while (j >= i);
12 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
}

getch();
return 0;
}
Bài 8 : Viết chương trình tính gần đúng y = e
x
, biết hàm này có thể được triển khai
dưới dạng chuỗi như sau:
e
x
= 1 + x/1! + x
2
/2! + + x
i
/i! +
lời giải :
#include <stdio.h>
#include <math.h>
#include <conio.h>

int main(void)
{ double ex, ex0, sh = 1;
double x;
printf("\nCho x: ");
scanf("%lf", &x);

ex = sh;
int i = 1;
13 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC

do {
ex0 = ex;
sh *= x/i++;
ex += sh ;
} while (fabs(ex-ex0) >= 0.00001);

printf("\nexp(x) = %10.5f", ex);

getch();
return 0;
}
14 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
Bài 9 ; Viết chương trình tìm tất cả các số nguyên trong khoảng 1000 đến 9999
thoả mãn hệ thức sau:
abcd = 1000a+100b+10c+d = a
4
+b
4
+c
4
+d
4
lời giải :
#include <stdio.h>
#include <conio.h>

void main(void)
{ int a, b, c, d, Number;


clrscr();
for (a = 1; a <= 9; a++)
for (b = 0; b <= 9; b++)
for (c = 0; c <= 9; c++)
for (d = 0; d <= 9; d++)
{ Number = 1000*a + 100*b +10*c + d;
if (a*a*a*a + b*b*b*b + c*c*c*c + d*d*d*d==
Number)printf("%6d", Number);
}
getch();
}
15 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
Bài 10 : Lập trình tính y = ax + by + cz với a, b, c và x, y, z là các số thực nhập từ
bàn phím.

Lời giải :
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main(void)
{ float a, b, c, x, y, z;

printf("\nCho a, b, c: ");
scanf("%f%f%f", &a, &b, &c);

printf("\nCho x, y, z: ");
scanf("%f%f%f", &x, &y, &z);


float Y = pow(a, x) + pow(b, y) + pow(c, z);

printf("\nKet qua: y = %10.3f", Y);

getch();
return 0;
}
16 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
Bài 11 : Có 3 loại giấy bạc 5000đ, 2000đ, 1000đ. Có bao nhiêu tổ hợp 3 loại
giấy bạc trên để có 200000 đ sao cho tổng số tờ giấy bạc không quá 50 tờ, trong đó
mỗi loại giấy bạc phải có ít nhất 1 tờ?
Lời giải :

#include <stdio.h>
#include <conio.h>

int main(void)
{ int n5, n2, n1;

n5 = 200/5;

int k = 0;
clrscr();


for (int i = n5; i >= 1; i )
{ n2 = (200 - 5*i)/2;

for (int j = n2; j >= 1; j )
{ n1 = 200 - i*5 - j * 2;
if ((n1 > 0) && (i + j + n5 <= 50))
{
17 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
printf("\n%3d\t:%6d,%4d,%4d", ++k,
i, j, n1);
}
if (!(k%100)) getch();
}
}

printf("\n\nTong so hoan vi: %d", k);
getch();
return 0;
}
Bài 12 : Viết hàm tính a
n
với a là số thực và n nguyên dương.

Lời giải :
#include <stdio.h>
#include <conio.h>

float LT(float, int); //Khong dung de qui
float LT1(float, int); //Dung de qui

int main(void)

{ float y, a;
18 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
int n;
printf("\nCho a, n: ");
scanf("%f%d", &a, &n);

printf("\na^n = %10.2f", LT1(a, n));


getch();
return 0;
}

float LT(float a, int n)
{ float y = 1;
for (int i = 1; i <= n; i++)
y *= a;
return y;
}

float LT1(float a, int n)
{ if (n == 1) return a;
else return a*LT1(a, n-1);
}
19 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
Bài 13 : Lập trình tạo bảng chọn để nhập dữ liệu và tính diện tích các hình vuông,

tròn, chữ nhật, hình thang, tam giác theo nhu cầu.
Lời giải :
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>

char *M[30] = {"Tinh dien tich hinh vuong",
"Tinh dien tich hinh chu nhat",
"Tinh dien tich hinh tam giac",
"Tinh dien tich hinh tron",
"Tinh dien tich hinh thang",
"Ket thuc"};


void HinhVuong();
void ChuNhat();
void TamGiac();
void HinhTron();
void HinhThang();

void Khung(int, int, int, int, char ;
20 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
int Menu(char *M[30], int, int);

int main(void)
{ int k = 0;
clrscr();


do {
k = Menu(M, 6, k);
switch (k)
{ case 0: HinhVuong(); break;
case 1: ChuNhat(); break;
case 2: TamGiac(); break;
case 3: HinhTron(); break;
case 4: HinhThang(); break;
}
} while (k != 5);


return 0;
}


void Khung(int X, int Y, int W, int H, char *Title)
21 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
{ int i, j;
window(1, 1, 80, 24);
textattr(WHITE + (GREEN << 4));
gotoxy(X, Y); cprintf("%c", 218);
gotoxy(X, Y+H); cprintf("%c",192);
gotoxy(X+W, Y); cprintf("%c",191);
gotoxy(X+W, Y+H); cprintf("%c",217);

for (i = X+1; i <= X+W-1; i++)

{
gotoxy(i, Y); cprintf("%c",196);
gotoxy(i, Y+H); cprintf("%c",196);
}

for (i = Y+1; i <= Y+H-1; i++)
{
gotoxy(X, i); cprintf("%c",179);
gotoxy(X+W, i); cprintf("%c",179);
}
gotoxy(X + (W - strlen(Title)) / 2, Y);
cprintf("%s", Title);

textattr(WHITE + (BLUE << 4));
22 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
for (i = Y+1; i <= Y+H-1; i++)
{
for (j = X+1; j <= X+W-1; j++)
{
gotoxy(j, i); cprintf("%c",32);
gotoxy(j, i); cprintf("%c",32);
}
}
window(X+1, Y+1, X+W-1, Y+H-1);
}

int Menu(char *M[30], int N, int k)
{ Khung((80 - 40)/2 - 1, 2, 40, N+1, "Menu chinh");

char c;
do {
for (int i = 0; i < N; i++)
{ gotoxy(1, i+1);
if (i == k) textattr(YELLOW + (RED << 4));
else textattr(WHITE + (BLUE << 4));
cprintf("%2d. %-34s", i+1, M[i]);
}
c = getch();
if (!c) c = getch();
23 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
switch(c)
{ case 72: if (k > 0) k ; break;
case 80: if (k < N-1) k++; break;
default: if ((c >= '1') && (c <= '9'))
k = c - 49; break;
}
} while (c != 13);
return k;
}

void HinhVuong()
{ Khung(1, 6, 40, 12, "Hinh Vuong");
float a;
gotoxy(1, 1); cprintf("\nCho canh hinh vuong: ");
cscanf("%f", &a);
float s = a*a;
gotoxy(1, 4);

cprintf("Dien tich hinh vuong la: %-10.3f", s);
getch();
}
void ChuNhat()
{ Khung(1, 6, 40, 12, "Hinh Chu Nhat");
float a, b;
24 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP
TÔI CHẮC CHẮN LÀM ĐƯỢC
gotoxy(1, 1); cprintf("\nCho canh a va b cua hinh chu nhat: ");
cscanf("%f%f", &a, &b);
float s = a*b;
gotoxy(1, 4);
cprintf("Dien tich hinh chu nhat la: %-10.3f", s);
getch();
}

void TamGiac()
{ char *M[30] = {"Cho canh day va chieu cao",
"Cho ba canh",
"Cho hai canh va goc xen giua",
"Cho hai goc va canh ke hai goc do",
"Ket thuc"};

int k = 0, error = 1;
float s;
do {
k = Menu(M, 5, k);
if (k < 4) Khung(1, 6, 40, 12, "Tam giac");
switch (k)

{ case 0: float a, h;
error = 0;
25 25/05/2014
THẦN ĐIÊU ĐẠI HIỆP

×