BÀI TẬP MINH HOẠ Bài

Một phần của tài liệu Bài tập về C và C++ ppt (Trang 37 - 44)

V. CÁC BÀI TẬP MINH HỌA Bài

4.BÀI TẬP MINH HOẠ Bài

Bài 1

Viết hàm đệ qui để tính tổng sau: S=1+2+3+...+n /*Chương tình tính tổng S bằng hàm đệ qui*/ #include<stdio.h> int tongs(int n); main() { int n;

printf("Nhap vao so n de tinh tong: "); scanf("%d",&n);

/*In ra ket qua */

printf("\ntong S:=%d",tongs(n)); } int tongs(int n) { if (n==1) return 1; else return n+tong(n-1); } Bài 2

/*Chương trình minh họa tìm ước số chung lớn nhất bằng phương pháp đệ qui*/ #inclde<stdio.h>

int uscln(int n,int m) void main()

{

int so1,so2;

printf("Nhap so thu nhat:\n"); scanf("%d",&so1); printf("Nhap so thu hai :\n"); scanf("%d",&so2); printf("USCLN la %d",uscln(so1,so2));

return; }

{ int r; r=n-m; if (r==0) return m; else return uscln(m,r); } Bài 3

/*Chương trình dùng kỹ thuật đệ qui để in ra số theo thứ tự ngược */ #inclde<stdio.h>

void daochuso(unsigned so); void main()

{

unsigned so;

printf("Nhap vao mot so duong:"); scanf("%u",&so); daochso(so);

return; }

void daochuso(unsigned so) { printf("%u",so%10); if (so/10==0) return; else return daochuso(so/10); }

VI. CÁC BÀI TẬP MINH HỌABài 1 Bài 1

/*Chương trình minh họa cách tạo, mở một file và nhập một kí tự vào file */ #include <stdio.h>

main() {

FILE *file_pointer; /* Ðây là con trỏ file. */ /* Khởi tạo tập tin myfile.dta và gán địa chỉ của nó đến con trỏ File file_pointer: */

file_pointer = fopen("MYFILE.DTA","w"); /* Nhập một kí tự vào flie đã mở: */

putc('C', file_pointer); /* Ðóng File vừa tạo. */ fclose(file_pointer); }

Bài 2

/*Chương trình minh họa cách mở một File đã tồn tại trên đĩa để đọc*/ #include <stdio.h>

{

FILE *file_pointer; /* Ðây là con trỏ File. */ Char file_character; /* Kí tự được đọc từ file. */

/* Mở file đang tồn tại (myfile.dta) và gán địa chỉ của nó đến con trỏ file file_pointer: */ file_pointer = fopen("MYFILE.DTA","r");

/* Nhập kí tự đầu tiên từ file đã mở: */ file_character = getc(file_pointer); /* Xuất kí tự lên màn hình. */ printf("Kí tự là %c\n", file_character); /* Ðóng file đã tạo. */ fclose(file_pointer); } Bài 3 (adsbygoogle = window.adsbygoogle || []).push({});

/*Chương trình minh họa cách nhập một chuỗi kí tự? vào file*/ #include <stdio.h>

main() {

FILE *file_pointer; /*Ðây là con trỏ File. */ char file_character; /* Kí tự được đọc từ file. */

/* Tạo file myfile.dta và gán địa chỉ của nó đến con trỏ file_pointer: */ file_pointer = fopen("MYFILE.DTA","w");

/* Nhập một chuỗi dữ liệu vào file đã mở : */ while((file_character = getche()) != '\r')

file_character = putc(file_character, file_pointer); /* Ðóng file vừa tạo. */

fclose(file_pointer); }

Bài 4

/* Chương trình minh họa cách đọc một chuỗi kí tự từ file đã tồn tại trên đĩa*/ #include <stdio.h>

main() {

FILE *file_pointer; /* Ðây là con trỏ File. */ char file_character; /* kí tự được đọc từ file. */

/* Mở file đang tồn tại (myfile.dta) và gán địa chỉ của nó đến con trỏ file file_pointer: */ file_pointer = fopen("MYFILE.DTA","r");

while((file_character = getc(file_pointer)) != EOF) printf("%c", file_character); /* Ðóng file đã tạo. */ fclose(file_pointer); } Bài 5

/*Chương trình? Sao chép hai tập tin:*/ #include <stdio.h>

#include <conio.h> main(int n,char *parm[]) { FILE *f1,*f2; char c; clrscr(); if (n!=3) exit(); ? f1=fopen(parm[1],"rt");

if (f1==NULL) { printf("Khong co file %s tren dia ",parm[1]); exit();} ? f2=fopen(parm[2],"wt");

if (f2==NULL)

{ printf("Duong dan khong hop le? %s tren dia ",parm[2]); exit();} while (!feof(f1)) { c=fgetc(f1); ? fputc(c,f2); } fclose(f1); fclose(f2); getch(); } Bài 6

/*Chương trình tổng quát minh họa cách khởi tạo, nhập, xuất dữ liệu trên file */ #include <stdio.h>

main() {

char selection[2]; /* Chọn lựa. */ char file_name[13]; /* Tên file. */

char user_choice[2]; /* Chọn chế độ kích hoạt. */ int selection_value; /*? Chọn giá trị. */

int file_character; /* Kí tự File được lưu. */ FILE *file_pointer; /* Con trỏ File. */ /* Hiện thị các mục chọn. */

printf("Chọn một trong các mục sau:\n");

printf("1] Tạo một File mới. 2] Viết đè lên một file đã tồn tại.\n"); printf("3] Cộng thêm dữ liệu mới đến file đã tồn tại.\n");

printf("4] Nhập dữ liệu từ file đang tồn tại.\n"); /* Nhập các giá trị. */

do { printf("Lựa chọn của bạn => "); gets(user_choice); selection_value = atoi(user_choice); switch(selection_value) {

case 1 : /* Tạo một file mới. */

case 2? : strcpy(selection, "w"); /* Viết chồng lên dữ liệu đã có. */ break;

case 3? : strcpy(selection, "a"); /* Cập nhập dữ liệu đến file đang tồn tại. */ break; (adsbygoogle = window.adsbygoogle || []).push({});

case 4 : strcpy(selection, "r"); /* Nhập dữ liệu từ file đang tồn tại.*/ break;

default : {

printf("Ðiều này không được chọn.\n"); selection_value = 0;

} }

} while(selection_value == 0); /* Nhập file từ người sử dụng. */ printf("Nhập tên của file => ");

gets(file_name);

/* Mở file để vận hành. */

if((file_pointer = fopen(file_name, selection)) == NULL) {

printf("Khong the mo duoc file %s!", file_name); exit(-1);

}

/* Viết hoặc đọc từ file. */ switch(selection_value) {

case 1 : break; case 2 : case 3 : {

printf("Vào chuỗi để lưu: \n");

while((file_character = getche()) != '\r')

file_character = putc(file_character, file_pointer); }

break; case 4 : {

while((file_character = getc(file_pointer)) != EOF) printf("%c", file_character);

} break; }

fclose(file_pointer); }

Bài 7

/*Chương trình minh họa con trỏ file và kiểu cấu trúc*/ #include <stdio.h>

typedef struct {

char part_name[15]; /* Tên. */ int quantity; /* Số lượng. */ float cost_each; /* Ðơn giá. */ } parts_structure;

main() {

parts_structure parts_data; /* biến cấu trúc. */ FILE *file_pointer; /* Con trỏ File. */

/* Mở một file để viết. */

file_pointer = fopen("B:PARTS.DTA","wb"); /*Nhập dữ liệu bởi người sử dụng chương trình. */ do { printf("\nName of part => "); gets(parts_data.part_name); printf("Number of parts => "); scanf("%d", &parts_data.quantity); printf("Cost per part => ");

scanf("%f", &parts_data.cost_each); /* Viết cấu trúc đến file đâ mở. */

fwrite(&parts_data, sizeof(parts_data), 1, file_pointer); /* Thực hiện lặp cho nhiều lần nhập. */

printf("Add more parts (y/n) => "); } while (getche() == 'y'); (adsbygoogle = window.adsbygoogle || []).push({});

/* Ðóng file. */ fclose(file_pointer); }

Bài 8

/*Chương trình sau đây liệt kê tên các tập tin có trong một thư mục và trong tất cả các thư mục con của nó.*/

#include <conio.h> #include <dir.h> #include <dos.h> char bs[]="\\*.*",name[50],ext[3]; # define attr\ (FA_RDONLY|FA_HIDDEN|FA_SYSTEM|FA_LABEL|FA_DIREC|FA_ARCH) int sf,nn;

void scandir(char *dir); main()

{

struct ffblk *ff; char dirname[50]; clrscr();

printf("Ten thu muc muon xem : "); gets(dirname);

scandir(dirname); getch();

clrscr(); }

void scandir(char *dir) { char d1[80],d2[80]; int first=1,s; struct ffblk f; sprintf(d1,"%s%s",dir,bs); printf("\n\n%s",d1); getch(); while (1) { if (first) { s=findfirst(d1,&f,attr); first=0; } else s=findnext(&f); if (s!=0) return; if(f.ff_name[0]=='.') continue; if (f.ff_attrib==FA_DIREC) { sprintf(d2,"%s\\%s",dir,f.ff_name); scandir(d2); } else { ++sf; printf("\n%15s %15d %10d ",f.ff_name,f.ff_fdate,f.ff_ftime); if (sf%20==0)

{ printf("\nBam enter xem tiep "); getch();

} } } }

Một phần của tài liệu Bài tập về C và C++ ppt (Trang 37 - 44)