Căn bản C/C++
2 posters
Trang 1 trong tổng số 2 trang
Trang 1 trong tổng số 2 trang • 1, 2
Căn bản C/C++
Bài 1
*** Lệnh khai báo thư viện
*vd : #include
Thư viện stdio.h là thư viện chuẩn trong C
các bạn có thể biết thêm 1 số thư viện khác như
thư viện dùng đẻ xử lý chuỗi ký tự
thư viện dùng để cấp phát bộ nhớ
cái nì quên rồi ai biết thì trích dùm tôi, lâu rồi nên quên nhưng tôi nhớ là khai báo thư viện này thì sử dụng được lệnh clrscr();
- tiếp theo là khai báo hàm :
* Có 2 kiểu khai báo hàm :
void main() <=== hàm không trả về giá trị
vd:
int main() <=== hàm trả về giá trị kiểu int
vd:
* int
Kích thước :16 bit
Khoảng giá trị : -32768->32767
* float
Kích thước : 32 bit
Khoảng giá trị :6 ký số, ví dụ như 6,55555
* char
Kích thước : 8bit
Khoảng giá trị : -128 ->127
*** Lệnh khai báo thư viện
*vd : #include
Thư viện stdio.h là thư viện chuẩn trong C
các bạn có thể biết thêm 1 số thư viện khác như
thư viện dùng đẻ xử lý chuỗi ký tự
thư viện dùng để cấp phát bộ nhớ
cái nì quên rồi ai biết thì trích dùm tôi, lâu rồi nên quên nhưng tôi nhớ là khai báo thư viện này thì sử dụng được lệnh clrscr();
- tiếp theo là khai báo hàm :
* Có 2 kiểu khai báo hàm :
void main() <=== hàm không trả về giá trị
vd:
- Code:
#include
void main()
{
printf("Test test test");
}
int main() <=== hàm trả về giá trị kiểu int
vd:
- Code:
#include
int main
{
int a;
printf("\n Nhap gia tri");
scanf("%d",&a);
return(a);
}
* int
Kích thước :16 bit
Khoảng giá trị : -32768->32767
* float
Kích thước : 32 bit
Khoảng giá trị :6 ký số, ví dụ như 6,55555
* char
Kích thước : 8bit
Khoảng giá trị : -128 ->127
Được sửa bởi ngày Tue Nov 13, 2007 2:31 pm; sửa lần 2.
Re: Căn bản C/C++
Biến và Hằng.
Biến: trong C biến là một vùng nhớ có tên dùng để lưu trữ các giá trị khi tính toán, các giá trị của biến có thể thay đổi trong suốt thời gian chương trình thực thi.
các thuộc tính của biến gồm có kiểu dữ lệu của biến (type), Tên Biến (name),và Miền giá trị (Domain).Các kiểu dữ liệu của biến và miền giá trị đã được giới thiệu ở trên.
để khai báo một biến ta thực hiện cú pháp sau:
ví dụ:
ví dụ:
ví dụ:
Biến: trong C biến là một vùng nhớ có tên dùng để lưu trữ các giá trị khi tính toán, các giá trị của biến có thể thay đổi trong suốt thời gian chương trình thực thi.
các thuộc tính của biến gồm có kiểu dữ lệu của biến (type), Tên Biến (name),và Miền giá trị (Domain).Các kiểu dữ liệu của biến và miền giá trị đã được giới thiệu ở trên.
để khai báo một biến ta thực hiện cú pháp sau:
- Code:
[b]type[/b] name[=giá trị khởi tạo];
[=giá trị khởi tạo] có thể có hoặc không.
ví dụ:
- Code:
[color=seagreen][b]int[/b] a;
[b]long[/b] b=10;
[/color]
ví dụ:
- Code:
[color=seagreen][b]int[/b] a,b=10,c,d;
[b]Hằng[/b]: là một vùng nhớ có tên giống như biến, tuy nhiên giá trị của hằng là không thay đổi suốt chương trình.
[/color]
- Code:
[color=seagreen][b]const type[/b] name=giátrị;
[/color]
ví dụ:
- Code:
[color=seagreen][b]const float [/b]pi=3.14;[/color]
Được sửa bởi ngày Tue Nov 13, 2007 2:32 pm; sửa lần 3.
Re: Căn bản C/C++
Các phép tóan trong C
Phép gán =
Phép tóan này dùng để gán một giá trị cho một biến với cú pháp sau:
ví dụ:
Phép tóan cộng +
ví dụ:
Phép gán =
Phép tóan này dùng để gán một giá trị cho một biến với cú pháp sau:
- Code:
[color=seagreen]dest=source;
với dest [b]phải[/b] là một biến. source là biến hay là một hằng số bất kỳ.
[/color]
ví dụ:
- Code:
[color=seagreen][b]int[/b] a,b=10;
[b]const int[/b] c=12;
a=b; //ok a=10.
a=11;//ok a=11.
11=a;//false 11 không phải là biến.
c=12;// false c là một hằng số không thể thay đổi được.
[/color]
Phép tóan cộng +
ví dụ:
- Code:
[color=seagreen][b]int[/b] a=0,b=1,c=2;
a=12+1; //lấy 12+1=13 rồi gán cho a, kết quả(kq) a=13.
a=b+c; //lấy biến giá trị b cộng giá tri c tức 1+2 rồi gán cho a, kq a=3.
a=c+10; //lấy biến c cộng 10 rồi gán cho a, kq a=12.
a=a+10; //lấy biến a cộng 10 rồi gán cho a,kq a=12+10=22.
a=a+a; //lấy biến a cộng cho a rồi gán cho a,kq=22+22=44.
[/color]
- Code:
[color=seagreen][b]#include[/b]
[b]#include[/b]
[b]int[/b] main()
{
float a,b,c;
printf("Chuong trinh tinh tong hai so\n")
printf("Ban hay nhap vao so thu nhat :");
scanf("%f",&a);
printf("Ban hay nhap vao so thu hai :");
scanf("%f",&b);
c=a+b;
printf("\nKet Qua của phep cong: %f+%f=%f",a,b,c);
return 0;
}[/color]
Được sửa bởi ngày Tue Nov 13, 2007 2:33 pm; sửa lần 1.
Re: Căn bản C/C++
Phép tóan trừ "-"
ví dụ:
ví dụ:
- Code:
[color=seagreen][b]int[/b] a,b=0,c=0;
a=12-1; //lấy 12-1 gán vào a, Kết quả(kq) a=11.
b=a-3; //lấy a-3 gán vào b, kq b=11-3=8.
c=b-8; //lấy b-8 gán vào c, kq c=8-8=0.[/color]
- Code:
[color=seagreen][b]#include[/b]
[b]#include[/b]
[b]int[/b] main()
{
[b]float[/b] a,b,c;
printf("Chuong trinh tinh tong hai so\n")
printf("Ban hay nhap vao so thu nhat :");
scanf("%f",&a);
printf("Ban hay nhap vao so thu hai :");
scanf("%f",&b);
c=a-b;
printf("\nKet Qua của phep cong: %f-%f=%f",a,b,c);
[b]return[/b] 0;
}[/color]
Được sửa bởi ngày Tue Nov 13, 2007 2:34 pm; sửa lần 3.
Re: Căn bản C/C++
Phép toán nhân *
- Code:
[b]int[/b]a,b;
a=2*20; //lấy 2 nhân với 20 rồi gán vào cho a, kết quả (kq) a=40.
b=a*2; //lấy a=40 nhân với 2 rồi gán vào b, kq b=80.
a=a*a; // lấy a=40 nhân với a=40 rồi gán lại cho a, kq a=1600
- Code:
[b]#include[/b]
[b]#include[/b]
[b]int[/b] main()
{
[b]float[/b] a,b,c;
printf("Chuong trinh tinh tich hai so\n")
printf("Ban hay nhap vao so thu nhat :");
scanf("%f",&a);
printf("Ban hay nhap vao so thu hai :");
scanf("%f",&b);
c=a*b;
printf("\nKet Qua của phep nhan: %f*%f=%f",a,b,c);
return 0;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:34 pm; sửa lần 1.
Re: Căn bản C/C++
Phép toán chia "/"
Phép chia số nguyên:
kết quả của phép toán là lấy phần nguyên của phép toán.
Ví dụ: 5/2 ta được 2 dư 1. Kết quả(kq) ta được 2.
Chú ý: Phép toán này chỉ thực được hiện trên tập số nguyên.
Vậy: Nếu ta có n=a*b+c thì phép toán chia nguyên của n/b=a và n/a=b.
Chương trình sau sẽ cho phép nhập vào hai số sau đó lấy phần nguyên của kết quả phép chia.
Phép toán này có kết quả như ta chia một số thực bình thường kết quả sẽ là một số thực như 5/2=2.5.
Như tôi đã nói như trên nếu n=a*b+c. ta có n/a=b và n/b=a là phép toán chia nguyên còn n%a=c hay n%b=c là phép toán lấy phần dư của phép chia nguyên. ví dụ ta có 5/2 được 2 dư 1 thì 5%2 sẽ được 1.
Phép chia số nguyên:
kết quả của phép toán là lấy phần nguyên của phép toán.
Ví dụ: 5/2 ta được 2 dư 1. Kết quả(kq) ta được 2.
Chú ý: Phép toán này chỉ thực được hiện trên tập số nguyên.
Vậy: Nếu ta có n=a*b+c thì phép toán chia nguyên của n/b=a và n/a=b.
Chương trình sau sẽ cho phép nhập vào hai số sau đó lấy phần nguyên của kết quả phép chia.
- Code:
#include
#include
int main()
{
[b]int[/b] a,b,c;
printf("Chuong trinh tinh tong hai so\n");
printf("Ban hay nhap vao so thu nhat :");
scanf("%d",&a);
printf("Ban hay nhap vao so thu hai :");
scanf("%d",&b);
c=a/b;
printf("\nKet Qua của phép chia nguyên: %d-%d=%d",a,b,c);
return 0;
}
Phép toán này có kết quả như ta chia một số thực bình thường kết quả sẽ là một số thực như 5/2=2.5.
- Code:
[b]#include[/b]
[b]#include[/b]
int main()
{
[b]float[/b] a,b,c;
printf("Chuong trinh tinh tong hai so\n");
printf("Ban hay nhap vao so thu nhat :");
scanf("%f",&a);
printf("Ban hay nhap vao so thu hai :");
scanf("%f",&b);
c=a/b;
printf("\nKet Qua của phep chia so thuc: %f / %f=%f",a,b,c);
return 0;
}
Như tôi đã nói như trên nếu n=a*b+c. ta có n/a=b và n/b=a là phép toán chia nguyên còn n%a=c hay n%b=c là phép toán lấy phần dư của phép chia nguyên. ví dụ ta có 5/2 được 2 dư 1 thì 5%2 sẽ được 1.
- Code:
#include
#include
int main()
{
[b]int[/b] a,b,c;
printf("Chuong trinh tinh tong hai so\n");
printf("Ban hay nhap vao so thu nhat :");
scanf("%d",&a);
printf("Ban hay nhap vao so thu hai :");
scanf("%d",&b);
c=a%b;
printf("\nKet Qua của phép chia nguyên: %d %% %d=%d",a,b,c);
return 0;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:35 pm; sửa lần 1.
Re: Căn bản C/C++
Các phép toán luận lý
Các phép toán luận lý có hai kết quả trả về là đúng hay sai, giá trị đúng là 1, giá trị sai là 0.
Phép toán so sánh bằng ==
Phép so sánh hai biểu thức A và B ký hiệu A==B là một mệnh đề. Mệnh đề này có giá trị là đúng(bằng 1) nếu biểu thức A bằng biểu thức B, ngược lại mệnh đề này sẽ có giá trị false (bằng 0).
Các phép toán luận lý có hai kết quả trả về là đúng hay sai, giá trị đúng là 1, giá trị sai là 0.
Phép toán so sánh bằng ==
Phép so sánh hai biểu thức A và B ký hiệu A==B là một mệnh đề. Mệnh đề này có giá trị là đúng(bằng 1) nếu biểu thức A bằng biểu thức B, ngược lại mệnh đề này sẽ có giá trị false (bằng 0).
- Code:
[b]int[/b] a,b;
a=1;
b=2;
b==a;//có giá trị là sai (0)
a==1;//có giá trị là đúng (1)
2==b;//có giá trị là đúng.
2==2;//có giá trị là đúng.
- Code:
[b]int[/b] a;
a=(1==2);//Mệnh đề 1==2 là một mệnh đề sai,a sẽ được gán kết quả là a=0.
a=(a==0);//mệnh đề a==0 là một mệnh đề đúng do đó kết quả a=1.
- Code:
[b]#include[/b]
[b]#include[/b]
[b]int[/b] main()
{
[b]int[/b] a,b,c;
printf("Chuong trinh tinh tong hai so\n");
printf("Ban hay nhap vao so thu nhat :");
scanf("%d",&a);
printf("Ban hay nhap vao so thu hai :");
scanf("%d",&b);
c=(b==a);
printf("\nKet Qua cua phep so sanh: (%d == %d)=%d",a,b,c);
[b]return[/b] 0;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:36 pm; sửa lần 1.
Re: Căn bản C/C++
Phép so sánh không bằng !=
Phép so sánh A!=B là một mệnh đề, mệnh đề này đúng(bằng 1) khi A khác B (hay A không bằng B) và có giá trị sai (bằng 0) khi A==B.
Phép so sánh A!=B là một mệnh đề, mệnh đề này đúng(bằng 1) khi A khác B (hay A không bằng B) và có giá trị sai (bằng 0) khi A==B.
- Code:
[b]int[/b] a,b;
a=1;
b=2;
1!=2; //Mệnh đề 1 khác 2 có giá trị đúng (1).
a!=b;//Mệnh đề a khác b có giá trị đúng.
2!=b;//Mệnh đề 2 khác b có giá trị sai (0).
- Code:
[b]int[/b]a;
a=(1!=2);//1 khác 2 là một mệnh đề đúng do đó biến a sẽ có giá trị 1.
a=(1!=a);//1 khác a (a=1) là một mệnh đề sai do đó biến a sẽ có giá trị là 0.
- Code:
[b]#include[/b]
[b]#include[/b]
[b]int[/b] main()
{
[b]int[/b] a,b,c;
printf("Chuong trinh tinh tong hai so\n");
printf("Ban hay nhap vao so thu nhat :");
scanf("%d",&a);
printf("Ban hay nhap vao so thu hai :");
scanf("%d",&b);
c=(b!=a);
printf("\nKet Qua cua phep so sanh: (%d != %d)=%d",a,b,c);
[b]return[/b] 0;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:37 pm; sửa lần 1.
Re: Căn bản C/C++
Phép toán so sánh lớn hơn >, lớn hơn bằng >=, nhỏ hơn < nhỏ hơn bằng<=
Cho A B là các mệnh đề mệnh phép toán A or B (A||B) có kết quả là một mệnh đề, và mệnh đề này chỉ sai khi và chỉ khi A và B cùng là hai mệnh đề sai.
Ta có bảng chân trị sau:
- Code:
1>2; //Mệnh đề(MĐ) có giá trị Sai.
1>=2; //MĐ có giá trị Sai.
1<2; //MĐ có giá trị đúng.
1<=2 //Mệnh đề có giá trị đúng.
Cho A B là các mệnh đề mệnh phép toán A or B (A||B) có kết quả là một mệnh đề, và mệnh đề này chỉ sai khi và chỉ khi A và B cùng là hai mệnh đề sai.
Ta có bảng chân trị sau:
- Code:
A \ B 0 1
0 0 1
1 1 1
- Code:
(1<2)||(1==2); //Mệnh đề kết quả có giá trị sai do 1<2 và 1==2 là hai mệnh đề sai.
(1==1)||(1==2);// Mệnh đề kết quả là một mệnh đề đúng do 1==1 là MĐ đúng và 1==2 là một mệnh đề sai.
Được sửa bởi ngày Tue Nov 13, 2007 2:38 pm; sửa lần 2.
Re: Căn bản C/C++
Phép toán and &&
Hai mệnh đề A và B, phép toán and hai mệnh đề A và B (A&&B) là một mệnh đề,mệnh đề này có giá trị là đúng khi và chỉ khi A và B là hai mệnh đề đúng.
bảng chân trị
Hai mệnh đề A và B, phép toán and hai mệnh đề A và B (A&&B) là một mệnh đề,mệnh đề này có giá trị là đúng khi và chỉ khi A và B là hai mệnh đề đúng.
bảng chân trị
- Code:
A/B 0 1
0 0 0
1 0 1
- Code:
[b]int[/b] a;
a=(1==1)&&(0<1); //Hai mệnh đề 1==1 và (0<1) là hai mệnh đề đúng kết quả a=1;
a=(1>2)&&(1==1);// Do mệnh đề 1>2 là mệnh đề sai nên kết quả a=0;
Được sửa bởi ngày Tue Nov 13, 2007 2:39 pm; sửa lần 1.
Re: Căn bản C/C++
Cấu trúc tuần tự:
Gọi A B là hai đoạn mã trong C.
Ví dụ minh họa việc thực hiện tuần tự các câu lệnh trong C.
Gọi A B là hai đoạn mã trong C.
- Code:
A;
B;
Ví dụ minh họa việc thực hiện tuần tự các câu lệnh trong C.
- Code:
#include
int main(){
int i;
printf("Ban nhap vao mot so nguyen");
scanf("%d",&1);
printf("So nguyen cua ban vua nhap co gia tri la %d",i);
return 0;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:39 pm; sửa lần 1.
Re: Căn bản C/C++
Cấu trúc lệnh rẻ nhánh
Cấu trúc if , if else
Cấu trúc if có dạng như sau:
nếu bạn nhập vào a=2 là một số dương thì a<0 là một mệnh đề sai câu lệnh asb=-1*a sẽ không được thực hiện lúc này asb sẽ bằng a=2.
khi bạn nhập a=-2 lúc này mệnh đề a<0 là đúng câu lệnh abs=-1*a sẽ đựơc thực hịên và abs sẽ bằng 2.
Các điều lưu ý nếu mệnh đề A không phải là một mệnh đề mà là một giá trị nào đó ví dụ if(2) hay if(2-2) thì các câu lệnh trong if chỉ được thực hiện khi giá trị tính toán trong ngọăc khác không.
do đó ở đây các bạn sẽ gặp một lỗi rất phiền tóai là mệnh đề A là một câu so sánh mà bạn lại viết sai như sau:
Thay vì bạn viết a==b bạn lại viết a=b bạn sẽ gặp rắc rối như sau:
Cấu trúc if , if else
Cấu trúc if có dạng như sau:
- Code:
[b]if[/b](A)
{
S1;
}
- Code:
[b]#include[/b]
[b]int[/b] main(){
int a,abs;
printf("Ban hay nhap vao mot so");
scanf("%d",&a);
asb=a;
if(a<0)
{
abs=-1*a;
}
printf("|%d|=%d",a,asb);
return 0;
}
nếu bạn nhập vào a=2 là một số dương thì a<0 là một mệnh đề sai câu lệnh asb=-1*a sẽ không được thực hiện lúc này asb sẽ bằng a=2.
khi bạn nhập a=-2 lúc này mệnh đề a<0 là đúng câu lệnh abs=-1*a sẽ đựơc thực hịên và abs sẽ bằng 2.
Các điều lưu ý nếu mệnh đề A không phải là một mệnh đề mà là một giá trị nào đó ví dụ if(2) hay if(2-2) thì các câu lệnh trong if chỉ được thực hiện khi giá trị tính toán trong ngọăc khác không.
do đó ở đây các bạn sẽ gặp một lỗi rất phiền tóai là mệnh đề A là một câu so sánh mà bạn lại viết sai như sau:
Thay vì bạn viết a==b bạn lại viết a=b bạn sẽ gặp rắc rối như sau:
- Code:
[b]int[/b]a,b;
a=1;
b=2;
if(a=b)
{
printf("a va b bang nhau vi:%d=%d",a,b);
}
Được sửa bởi ngày Tue Nov 13, 2007 2:41 pm; sửa lần 1.
Re: Căn bản C/C++
Cấu trúc if else
Cú pháp của cấu trúc này như sau:
Nếu mệnh đề A là một mềnh đề đúng hay giá trị của A là khác 0(Nếu A không phải là mệnh đề) thì nhóm lệnh S1 được thực hiện ngược lại thì lệnh S2 sẽ được thực hiện.
Chương trình Giải Phương trình dạng Ax+B=0;
Cú pháp của cấu trúc này như sau:
- Code:
[b]if[/b](A)
{
S1;
}
[b]else[/b]
{
S2;
}
Nếu mệnh đề A là một mềnh đề đúng hay giá trị của A là khác 0(Nếu A không phải là mệnh đề) thì nhóm lệnh S1 được thực hiện ngược lại thì lệnh S2 sẽ được thực hiện.
Chương trình Giải Phương trình dạng Ax+B=0;
- Code:
[b]#include[/b]
[b]int[/b] main()
{
[b]float[/b] A,B;
printf("Ban nhap vao theo yeu cau sau:\n");
printf("Nhap vao he so A=");
scanf("%f",&A);
printf("Nhap vao he so B=");
scanf("%f",&B);
if(A==0) //Nếu bạn nhập A bằng 0 thì khối lệnh trong if được thực hiện.
{
if(B==0)// trường hợp này A==0 và B==0 pt có vô số nghiệm
{
printf("Phương trình trên có vô số nghiệm");
}
else //trường hợp này A==0 và B!=0 pt sẽ vô nghiệm
{
printf("Phuong trinh trên vô nghiệm");
}
}
else //trường hợp này A!=0 nghịêm pt là -B/A
{
printf("phuong trinh tren co nghiem x=%f",-B/A);
}
[b]return[/b] 0;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:42 pm; sửa lần 1.
Re: Căn bản C/C++
Cấu trúc switch :
Dạng :
Nếu không thì mặc định sẽ thực hiện lệnh (n+1).
Dạng :
- Code:
switch(biến/biểu thức) {
case : Lệnh 1;
break;
case : Lệnh 2;
break;
......
case : lệnh n;
break;
[default] :lệnh(n+1);
}
Nếu không thì mặc định sẽ thực hiện lệnh (n+1).
Được sửa bởi ngày Tue Nov 13, 2007 2:43 pm; sửa lần 1.
Re: Căn bản C/C++
Cấu trúc switch
Câu lệnh break đảm bảo rằng nếu nhóm lệnh Sk đã thực hiện xong thì chương trình sẽ thóat ra khỏi cấu trúc switch.
Nếu không có lệnh break này thì nếu có default câu lệnh trong default sẽ thực hiện.(điều này chắc chương trình của bạn sẽ không muốn)
Bạn nên tuân thủ đúng quy cách sau mỗi trường hợp phải có lệnh break để thóat khỏi switch.
- Code:
[b]switch[/b](A)
{
case Giá_Trị_1: S1;break;
case Giá_Trị_2: S2;break;
..................
case Giá_trị_n: Sn;break;
[default: S;]
}
Câu lệnh break đảm bảo rằng nếu nhóm lệnh Sk đã thực hiện xong thì chương trình sẽ thóat ra khỏi cấu trúc switch.
Nếu không có lệnh break này thì nếu có default câu lệnh trong default sẽ thực hiện.(điều này chắc chương trình của bạn sẽ không muốn)
Bạn nên tuân thủ đúng quy cách sau mỗi trường hợp phải có lệnh break để thóat khỏi switch.
Được sửa bởi ngày Tue Nov 13, 2007 2:43 pm; sửa lần 1.
Re: Căn bản C/C++
Vòng lặp.
Cấu trúc lặp với while
Trong khi Mệnh đề A còn đúng hay giá trị A khác 0(nếu A không phải mệnh đề) thì câu lệnh S sẽ được thực hiện.
Câu lệnh S sẽ được thực hiện lặp đi lặp lại đến khi A sai hay khác 0.
Đọan mã tính giai thừa của một số.
Cấu trúc lặp với while
- Code:
while(A)
{
S;
}
Trong khi Mệnh đề A còn đúng hay giá trị A khác 0(nếu A không phải mệnh đề) thì câu lệnh S sẽ được thực hiện.
Câu lệnh S sẽ được thực hiện lặp đi lặp lại đến khi A sai hay khác 0.
Đọan mã tính giai thừa của một số.
- Code:
[b]#include[/b]
[b]int[/b] main()
{
long i=1,kq=1,n;
printf("Ban muon tinh giai thua cua so nao ? n=");
scanf("%d",&n);
while(i<=n)
{
kq=kq*i;
i++;
}
printf("ket qua %d!=%d",n,kq);
[b]return[/b] 0;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:44 pm; sửa lần 1.
Re: Căn bản C/C++
do ............while()
- Code:
do
{
S;
}while(A)
cấu trúc này tương tự như cấu trúc sau;
Code:
S;
while(A)
{
S;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:45 pm; sửa lần 1.
Re: Căn bản C/C++
Cấu trúc lặp với for()
Vòng lặp for có dạnh như sau:
Đầu tiên X được thực hịên sau đó nếu Y là một mệnh đề đúng hay có giá trị khác 0 thì S sẽ được thực hiện sau đó Z sẽ được thực hiện. Và S sẽ được thực hịên đến khi Y sai hay Y có giá trị 0.
Nếu như vậy tại sao tôi lại nói là khó giải thích vì for có thể có những trường hợp sau:
Ví dụ
Ví dụ trương trình tính giai thừa của một số nguyên:
Vòng lặp for có dạnh như sau:
- Code:
for(X,Y,Z)
{
S;
}
Vòng lặp này rất khó giải thích tuy nhiên thông thường chúng được thực hiện với ý nghĩa như sau:
Code:
[b]int[/b] i;
for(i=1;i<10;i=i+1)
{
S;
}
Đầu tiên X được thực hịên sau đó nếu Y là một mệnh đề đúng hay có giá trị khác 0 thì S sẽ được thực hiện sau đó Z sẽ được thực hiện. Và S sẽ được thực hịên đến khi Y sai hay Y có giá trị 0.
Nếu như vậy tại sao tôi lại nói là khó giải thích vì for có thể có những trường hợp sau:
- Code:
for(X;Y;)
for(X;;)
for(;;)
Ví dụ
- Code:
#include
[b]int[/b] main()
{
for(;;)
{
break;
}
[b]return[/b] 0;
}
Ví dụ trương trình tính giai thừa của một số nguyên:
- Code:
[b]#include[/b]
[b]int[/b] main()
{
[b]unsigned int[/b] n, i;
[b]unsigned long[/b] kq=1;
printf("Ban nhap vao so nguyen duong");
scanf("%d",&n);
if (n<0 )
return 1;
[b]for(i=1;i<=n;i++)
{
kq=kq*i;
}[/b]
printf("ket qua %d!= %d",n,kq);
[b]return[/b] 0;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:46 pm; sửa lần 1.
Re: Căn bản C/C++
Câu lệnh break
Các bạn đã thấy tác dụng của break trong phần cấu trúc switch, ngòai ra break còn có tác dụng là thóat khỏi vòng lặp ngay lập tức.
ví dụ đọan code sau cho phép bạn nhập một dãy các ký tự kết thúc là phím enter.
Các bạn đã thấy tác dụng của break trong phần cấu trúc switch, ngòai ra break còn có tác dụng là thóat khỏi vòng lặp ngay lập tức.
ví dụ đọan code sau cho phép bạn nhập một dãy các ký tự kết thúc là phím enter.
- Code:
[b]char[/b] ch;
while(1)
{
ch=getchar();
if(ch==13) break;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:46 pm; sửa lần 1.
Re: Căn bản C/C++
Biến Trỏ
Định nghĩa: Biến trỏ là một biến dùng để chứa địa chỉ của biến khác.
Để khai báo một biến trỏ ta có cú pháp sau:
Do biến trỏ chỉ chứa địa chỉ của biến khác nên độ lớn của nó thường là 2 byte bất kể nó chứa địa chỉ của biến có kiểu dữ liệu nào.
& phép toán này đặt trước một biến thường dùng để lấy địa chỉ của biến.
* phép toán này được đặt trước biến trỏ dùng để lấy nội dung của biến mà biến trỏ trỏ tới.
ví dụ:
Ngòai ra ta còn có thể thông qua tóan tử * để sửa đổi nội dung của biến mà con trỏ đang trỏ tới.
Đến đây các bạn vẫn chưa thấy hết tinh hoa của con trỏ phần tiếp theo tôi sẽ mở rộng vấn đề con trỏ thêm. Có rất nhiều người nói nếu bạn là một lập trình viên C mà không nắm hết con trỏ tức là bạn chưa biết gì về C. Hẹn gặp lại.
Định nghĩa: Biến trỏ là một biến dùng để chứa địa chỉ của biến khác.
Để khai báo một biến trỏ ta có cú pháp sau:
- Code:
[b]KDL[/b] *TênBiến;
- Code:
int *x;
Do biến trỏ chỉ chứa địa chỉ của biến khác nên độ lớn của nó thường là 2 byte bất kể nó chứa địa chỉ của biến có kiểu dữ liệu nào.
- Code:
[b]int[/b] *a;
[b]double[/b] *b;
if(sizeof(a)==sizeof(b))
{
printf("hai bien nay co kich thuong bang nhau");
}
- Code:
TênBiếnTrỏ=&TênBiếnThường;
- Code:
[b]int[/b] *ptr;
[b]int[/b] a=1;
ptr=&a;
- Code:
[b]int[/b] *ptr;
[b]int[/b] a=1,b=2;
ptr=&a;
//..............
ptr=&b;
- Code:
[b]int[/b] a;
[b]int[/b] *ptr=&a;
& phép toán này đặt trước một biến thường dùng để lấy địa chỉ của biến.
* phép toán này được đặt trước biến trỏ dùng để lấy nội dung của biến mà biến trỏ trỏ tới.
ví dụ:
- Code:
int a=2,*b=&a;
printf("Noi dung cua bien a la :%d",*b);
Ngòai ra ta còn có thể thông qua tóan tử * để sửa đổi nội dung của biến mà con trỏ đang trỏ tới.
- Code:
[b]int[/b] a=2,*ptr=&a;
*ptr=3;
printf("Noi dung cua bi thay doi bang:%d",a);
Đến đây các bạn vẫn chưa thấy hết tinh hoa của con trỏ phần tiếp theo tôi sẽ mở rộng vấn đề con trỏ thêm. Có rất nhiều người nói nếu bạn là một lập trình viên C mà không nắm hết con trỏ tức là bạn chưa biết gì về C. Hẹn gặp lại.
Được sửa bởi ngày Tue Nov 13, 2007 2:48 pm; sửa lần 1.
Re: Căn bản C/C++
Mối tương quan giữa biến trỏ và mảng
Khi ta khai báo một mảng thì tên mảng chính là tên biến trỏ và biến trỏ này luôn trỏ đến vị trí ô nhớ đầu tiên của mảng.
Và biến trỏ này là biến trỏ hằng tức nó luôn trỏ tới vị trí đầu tiên của mảng, ta không thể thay đổi cho biến trỏ này trỏ đến biến khác.
Và từ đây ptr có thể thao tác tương tự như là một mảng để lấy giá trị của phần tử thứ i trong a thông qua ptr ta chỉ vịêc viết ptr[i].
Khi ta khai báo một mảng thì tên mảng chính là tên biến trỏ và biến trỏ này luôn trỏ đến vị trí ô nhớ đầu tiên của mảng.
Và biến trỏ này là biến trỏ hằng tức nó luôn trỏ tới vị trí đầu tiên của mảng, ta không thể thay đổi cho biến trỏ này trỏ đến biến khác.
- Code:
[b]int[/b] a[5]={1,2,3,4,5};
printf("giá trị a[0] là: %d",*a);
- Code:
[b]int[/b]*ptr;
ptr=a;
printf("gia tri a[0] là:%d",*ptr);
Và từ đây ptr có thể thao tác tương tự như là một mảng để lấy giá trị của phần tử thứ i trong a thông qua ptr ta chỉ vịêc viết ptr[i].
- Code:
int a[5]={1,2,3,4,5}
int *ptr=a;
for(int i=0;i<5;i++)
printf("%d",ptr[i]);
Được sửa bởi ngày Tue Nov 13, 2007 2:48 pm; sửa lần 1.
Re: Căn bản C/C++
Cộng biến trỏ với một số nguyên
Khi ta cộng biến trỏ tới một số nguyên tức ta đã thay đổi cho biến trỏ tham chiếu tới một biến khác. Còn biến trỏ này trỏ tới đâu ta có công thức tính như sau:
Đầu tiên ta khai báo một biến trỏ sau đó cho nó trỏ tới một biến.
Vùng nhớ này nếu ta không biết nó là gì thì không nên thay đổi giá trị của nó rất nguy hiển cho chương trình.
Ví dụ:
Khi ta cộng biến trỏ tới một số nguyên tức ta đã thay đổi cho biến trỏ tham chiếu tới một biến khác. Còn biến trỏ này trỏ tới đâu ta có công thức tính như sau:
Đầu tiên ta khai báo một biến trỏ sau đó cho nó trỏ tới một biến.
- Code:
KDL *ptr, x; //KDL :kiểu dữ liệu
ptr=&x;
- Code:
ptr=ptr+i
Vùng nhớ này nếu ta không biết nó là gì thì không nên thay đổi giá trị của nó rất nguy hiển cho chương trình.
Ví dụ:
- Code:
#include
int main()
{
int *ptr,a;
ptr=&a;
printf("ptr hien tai dang chi toi dia chi la %d",ptr);
printf("\nDo lon cua kieu du lieu la %d byte",sizeof(a));
ptr=ptr + 2;
printf("\nSau khi cong 2 vao thi ptr chi toi dia chi la %d",ptr);
return 0;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:49 pm; sửa lần 1.
Re: Căn bản C/C++
phép toán cộng biến trỏ (tt)
Như tôi đã nói ở trên khi ta làm thay đổi giá trị của một biến trỏ đến bằng phép toán cộng tức ta đã cho biến trỏ tham chiếu tới một vùng nhớ mới ta sẽ gặp nguy hiểm nếu không xác định được biến trỏ đang trỏ tới đâu vậy câu hỏi đặt ra là phép toán cộng cho biến trỏ sẽ giúp được gì cho chúng ta?
Thông thường phép toán này làm việc với một biến trỏ, trỏ đến mảng sẽ có hiệu lực rất hay.
Ví dụ khi ta khai báo một mảng a 7 phần tử và một biến trỏ , chỉ đến ô nhớ đầu của a như sau:
xét ví dụ sau thông qua biến trỏ ptr để khởi gán các giá trị cho mảng a;
Như tôi đã nói ở trên khi ta làm thay đổi giá trị của một biến trỏ đến bằng phép toán cộng tức ta đã cho biến trỏ tham chiếu tới một vùng nhớ mới ta sẽ gặp nguy hiểm nếu không xác định được biến trỏ đang trỏ tới đâu vậy câu hỏi đặt ra là phép toán cộng cho biến trỏ sẽ giúp được gì cho chúng ta?
Thông thường phép toán này làm việc với một biến trỏ, trỏ đến mảng sẽ có hiệu lực rất hay.
Ví dụ khi ta khai báo một mảng a 7 phần tử và một biến trỏ , chỉ đến ô nhớ đầu của a như sau:
- Code:
[b]int[/b] a[7], *ptr=a;
for(int i=0;i<7;i++)
a[i]=i;
- Code:
ptr=ptr+1;
xét ví dụ sau thông qua biến trỏ ptr để khởi gán các giá trị cho mảng a;
- Code:
[b]#include[/b]
[b]int[/b] main()
{
[b]int[/b] a[7], *ptr=a,i;
printf("mang a ban dau co gia tri la:");
for(i=0;i<7;i++)
{
printf("%d ",a[i]);
}
for(i=0;i<7;i++)
{
*ptr=i;
ptr++;
}
printf("\nNoi dung cua mang a sau khi khoi tao la");
for(i=0;i<7;i++)
{
printf("%d ",a[i]);
}
[b]return[/b] 0;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:50 pm; sửa lần 1.
Re: Căn bản C/C++
Điều chú ý giữa biến trỏ và mảng
khi ta khai báo một mảng
Chứng minh :
giả sử a[i]=i[a] (1)
do trình biên dịch hiểu a[k]=*(a+k)
do đó (1) <==> *(a+i)=*(i+a) Đẳng thức đúng./
Do đó ta có ví dụ chương trình sau:
khi ta khai báo một mảng
- Code:
int a[9];
Chứng minh :
giả sử a[i]=i[a] (1)
do trình biên dịch hiểu a[k]=*(a+k)
do đó (1) <==> *(a+i)=*(i+a) Đẳng thức đúng./
Do đó ta có ví dụ chương trình sau:
- Code:
[b]#include[/b]
int main()
{
[b]int[/b] a[10],i;
for(i=0;i<10;i++)
i[a]=i;
printf("Noi dung cua mang a la :");
for(i=0;i<10;i++)
printf(" %d", a[i]);
[b]return[/b] 0;
}
Được sửa bởi ngày Tue Nov 13, 2007 2:51 pm; sửa lần 1.
Re: Căn bản C/C++
hay wa hay wa !
yangsiro- ○• chit chit spam chit chit •○
- Tổng số bài gửi : 39
Age : 36
Location : Sao Chổi
Registration date : 06/11/2007
Trang 1 trong tổng số 2 trang • 1, 2
Trang 1 trong tổng số 2 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|