Tải bản đầy đủ

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

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

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×