Bài 1 : Những khái niệm cơ bản về ngôn ngữ C
- Phần mềm là một tập hợp các chương tŕnh
- Một chương tŕnh là một tập hợp các chỉ thị lệnh
- Những đoạn mă lệnh là cơ sở cho bất kỳ một chương tŕnh C nào
- Ngôn ngữ C có 32 từ khóa
1.Định nghĩa biến (variable):
Biến là đại lượng có giá trị luôn thay đổi trong chương tŕnh, Là một vùng bộ nhớ
1.2 Cách khai báo biến:
kiểu tên_biến;
+ Quy tắc đặt tên biến :
- không trùng với từ khóa
- không viết chữ số ở phía trước tên biến
- không có khoảng trắng
+ Kiểu gồm:
- int , long : kiểu số nguyên
- float,double : kiểu số thực
- char : kiểu kư tự
VD : int a,b;
2. Cách khai báo hằng (const) :
cú pháp : const a=12;
3. Các hàm toán học trong C:
- sin(x) : Hàm sin của x
- cos(x) : Hàm cos của x
- tan(x) : Hàm tang của x
- log(x):
- abs(x): trị tuyệt đối của x
- round(x): làm tṛn số của x
- sqrt(x) : Căn bậc hai của x
- pow(x,n) : hàm x mũ n
4. Các thư viện trong C:
#include<stdio.h> : thư viện chính khi dùng toán tử vào ra là : printf và scanf
#include<conio.h> : Khi dùng lệnh xuốn dong getch()
#include<string.h> : Khi dùng xâu kư tự
#include<algorithm.h> : Khi toán tử
#include<math.h> : Khi dùng toán tử toán học như: sin(x)…..
5. Lệnh chú thích trong chương tŕnh :
// Chú thích cho 1 ḍng
/* nhiều ḍng */
6. Nhập xuất trong C:
a, Xuất dữ liệu:
cú pháp : printf(“xâu kư tự”);
b, Nhập dữ liệu :
scanf(“%kiểu”&biến);
kiểu gồm:
+ %d : nhập số nguyên kiểu int
+ %u : nhập
số nguyên kiểu long
+ %f : nhập số thực kiểu float
+ %lf : nhập
số thực kiểu double
+ %c : nhập kư
tự kiểu char
+ %s : nhập
xâu kư tự kiểu string
+ ‘\t’ : Tab
+ \b : Khoảng trống
7. Cấu trúc chương tŕnh :
//khai báo thư viện
// khai báo hàm
void main()
{
// khai báo biến
// nhập xuất dữ liệu
// Thuật toán
// Đưa ra kết quả
}
VD: Nhập từ bàn phím 2 số nguyên a,b . Tính tổng ,hiệu
#include<stdio.h>
#include<conio.h>
void main()
{
int a,b,t;
printf(“nhập hai so a,b:”);
scanf(“%d%d”,&a,&b);
t=a+b;
printf(“tong=%d”t);
}
8. phần bài
tập:
1,Tính hàm sau : f(x)=sin(x)+cos(x)
2, Giá vàng và ngoại tệ trên thị trường 1 dollar đổi được 5 yên nhật. Hỏi có 40000 vnd th́ đổi được bao nhiêu yên nhật? Biết 1 dollar= 16000 vnd.
Bài
2: Biểu thức và Cấu trúc điều kiện:
1.Biểu thức:
- && : ĐK and
- % : ĐK chia hết
- || : ĐK or
- == : ĐK bằng nhau
- != : ĐK phủ định
2.Cách
định nghĩa hằng bằng define:
cú pháp : #define Tên_hằng giá trị
VD : #define end
}
#define pi 3.14
3. Ép kiểu :
cú pháp: kiểu(biến)
VD : float(b);
4.Biểu thức điều kiện :
cú pháp: biểu thức ĐK? Bt1:bt2
VD: Viết chương tŕnh t́m số lớn nhất của hai số a,b
Void main()
{
int a,b,max;
printf(“nhap hai so:”);
scanf(“%d%d”,&a,&b);
max=a>b?a:b;
printf(“Max=%”,max);
}
5.Cấu trúc điều kiện:
a, Câu lệnh đơn:
if(đk)
câu lệnh;
b, Câu lệnh kép :
if(đk)
{
câu lệnh
1;
câu lệnh 2;
}
c,Cấu trúc lồng IF và ELSE IF :
if(đk1)
{
lệnh 1;
}
else if(đk2)
{
lệnh2;
}
else
Câu lệnh;
VD: giải
phương tŕnh bậc II:
Void main()
{
float a,b,x1,x2,d;
printf(“nhap a,b,c:”);
scanf(“%f%f%f,”&a,&b,&c);
d=b*b-4*a*c;
if(d>0)
{
x1=(-b-sqrt(d))/2*a;
x2=(-b-sqrt(d))/2*a;
printf(“x1=%”,x1);
printf(“x2=%”,x2);
}
else if(d==0)
{
printf(“x=%”,-b/2*a);
}
else
printf(“vn”);
}
6.Bài tập :
1, T́m giá trị lớn nhất của 3 số a,b,c
2, Nhập vào từ bàn phím một số nguyên dương. Kiểm tra xem số đó có chia hết cho 10 không?
1.Định nghĩa:
Lệnh rẽ nhánh sử dụng khi mà chúng ta muốn chia chương tŕnh thành nhiều nhánh công việc
Cú pháp:
Switch(biểu thức)
{
case 1:
công viêc1;
break;
case 2:
công viêc 2;
break;
case n:
công viêc n;
break;
default:
công viêc mặc định;
break;
}
Void main()
{
int a;
printf(“nhap thu:”);
scanf(“%d”,&a);
switch(a)
{
case 1:
printf(“Toan,ly, hoa”);
break;
case 2:
printf(“Anh,van, hoa”);
break;
default :
printf(“nhap lai”);
}
}
2.Câu lệnh goto và nhăn:
Nhăn có dạng như tên biến và có dấu (:) viết sau nhăn có thể gán cho câu lệnh bất kỳ theo cú pháp:
Tên_nhăn :
Câu lệnh;
Goto Tên_nhăn;
3. Bài tập:
Viết chương tŕnh nhập tháng và năm hiển thị ra màn h́nh ngày của tháng và năm đó. Biết : Các tháng 4,6,9,11 có 30 ngay. Các tháng 1,3,5,7,8,10,12 có 31 ngày. Tháng 2 năm nhuận la năm chia hết cho 4 có 29 ngay năm không nhuận có 28 ngày.
1.Định nghĩa:
Là cấu trúc lặp với số lần lặp xác định. sử dụng for khi một câu lệnh đơn giản mà ta phải thực hiện nhiều lần.
2.Cú pháp:
for(bt1,bt2,bt3)
câu lệnh lặp;
Trong đó:
- bt1: Là biểu thức gán giá trị ban đầu cho biến điều khiển
- bt2 : Là biểu thức điều kiện
- bt3: Là biểu thức gán để thay đổi giá trị cho biểu thức đk
A, Tính tổng của dăy số trên
B, Tính tổng các số chẵn , lẻ
C, Tính giai thừa
Void main()
{
int i,s=0,tc=0,tl=0,gt=1;
for(i=1;i<=10;i++)
{
s=s+i;
if(i%2==0)
tc=tc+i;
else
tl=tl+i;
}
printf(“s=%d”,s);
printf(“TC=%d”,tc);
printf(“TL=%d”,tl);
}
3. bài tập:
1, Viết chương tŕnh in ra tam giác sau:
1
12
123
2, Viết chương tŕnh in ra tam giác Pascal sau:
1
1 2 1
1 2 3 2 1
1.Cấu trúc lặp while : là cấu trúc lặp với số lần lặp không xác định . Có nghĩa là Nó phải thoả măn một điều kiện nào đó th́ mới kết thúc chương tŕnh.
Cú pháp:
While (đk)
{
câu lệnh;
}
VD1: t́m USCLN và BSCNN của hai số a,b
Void main()
{
int a,b,bs;
printf(“nhap hai so:”);
scanf(“%d%d”,&a,&b);
bs=a*b;
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
}
printf(“USCNN la:%d”,a);
printf(“BSCLN la:%d”,bs/a);
}
VD2 : Viết chương tŕnh nhập dăy số n âm và dương. In ra màn h́nh tồng các số âm, tổng các số dương
Đếm xem có bao nhiêu số âm, bao nhiêu số dương. Điều kiện dừng khi n là 0.
Void main()
{
int a=0,d=0,n,ta=0,td=0;
printf(“nhap hai so:”);
scanf(“%d%d”,&a,&b);
bs=a*b;
while(n!=0)
{
if(n>0)
{
d++;
td=td+n;
}
else
{
a=a+n;
ta=ta+n;
}
}
printf(“co:%d so duong voi tong duong la : %d”,d,td);
printf(“co:%d so am voi tong am la : %d”,a,ta);
}
2. Cấu trúc lặp do … while :
cú pháp :
do
{
câu lệnh;
}
while (đk);
Hàm là một chương tŕnh được Modul hóa nhỏ thành các chương tŕnh nhỏ.
Sử dụng hàm khi một chương tŕnh đơn giản được lặp đi lặp lại nhiều lần. Chương tŕnh con nay được
Gọi ra từ chương tŕnh chính.
Là biến được khai báo ở đầu chương tŕnh chính. Nó có tác dụng trong toàn bộ chương tŕnh.
Là biến được khai báo ở đầu chương tŕnh con. Nó có tác dụng trong toàn bộ chương tŕnh con này và chương tŕnh con khác nằm trong nó..
Hàm được chia thành 3 phần như sau :
a) khai báo hàm : kiểu tên_hàm (tham biến);
b) gọi hàm : tên_hàm(tham số thực sự);
c) Định nghĩa hàm : kiểu tên_biến (biến số)
VD: tính tổng, hiệu bàng hai hàm
Void tong(int,int);
Void hieu(int,int);
Void main()
{
int a,b;
printf(“nhap hai so:”);
scanf(“%d%d”,&a,&b);
tong(a,b);
hieu(a,b);
}
void tong(int a,int b)
{
printf(“tong=%d”,a+b);
}
void hieu(int a,int b)
{
printf(“Hieu=%d”,a-b);
}
Con trỏ là mmột biến dùng để chứa địa chỉ. MỗI 1 loạI địa chỉ sẽ có một loại con trỏ
Tương ứng. VD con trỏ kiểu int sẽ lưu giữ địa chỉ của biến nguyên,Con trỏ kiểu float
lưu giữ địa chỉ của kiểu số thực.
Cú pháp : kiểu tên_biến=giá trị;
biến_trỏ=&tên_biến;
VD : int a=10;
int *b=&a;
VD: tính tổng, hiệu bàng hai hàm
Void tong(int *a,int *b);
Void hieu(int *a,int *b);
Void main()
{
int a,b;
printf(“nhap hai so:”);
scanf(“%d%d”,a,b);
tong(&a, &b);
hieu(&a, &b);
}
void tong(int a,int b)
{
printf(“tong=%d”,a+b);
}
void hieu(int a,int b)
{
printf(“Hieu=%d”,a-b);
}
VD2: Viết chương tŕnh con hoán chuyển vị trí giữa 2 số
Void hoan(int *a,int *b)
{
int tg;
tg=*a;
*a=*b;
*b=tg;
}
void main()
{
int a=10,b=6;
printf(“a=%d va b=%d”,a,b);
hoan(&a,&b);
printf(“a=%d va b=%d”,a,b);
}
VD: tính tổng, hiệu bàng hai hàm
int tong(int,int);
int hieu(int,int);
Void main()
{
int a,b,t,h;
printf(“nhap hai so:”);
scanf(“%d%d”,&a,&b);
t=tong(a,b);
h=hieu(a,b);
printf(“tong=%d”,t);
printf(“Hieu=%d”,h);
}
void tong(int a,int b)
{
return a+b;
}
void hieu(int a,int b)
{
return a-b;
}
1) Viết hai hàm không trả về để in ra hai chương tŕnh sau:
Hàm1 : Tính giai thừa
Hàm2 : Tính tổng của dăy số n.
2) Dùng hàm trả về để giảI pt bậc II
Bài 7 : Mảng
Mảng là 1 dăy các biến có cùng kiểu. Nó được sử dụng để lưu trữ dữ liệu với số lượng lớn
Mà không phảI khai báo nhiều biến khác nhau.
Mảng được chia làm 2 loại chính đó là mảng 1 chiều và mảng 2 chiều. mảng 1 chiều c̣n gọI
Là véc tơ , mảng 2 chiều gọi là ma trận
Là mảng dùng 1 chỉ số để khai báo các phần tử mảng . Khi đó chỉ số là 1 số ngẫu nhiên
A)Cách khai báo mảng 1 chiều:
Kiểu tên_mảng[chir số];
VD : int a[2];
|
0 |
1 |
Mảng a chạy từ 0 đến n-1
B) Cách khởi tạo mảng :
VD: int a[2]={10,20};
VD : Viết chương tŕnh nhập mảng a gồm n phần tử
- In mảng vừa nhập
- Tính tổng các phần tử mảng
- T́m tổng âm và tổng dương
- T́m max và min
Giải:
Void main()
{
int mang[4],i, n,max,min,tong=0,ta=0,td=0;
printf(“Nhap do dai mang:”);
scanf(“%d”,n);
for(i=0;i<n;i++)
{
printf(“Nhap phan tu mang:”);
scanf(“%d”,mang[i]);
tong=tong+mang[i];
if(mang[i]>0)
ta=ta+mang[i];
td=td+mang[i];
}
max=mang[0]; min=mang[0];
for(i=0;i<n;i++)
{
max=mang[i];
if(max<mang[i])
max= mang[i];
else
min= mang[i];
}
for(i=0;i<n;i++)
{
printf(“%d”,mang[i]);
}
printf(“tong am=%d”,ta);
printf(“tong duong=%d”,td);
printf(“min=%d”,min);
printf(“max=%d”,max);
}
Là mảng dùng 2 chỉ số để xác định các phần tử mảng
3.3) khai báo mảng hai chiều:
kiểu tên_biến[chỉ số1] [chỉ số2];
VD: int a[2][3]; // 2 hàng 3 cột
1) Xâu sử dụng để lưu trữ một chuỗi các kư tự
2) Cách khai báo xâu :
Char tên_biến[độ dài];
Vd : char a[10];
3) Các thao tác nhập xuất chuỗi đơn giản:
a) Nhập : gets(biến_xâu) hoặc scanf(“%s”,&biến);
b) Xuất : puts(biến_xâu) hoặc printf(“%s”,&biến);
4) Các hàm về chuỗi: để sử dụng các hàm trong chuỗi ta sử dụng thư viện: #include<string.h>
- strlen(s[]) : trả lại độ dài xâu
- strcpy(s1,s2): Sao chép nội dung s1 vào s2
- strcat(s1,s2) : nối s1 vào s2
- strlwr(s) : đổi chữ hoa sang thường
- struppr(s) : đổi chữ thường sang hoa