Download miễn phí Giáo trình Bài tập C và C++





MỤC LỤC
CHƯƠNG 1 CÁC THAO TÁC VÀO RA CƠBẢN VÀ
CÁC CÂU LỆNH CÓ CẤU TRÚC
1.1. CÂU HỎI.
1.2. BÀI TẬP.
Chươg 2 Hàm
2.1. CÂU HỎI.
2.2. BÀI TẬP.
CHƯƠNG 3 MẢNG VÀ CON TRỎ
3.1. CÂU HỎI.
3.3. BÀI TẬP.
CHƯƠNG 4 CHUỖI KÝ TỰ
4.1. CÂU HỎI.
4.2. BÀI TẬP.
CHƯƠNG 5 KIỂU CẤU TRÚC
5.1. CÂU HỎI.
5.2. BÀI TẬP.
CHƯƠNG 6 KIỂU TẬP TIN
6.1. CÂU HỎI.
6.2. BÀI TẬP.



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

;
scanf("%d",&chon);
switch (chon)
{ case 1: pf = nhap;break;
case 2: pf = bp;break;
case 3: pf = lp;break;
79
case 4: pf = hv;break;
default: thoat = true;break;
}
if (thoat)
break;
hienthi(a,b);
pf(a,b);
hienthi(a,b);
}
getch();
}
void hienthi(int x, int y)
{ printf("\n a = %d, b = %d \n",x,y);}
void bp(int &x, int &y)
{
x *= x;
y *= y;
}
void lp(int &x, int &y)
{
x = x*x*x;
y = y*y*y;
}
void hv(int &x, int &y)
{ int tam =x;
x = y;
y = tam;
}
void nhap(int &x, int &y)
{ printf("\n Nhap gia tri moi cua a : ");
scanf("%d",&x);
printf("\n Nhap gia tri moi cua b : ");
80
scanf("%d",&y);
}
Trả lời: Chương trình định nghĩa 4 hàm tính bình phương, lũy thừa ba, nhập liệu. Các
hàm này có cùng kiểu trả về là void và có cùng số tham số là hai tham chiếu tới số
nguyên int. Trong hàm main khai báo một con trỏ hàm pf trỏ tới một hàm có kiểu trả
về là void và có hai tham số là hai tham chiếu tới số nguyên int. Chương trình yêu cầu
người sử dụng chọn một trong 5 số, tùy theo số nhập vào mà con trỏ hàm pf gọi thực
hiện hàm thích hợp.
Bài 21. Viết lại chương trình trên nhưng không sử dụng con trỏ hàm.
#include
#include
#include
enum bool {false, true};
void nhap(int &x, int &y);
void bp(int &x, int &y);
void lp(int &x, int &y);
void hv(int &x, int &y);
void hienthi(int a, int b);
void main()
{
bool thoat = false;
int a=2, b=4;
int chon;
clrscr();
while (thoat == false)
{ printf("\n (0) Thoat (1)Nhap (2)Binh phuong (3)Lap
phuong (4)Hoan vi \n");
scanf("%d",&chon);
switch (chon)
{ case 1:
hienthi(a,b);
nhap(a,b);
hienthi(a,b);
break;
81
case 2:
hienthi(a,b);
bp(a,b);
hienthi(a,b);
break;
case 3:
hienthi(a,b);
lp(a,b);
hienthi(a,b);
break;
case 4:
hienthi(a,b);
hv(a,b);
hienthi(a,b);
break;
default: thoat = true;break;
}
if (thoat)
break;
}
getch();
}
void hienthi(int x, int y)
{ printf("\n a = %d, b = %d \n",x,y);}
void bp(int &x, int &y)
{
x *= x;
y *= y;
}
void lp(int &x, int &y)
{
x = x*x*x;
y = y*y*y;
}
82
void hv(int &x, int &y)
{ int tam =x;
x = y;
y = tam;
}
void nhap(int &x, int &y)
{ printf("\n Nhap gia tri moi cua a : ");
scanf("%d",&x);
printf("\n Nhap gia tri moi cua b : ");
scanf("%d",&y);
}
Bài 22. Giải thích cách thức hoạt động của mảng con trỏ hàm trong chương trình sau
đây:
#include
#include
#include
void nhap(long &x, long &y);
void bp(long &x, long &y);
void lp(long &x, long &y);
void hv(long &x, long &y);
void hienthi(long a, long b);
void main()
{
const max = 5;
void (*pfa[max])(long &, long &);
long a=1, b=2;
int chon;
clrscr();
for(int i=0;i {
printf("\n (1)Nhap (2)Binh phuong (3)Lap phuong
(4)Hoan vi \n");
83
scanf("%d",&chon);
switch (chon)
{ case 1: pfa = nhap;break;
case 2: pfa = bp;break;
case 3: pfa = lp;break;
case 4: pfa = hv;break;
default:pfa = 0;
}
}
for(i=0;i {
pfa(a,b);
hienthi(a,b);
}
getch();
}
void hienthi(long x, long y)
{ printf("\n a = %ld, b = %ld \n",x,y);}
void bp(long &x, long &y)
{
x *= x;
y *= y;
}
void lp(long &x, long &y)
{
x = x*x*x;
y = y*y*y;
}
void hv(long &x, long &y)
{ long tam =x;
x = y;
y = tam;
}
84
void nhap(long &x, long &y)
{ printf("\n Nhap gia tri moi cua a : ");
scanf("%ld",&x);
printf("\n Nhap gia tri moi cua b : ");
scanf("%ld",&y);
}
Bài 23. Giải thích cách thức hoạt động của tham số hàm là con trỏ hàm trong chương
trình sau đây:
#include
#include
#include
enum bool {false, true};
void nhap(int &x, int &y);
void bp(int &x, int &y);
void lp(int &x, int &y);
void hv(int &x, int &y);
void hienthi(void (*)(int &, int &), int &, int &);
void main()
{ void (*pf)(int &, int &);
bool thoat = false;
int a=2, b=4;
int chon;
clrscr();
while (thoat == false)
{ printf("\n (0) Thoat (1)Nhap (2)Binh phuong (3)Lap
phuong (4)Hoan vi \n");
scanf("%d",&chon);
switch (chon)
{ case 1: pf = nhap;break;
case 2: pf = bp;break;
case 3: pf = lp;break;
case 4: pf = hv;break;
85
default: thoat = true;break;
}
if (thoat)
break;
hienthi(pf,a,b);
}
getch();
}
void hienthi(void (*pf)(int &, int &),int &x, int &y)
{ printf("\n a = %d, b = %d \n",x,y);
pf(x,y);
printf("\n a = %d, b = %d \n",x,y);
}
void bp(int &x, int &y)
{
x *= x;
y *= y;
}
void lp(int &x, int &y)
{
x = x*x*x;
y = y*y*y;
}
void hv(int &x, int &y)
{ int tam =x;
x = y;
y = tam;
}
void nhap(int &x, int &y)
{ printf("\n Nhap gia tri moi cua a : ");
scanf("%d",&x);
printf("\n Nhap gia tri moi cua b : ");
86
scanf("%d",&y);
}
Bài 24. Viết chương trình có sử dụng hàm với tham số là con trỏ hàm để tính max (x2,
y2). Hàm tính max này được khai báo nguyên mẫu như sau:
float lonnhat(float (*f)(float),float (*g)(float),float x);
#include
#include
float bp(float x);
float lp(float x);
float lonnhat(float (*f)(float),float (*g)(float),float
x);
void main()
{
float x,t;
clrscr();
printf("\n Nhap x="); scanf("%f",&x);
printf("\n %.2f binh phuong = %.2f",x,bp(x));
printf("\n %.2f laptop phuong = %.2f",x,lp(x));
t = lonnhat(bp,lp,x);
printf("\n Max la : %.2f",t);
getch();
}
float lonnhat(float (*f)(float),float (*g)(float),float x)
{
return (((*f)(x)>(*g)(x))?(*f)(x):(*g)(x));
}
float bp(float x)
{
return (x*x);
}
float lp(float x)
{
return (x*x*x);
}
Bài 25. Viết chương trình có sử dụng hàm với tham số là con trỏ hàm để tính:
nxxxS )(...)(1 2 ++++=
#include
#include
#include
float lt(float x,int n);
float f(float x,int n,float (*g)(float,int));
void main()
{
int n;
float x,t;
printf("\n Nhap x = : ");
scanf("%f",&x);
printf("\n Nhap so nguyen khong am n = ");
scanf("%d",&n);
t = sqrt(x);
printf("\n Tong luy thua : %f",f(t,n,lt));
getch();
}
float lt(float x,int n)
{
int i;
float s;
if (n==0)
return (1.0);
for (s=1,i=1;i<=n;i++)
s*=x;
return (s);
}
87
88
float f(float x,int n,float (*g)(float,int))
{
int i;
float s;
for (s=0.0,i=0;i<=n;i++)
s+=(*g)(x,i);
return (s);
}
89
CHƯƠNG 4
CHUỖI KÝ TỰ
4.1. CÂU HỎI
1. Phạm vi giá trị của các ký tự trong bảng mã ASCII?
2. Định nghĩa chuỗi?
3. Tại sao để lưu trữ một chuỗi gồm n ký tự ta cần một mảng ký tự gồm n+1 phần tử.
4. Có bao nhiêu byte được dùng trong bộ nhớ cho mỗi biến được khai báo sau đây:
a. char *str1 = { "String 1" };
b. char str2[] = { "String 2" };
c. char string3;
d. char str4[20] = { "This is String 4" };
e. char str5[20];
5. Với khai báo: char *string = "A string!";
Hãy cho biết các giá trị sau:
a. string[0]
b. *string
c. string[9]
d. string[33]
e. *string+8
f. string
6. Viết dòng lệnh khai báo mảng ký tự và khởi tạo chuỗi: "Pointers are fun!".
7. Tương tự câu trên nhưng không dùng mảng
8. Viết dòng lệnh cấp phát vùng nhớ để lưu chuỗi 80 ký tự và nhập chuỗi từ bàn phím
vào vùng nhớ đó.
9. Viết hàm sao chép một mảng ký tự sang một mảng khác.
10. Viết một hàm nhận vào hai chuỗi, đếm số ký tự trong mỗi chuỗi và trả về một con
trỏ trỏ tới chuỗi dài hơn.
11. Có điểm gì sai không trong khai báo sau :
char a_string[10] = "This is a string";
12. Có điểm gì sai không trong khai báo sau :
char *quote[100] = { "Smile, Friday is almost here!" };
13. Có điểm gì sai không trong khai báo sau :
char *string1;
char *string2 = "Second";
string1 = string2;
90
14. Có điểm gì sai không trong khai báo sau :
char string1[];
char string2[] = "Second";
string1 = string2;
TRẢ LỜI:
1. Các giá trong bảng mã ASCII có phạm vi từ 0 đến 255. Từ 0 đến 127 là các ký tự
chuẩn, và từ 128 đến 255 là các ký tự mở rộng.
2. Một chuỗi là một dãy các ký tự kết thúc bằng ký tự null.
3. Để lưu ký tự kết thúc chuỗi là null.
4.
a. 9 byte (8 byte cho chuỗi và 1 byte cho ký tự null)
b. 9 byte
c. 1 byte
d. 20 byte
e. 20 byte
5.
a. A
b. A
c. 0 (NUL)
...
 

Các chủ đề có liên quan khác

Top