Tải bản đầy đủ (.pdf) (58 trang)

lập trình c nâng cao

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 (2.33 MB, 58 trang )



Website học trực tuyến – www.videobook.vn

BÀI 1: TỔ CHỨC MỘT CHƯƠNG TRÌNH DÙNG CÁC
HÀM

Nhập vào 3 số từ bàn phím để biết được sô lớn nhất
Hàm có thể xem là một đơn vị độc lập của chương trình. Các hàm trong C có vai
trò ngang nhau vì vậy không cho phép xây dựng một hàm bên trong các hàm khác
Hàm xây dựng như xau:
Dòng đầu tiên là dòng tiêu đề chứa các thông tin về: kiểu hàm, tên hàm, kiểu và tên
mỗi đối: ví dụ Float max3s (float a, float b, float c)
Thân hàm là nội dung chính của hàm băt đầu bằng dấu { và kết thúc bằng dấu }
trong thân hàm chứa các câu lệnh cần thiết để thực hiện một yêu cầu nào đó đã đề
ra cho hàm
/* to chuc chuong trinh thanh ham */
#include <stdio.h>
#include <conio.h>
Float max3s (float a, float b, float c); /* nguyen mau cua ham */
void main() /* bat dau ham main */(thân hàm là một đoạn chương trình)
{
float x,y,z;
int ch;
tt: printf("\n nhap vao 3 so:");
scanf("%f%f%f", &x,&y,&z);
printf("\nx= %0.2f\ny= %0.2f\nz= %0.2f\n max= %8.2f", x, y, z,max3s(x,y,z));
printf(" co tiep tuc khong ? -c/k");
ch = getch();
if (ch == 'c' || ch == 'c') goto tt;
} /* ket thuc ham main */


/* dong dau khai bao kieu ham, ten ham, kieu doi va ten doi */
Float max3s (float a, float b, float c)
{
float max; /* bien cuc bo dung trong than ham */
max = a>b?a:b;
return (max>c?max:c); /* gia tri ham tra ve */
getch();


Website học trực tuyến – www.videobook.vn

} /* ket thuc ham max3s */
Chương trình được chạy trên C-Free 4.0
Khi các hàm và các lệnh của chương trình đã hoàn tât đầy đủ và chính xác bạn
Click Tab Buid run (F5) chương trình chạy như sau





Website học trực tuyến – www.videobook.vn

Bài 2: Chuong trinh tinh max dung xay dung ham
dung toan tu for

#include <stdio.h>
#include <conio.h>
float a[]={3.5,0,23.3,0,4.7,-2,10,30,40};
void main()
{

float s=0,max=0;
int k=0,i;

for (i=0;i<9;++i)
{
if(a[i] <0)
break;
if(a[i] >0)
{
s+=a[i];
k++;
if (max < a[i])
max=a[i];
}


Website học trực tuyến – www.videobook.vn

}
printf("\nPhan tu am dau tien la phan tu thu %d\
co tri = %8.2f",i+1,a[i]);
printf("\nSo phan tu duong dau tien la = %d",k);
printf("\nTong cac phan tu duong dau tien la= %8.2f",s);
printf("\nMax cua phan tu duong dau tien la %8.2f",max);
getch();
} Chương trình được chạy trên C-Free 4.0
Khi các hàm và các lệnh của chương trình đã hoàn tât đầy đủ và chính xác bạn
Click Tab Buid run (F5) chương trình chạy như sau




Website học trực tuyến – www.videobook.vn

BÀI 3: SỬ DỤNG BIẾN CON TRỎ

Con trỏ là một biến dùng để chứa địa chỉ, vì có nhiều loại địa chỉ nên cũng có
nhiều kiểu con trỏ tương ứng, con trỏ kiểu INT dùng để chứa địa chỉ các biến kiểu
INT… một con trỏ thường khai báo trước khi sử dụng
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
main()
{
int x,*px;
px=&x; /* dan xep cho lptr tro toi lvar */
*px=567;

printf("-Vi tri cua bien x la : %p \n",&x);
printf("*Noi dung cua bien x la :%d \n",x);
printf("-Vi tri cua bien con tro px la :%p \n",px);
printf("*Noi dung cua bien con tro px la : %d \n",*px);
getch();
}
Khi các hàm và các lệnh của chương trình đã hoàn tât đầy đủ và chính xác
bạn Click Tab Buid run (F5) chương trình chạy như sau


Website học trực tuyến – www.videobook.vn





Website học trực tuyến – www.videobook.vn

BÀI 4 : ĐỊA CHỈ TÊN MẢNG CHỎ TỚI

/* dia chi ten mang tro toi */
Con trỏ dùng để lưu trữ địa chỉ mỗi kiểu địa chỉ cần có kiểu con trỏ tương ứng
Phép gán địa chỉ cho con trỏ chỉ diễn ra suôn sẻ khi kiểu địa chỉ phù hợp với kiểu
con trỏ
#include <stdio.h>
#include <conio.h>
void main()
{
int a[]={8,9,4,6,7,8,4,6,5,6};
int k;
for(k=0;k<10;k++)
printf("\n a[%d]=%d so sanh voi *(a+%d)=%d ",k,a[k],k,*(a+k));
printf("\n Dia chi ");
printf("\nDia chi ten mang tro toi %p ",a);
printf("\nDia chi byte dau tien %p ",&a[0]);
getch();
}
Khi các hàm và các lệnh của chương trình đã hoàn tất đầy đủ và chính xác bạn
Click Tab Buid run (F5) chương trình chạy như sau


Website học trực tuyến – www.videobook.vn





Website học trực tuyến – www.videobook.vn

BÀI 5: BÀI TẬP VỀ MẢNG GỘP 2 MẢNG THÀNH MỘT
MẢNG THEO CHIỀU TĂNG DẦN
CỦA MỘT MẢNG

/* Tron hai mang tang dan thanh 1 mang tang dan */
#include <stdio.h>
#include <conio.h>
#define MAX 10

void main()
{
int a[MAX], b[MAX], c[2*MAX], n1, n2, i, i1, i2;

printf("\nCho biet so phan tu cua mang thu nhat : ");
scanf("%d", &n1);
printf("Nhap vao cac phan tu (giam dan) cua mang thu nhat : ");
for (i=0; i<n1; i++)
scanf("%d", &a[i]);
printf("\nCho biet so phan tu cua mang thu hai : ");
scanf("%d", &n2);
printf("Nhap vao cac phan tu (giam dan) cua mang thu hai : ");
for (i=0; i<n2; i++)


Website học trực tuyến – www.videobook.vn


scanf("%d", &b[i]);
i1 = n1-1;
i2 = n2-1;
for (i=0; i<n1 + n2; i++)
{
if (i1 < 0 || i2 < 0)
break;
if (a[i1] < b[i2])
{
c[i] = a[i1];
i1 ;
}
else
{
c[i] = b[i2];
i2 ;
}
}
if (i1 >= 0)
while (i1 >= 0)
c[i++] = a[i1 ];
if (i2 >= 0)
while (i2 >= 0)


Website học trực tuyến – www.videobook.vn

c[i++] = b[i2 ];
printf("\nCac phan tu cua mang tron : ");
for (i=0; i<n1+n2; i++)

printf("%d ", c[i]);
getch();
}
Khi các hàm và các lệnh của chương trình đã hoàn tât đầy đủ và chính xác bạn
Click Tab Buid run (F5) chương trình chạy như sau



Website học trực tuyến – www.videobook.vn

BÀI 6: GIẢI BÀI TOÁN BẰNG ĐỆ QUY

* - Trinh bay cac buoc chuyen n dia tu coc A sang coc C
trong bai toan thap Hanoi dung ba dia */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>

#define A 0
#define B 1
#define C 2

void hanoi(int from, int to, int dia)
{
int trunggian;
if (dia == 1)
printf("\nChuyen 1 dia tu coc %c sang coc %c", 'A'+from, 'A'+to);
else
{

if ((from == A && to == C) || (from == C && to == A))
trunggian = B;


Website học trực tuyến – www.videobook.vn

else if ((from == A && to == B) || (from == B && to == A))
trunggian = C;
else if ((from == C && to == B) || (from == B && to == C))
trunggian = A;
hanoi(from, trunggian, dia-1);
hanoi(from, to, 1);
hanoi(trunggian, to, dia-1);
}
}

void main()
{
int n;

printf("\nCho biet so dia ( 3 -> 6 ): ");
do {
scanf("%d", &n);
} while (n < 3 || n > 6);
hanoi(A, C, n);
getch();
}
Khi các hàm và các lệnh của chương trình đã hoàn tât đầy đủ và chính xác bạn
Click Tab Buid run (F5) chương trình chạy như sau



Website học trực tuyến – www.videobook.vn





Website học trực tuyến – www.videobook.vn

BÀI 7: SỬ DỤNG CON TRỎ ĐỂ NHẬP DỮ LIỆU
VÀO TẬP TIN

Trước khi xây dựng một hoặc một số cấu trúc có cùng một kiểu
ta cần phải mô tả kiểu của nó. Khi định nghĩa một kiểu cấu trúc cần
chỉ ra: tên của kiểu cấu trúc và các thành phần của nó: như sau
Struct_ tên kiểu cấu trúc là từ khóa do người lập trình tự đặt
{ thành phần cấu trúc } có thể là biến, mảng , nhóm bit hợp hoặc một
cấu trúc khác mà kiểu của nó đã định nghĩa từ trước
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#define ESC 27
typedef struct cautruc *contro;
typedef struct cautruc
{
char ten[8];
int tuoi;
contro tiep;
};
contro dau,cuoi,moi;

main()
{


Website học trực tuyến – www.videobook.vn

FILE *f;
char c;
dau=NULL;

printf("\nSU DUNG CON TRO DE NHAP DU LIEU VAO TAP
TIN");

printf("\n===========================================
");
do
{
moi=(struct cautruc *) malloc(sizeof(struct
cautruc));
printf("\n-Cho biet ten: ");
gets(moi->ten);
printf("\n-Cho biet tuoi: ");
scanf("%d",&(moi->tuoi));
if (dau==NULL)
dau=moi;
else
cuoi->tiep=moi;
cuoi=moi;
cuoi->tiep=NULL;
printf("\n+Bam phim <Enter> de nhap tiep");



Website học trực tuyến – www.videobook.vn

printf("\n+Bam phim <ESC> de ket thuc nhap");
c=getchar();
c=getch();

}
while (c!=ESC); /*Bam ESC de cham dut nhap*/
printf("\n ");
printf("\n\tBam phim bat ky de ghi vao tap tin");
getch();

printf("\n\t* Du lieu vua nhap");
f=fopen("TEN_TUOI.DAT","wb");
while (dau !=NULL)
{
fwrite(dau,10,1,f);
printf("\n:Ten :%-8s :Tuoi :%3d",dau-
>ten,dau->tuoi);
free(dau);
dau=dau->tiep;
}
fclose(f);
printf("\n\t+Da ghi vao tap tin TEN_TUOI.DAT");
printf("\n\tBam phim bat ky de ket thuc");


Website học trực tuyến – www.videobook.vn


getch();
}
Khi các hàm và các lệnh của chương trình đã hoàn tât đầy đủ và
chính xác bạn Click Tab Buid run (F5) chương trình chạy như
sau



Website học trực tuyến – www.videobook.vn

BÀI 8: KHAI BÁO TOÁN TỬ CẤU TRÚC, SỬ DỤNG
CÁC HÀM CỦA CẤU TRÚC

#include <stdio.h>
#include <conio.h>
struct x
{
char *ten;
char diachi[40];
char dienthoai[10];
};
struct x M[]={"Nguyen Dinh Te","35/6 Bui Vien, Quan 1","8-360.124",
"Hoang Duc Hai","231 Nguyen Van Cu, Quan
5","8-350.656",
"Pham Hoang Dung","352/8 Nguyen Dinh Chieu,
Quan 3","8-326.667",
"Truong Thi Thanh Mai","70 Ham Nghi, Quan
1","8-214.545"};
char k;

void hien_thi(struct x ct) /* Truy xuat bang toan tu dau cham (.) */
{
printf("\n\t ");
printf("\n\t Ong: %s ",ct.ten);
printf("\n\t Dia chi: %s",ct.diachi);


Website học trực tuyến – www.videobook.vn

printf("\n\t Dien thoai: %s",ct.dienthoai);
}

main()
{

printf("\n\t Truy xuat bang toan tu dau cham (.)");
for (k=0; k<4; k++)
hien_thi(M[k]);
printf("\n\t ");
printf("\n\t Bam phim bat ky de ket thuc");
getch();
} Khi các hàm và các lệnh của chương trình đã hoàn tât đầy đủ và chính xác
bạn Click Tab Buid run (F5) chương trình chạy như sau




Website học trực tuyến – www.videobook.vn

BÀI 9: BÀI TẬP VỀ CẤU TRÚC IN MỘT BIỂU

THỨC TƯƠNG ỨNG

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

#define MAX 100

#define PLUS 0 /* Dau cong */
#define MINUS 1 /* Dau tru */
#define MULTIPLE 2 /* Dau nhan */
#define DIVIDE 3 /* Dau chia */
#define LPAREN 4 /* Dau mo ngoac don */
#define RPAREN 5 /* Dau dong ngoac don */

int top;

struct {
int toantu;
} stack[MAX];

void push (int tt)


Website học trực tuyến – www.videobook.vn

{
if (top < MAX-1)
stack[++top].toantu = tt;
}


int isempty()
{
return top == -1;
}

int pop (int *tt)
{
if (!isempty())
{
*tt = stack[top ].toantu;
return 1;
}
return 0;
}

int get (int *tt)
{
if (!isempty())


Website học trực tuyến – www.videobook.vn

{
*tt = stack[top].toantu;
return 1;
}
return 0;
}

void xet(int tt)

{
char chuoi[] = "+-*/";
int uutien[] = {0,0,1,1,-1,-1};
int toantu, done = 0, val;

if (isempty())
push(tt);
else
{
do {
if (get(&toantu))
{
if (uutien[tt] <= uutien[toantu])
{
pop(&toantu);


Website học trực tuyến – www.videobook.vn

printf("%c ", chuoi[toantu]);
}
else
{
push(tt);
done = 1;
}
}
else
{
done = 1;

push(tt);
}
} while (!done);
}
}

void in_hauto(char *expr)
{
int len, i=0, ttu, done;
char c, chuoi[]="+-*/";
top = -1;
len = strlen(expr);


Website học trực tuyến – www.videobook.vn

do {
c = expr[i++];
while (c == ' ' && i < len-1)
c = expr[i++];
switch (c)
{
case '0' :
case '1' :
case '2' :
case '3' :
case '4' :
case '5' :
case '6' :
case '7' :

case '8' :
case '9' : printf("%c ", c); break;
case '+' : xet(PLUS); break;
case '-' : xet(MINUS); break;
case '*' : xet(MULTIPLE); break;
case '/' : xet(DIVIDE); break;
case '(' : push(LPAREN); break;
case ')' : done = 0;
do {

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

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