Download as pdf or txt
Download as pdf or txt
You are on page 1of 36

TRƯỜNG ĐẠI HỌC QUẢN LÝ

VÀ CÔNG NGHỆ HẢI PHÒNG

Học phần:

Phương pháp
lập trình
Nội dung:
❖ Chương 1. Tổng quan về lập trình
❖ Chương 2. Trừu tượng hoá dữ liệu
❖ Chương 3. Nhập - xuất dữ liệu và các kỹ thuật sinh dữ liệu
❖ Chương 4. Hàm và chương trình con
❖ Chương 5. Đệ quy và khử đệ quy
❖ Chương 6. Một số chiến lược thiết kế giải thuật
Chương 3. Nhập - xuất dữ liệu và các kỹ thuật sinh dữ liệu

❖Nhập xuất dữ liệu


• Dòng nhập xuất chuẩn
• Tệp tin
❖Các kỹ thuật sinh dữ liệu
• Nhập trực tiếp từ bàn phím
• Sinh dữ liệu từ hàm Random
• Đọc dữ liệu từ tệp tin

3
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.1 Dòng nhập –xuất chuẩn
- Trong ngôn ngữ lập trình C: Sử dụng hàm scanf và printf qua dòng nhập stdin
và dòng xuất chuẩn: stdout
- Trong ngôn ngữ lập trình C++: tương tác trực tiếp qua cin>> cout<< trên dòng
nhập xuất.
• Đưa kết quả lên màn hình - hàm printf
printf("chuỗi điều khiển", đối số 1, đối số 2,...);
- “chuỗi điều khiển” có dạng tổng quát là %[-][n][.m] “ký tự chuyển dạng”
- “ký tự chuyển dạng” (có nhiều loại, trong bảng sau chỉ tổng kết một số loại hay
dùng)

4
Chương 3. Nhập - xuất dữ liệu
3.1 Nhập - xuất dữ liệu
3.1.1 Dòng nhập –xuất chuẩn
Ký tự chuyển Kiểu dữ liệu cần hiển
Cách chuyển dạng
dạng thị
d hoặc i int Số nguyên hệ số 10 có dấu
ld hoặc li long Số nguyên hệ số 10 kiểu long có dấu
o int Số nguyên hệ số 8 không dấu
lo longh Số nguyên hệ số 8 kiểu long có dấu
u int Số nguyên hệ số 10 không dấu
f float, double Giá trị hiển thị là số thực được hiển thị
theo dấu phải động
c Char Giá trị hiển thị là một ký tự
5 s *char Giá trị hiển thị là một choỗi ký tự
Chương 3. Nhập - xuất dữ liệu
3.1 Nhập - xuất dữ liệu
3.1.1 Dòng nhập –xuất chuẩn
❖Ví dụ: 1. #include<stdio.h>
2. main(){
3. int a=12; float b=12.3456; char ch='a'; char st[30]="Xin chao";
4. printf("a = %d\n", a);
5. printf("a = %6d\n ", a);
6. printf("a = %-6d\n", a);
7. printf("b = %f\n", b);
8. printf("b = %6.2f\n", b);
9. printf("b = %-6.2f\n", b);
10. printf("ch = %c\n", ch);
11. printf("st = %s", st);
6 12. }
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.1 Dòng nhập –xuất chuẩn
❖Các hàm vào, ra chuẩn:
getchar() và putchar();
getch() và putch();
✓biến = getchar();
✓putchar(ch);
✓getch(); //hoặc biến = getch();
✓putch(ch);
7
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.1 Dòng nhập –xuất chuẩn
❖ Vào số liệu từ bàn phím - hàm scanf
▪ Cú pháp:
scanf("chuỗi điều khiển", đối 1, đối 2, ...);

Hàm đọc thông tin từ bàn phím, chuyển dịch chúng thành số nguyên,
thực, ký tự,… rồi lưu vào bộ nhớ theo địa chỉ xác định
• Chuỗi điều khiển %d, %f, %c, %s, %x…
• đối 1, đối 2,… là địa chỉ của các biến

8
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.1 Dòng nhập –xuất chuẩn
❖Ví dụ:
int a; float x; char ch, st[30];
scanf("%d", &a);
scanf("%f", &x);
scanf("%c", &ch);
scanf("%s", st);
hoặc viết gộp các lệnh trên thành một lệnh duy nhất:
scanf("%d%f%c%s", &a, &x, &ch, st);
9
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.1 Dòng nhập –xuất chuẩn
❖Ví dụ:
1. #incluse<stdio.h>
2. main(){
3. int a; float x; char ch; char st[30];
4. printf("Nhap dl tu ban phim: ");
5. scanf("%d%f%c%s", &a, &x, &ch, st);
6. printf("\nKet qua: %d, %.2f, %c, %s", a, x, ch, st);
7. }

10
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.1 Dòng nhập –xuất chuẩn
❖Ví dụ:
1. #include <stdio.h>
2. #include <stdint.h>
3. int main(){
4. long unsigned int n;
5. scanf("%lx", &n);
6. printf("%ld", n);
7. return 0;
8. }
11
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.1 Dòng nhập –xuất chuẩn
• Một số điểm đặc biệt với scanf và chuỗi điều khiển
• Xây dựng chương trình nhập vào 1 chuỗi dùng hàm scanf (nhập cả dấu cách)

1. int main(){
2. char xau[100];
3. printf("Nhập vào một chuỗi có dấu cách trống: ")
4. scanf("%[^\n]",xau);
5. printf("Xâu vừa nhập: %s", xau);
6. }
12
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.1 Dòng nhập –xuất chuẩn
• Xây dựng chương trình nhập vào 1 chuỗi giống như câu lệnh copy con trong
DOS (nhập cả dấu cách, cả xuống dòng và khi ấn f6 rồi enter thì thoát)

int main(){
char xau[100];
scanf("%[^\0]",xau);
printf("%s", xau);
}

13
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.1 Dòng nhập –xuất chuẩn
• Xây dựng chương trình nhập vào 1 • Xây dựng chương trình nhập vào 1
chuỗi ko có kí tự số. Ví dụ nhập vào chuỗi ko có kí tự chữ cái. Ví dụ nhập
abc123xy thì nhận được chuỗi abc vào 123xy thì nhận được chuỗi 123

int main(){ int main(){


char xau[100]; char xau[100];
scanf("%[^0-9]",xau); scanf("%[0-9]",xau);
printf("%s", xau); printf("%s", xau);
} }
14
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.1 Dòng nhập –xuất chuẩn

• Xây dựng chương trình nhập vào 1 chuỗi chỉ có chữ cái thường và số 8,
dấu cách và dấu * và dấu ^

int main(){
char xau[100];
scanf("%[a-z8*^ ]",xau);
printf("%s", xau);
}
15
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.2 Tệp tin và các thao tác trên Tệp tin.
❖ Tệp (File) là một vùng chứa trong các thiết bị lưu trữ của máy tính được sử
dụng để lưu trữ dữ liệu.
❖ Vì sao cần sử dụng tệp?
• Khi chương trình kết thúc, dữ liệu lưu trong RAM sẽ bị mất. Lưu trữ vào tệp 
bảo toàn dữ liệu.
• Mất nhiều thời gian để nhập vào một lượng dữ liệu lớn. Lưu trữ vào tệp  tiết
kiệm thời gian, công sức
• Dễ dàng di chuyển dữ liệu từ máy tính này sang máy tính khác
• Có thể tổ chức lưu trữ một số lượng dữ liệu lớn.
16
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.2 Tệp tin và các thao tác trên Tệp tin.
❖ Có hai loại file
+ File văn bản: lưu trữ các ký tự (chữ, số)
+ File nhị phân: lưu các byte nhị phân
❖ Các thao tác với file trong C (kể cả tệp văn bản hay tập tin nhị phân) như sau:
1. Tạo file mới
2. Mở file đang có
3. Đóng file
4. Đọc, ghi file

17
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.2 Tệp tin và các thao tác trên Tệp tin.
3.1.2.1. Làm việc với file trong C
• Khi làm việc với file trong C, cần khai báo con trỏ của kiểu tệp. Khai báo giúp
tạo kết nối giữa tệp và lập trình.
FILE *fptr;
3.1.2.2. Mở file – để tạo và chỉnh sửa trong C
• Để có thể đọc, ghi file, trước hết phải mở tệp bằng hàm fopen (trong stdio.h)
• Cú pháp để mở tệp trong luồng vào ra tiêu chuẩn như sau:
fptr = fopen("fileopen", "mode");
❖Các chế độ (mode) trong luồng ra, vào tiêu chuẩn trong lập trình C như bảng sau:
18
Chương 3. Nhập - xuất dữ liệu
3.1 Nhập - xuất dữ liệu
3.1.2 Tệp tin và các thao tác trên Tệp tin.
Bảng. Các chế độ mở trong luồng ra, vào tiêu chuẩn trong lập trình C
Chế độ Ý nghĩa của chế độ Trong thời gian tệp không tồn tại
r Mở để đọc tệp văn bản Nếu tệp không tồn tại, fopen() trả về NULL.
Mở để đọc ở chế độ nhị
rb Nếu tệp không tồn tại, fopen() trả về NULL.
phân.
Mở để ghi dữ liệu vào tệp Nếu tệp đã có, nội dung của nó sẽ bị xóa. Nếu tệp chưa có,
w
văn bản sẽ tạo một tệp mới.
Mở để ghi dữ liệu trong Nếu tệp đã có, nội dung của nó sẽ bị xóa. Nếu tệp chưa có,
wb
chế độ nhị phân sẽ tạo một tệp mới.
Mở để ghi bổ sung dữ liệu Mở tập tin để ghi bổ sung dữ liệu được thêm vào phần cuối
a
vào tệp văn bản tệp. Nếu tệp không tồn tại, sẽ tạo một tệp mới.
Mở để ghi bổ sung dữ liệu Mở tập tin để ghi bổ sung dữ liệu được thêm vào phần cuối
ab
19 trong chế độ nhị phân tệp. Nếu tệp không tồn tại, sẽ tạo một tệp mới.
Chương 3. Nhập - xuất dữ liệu
3.1 Nhập - xuất dữ liệu
3.1.2 Tệp tin và các thao tác trên Tệp tin.
Bảng. Các chế độ mở trong luồng ra vào tiêu chuẩn trong lập trình C
Chế độ Ý nghĩa của chế độ Trong thời gian tệp không tồn tại
r+ Mở để đọc/ghi dữ liệu vào tệp văn bản Nếu tệp không tồn tại fopen() trả về NULL.
Mở để đọc/ghi dữ liệu trong chế độ nhị
rb+ Nếu tệp không tồn tại fopen() trả về NULL
phân
Nếu tệp đã có, nội dung của nó sẽ bị xóa.
w+ Mở để đọc/ghi dữ liệu vào tệp văn bản
Nếu tệp chưa có, sẽ tạo một tệp mới.
Mở để đọc/ghi dữ liệu vào trong chế độ nhị Nếu tệp đã có, nội dung của nó sẽ bị xóa.
wb+
phân Nếu tệp chưa có, sẽ tạo một tệp mới.
a+ Mở để đọc/bổ sung dữ liệu vào tệp văn bản Nếu tệp chưa có sẽ tạo một tệp mới.
Mở để đọc/bổ sung dữ liệu trong chế độ nhị
ab+ Nếu tệp chưa có sẽ tạo một tệp mới.
20 phân
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.2 Tệp tin và các thao tác trên Tệp tin.
3.1.2.2. Mở file – để tạo và chỉnh sửa trong C
❖ Ví dụ:
fptr = fopen("E:\\cprogram\\newprogram.txt", "w");
fptr = fopen("E:\\cprogram\\oldprogram.bin", "rb");
• Giả sử tệp newprogram.txt không tồn tại ở vị trí E:\cprogram. Hàm đầu tiên sẽ tạo ra
một tệp mới có tên là newprogram.txt và mở tệp này và có thể thêm văn bản vào tệp
bởi chế độ của tệp này là ‘w’. Thuộc tính writing mode cho phép tạo hoặc chỉnh sửa
nội dung của một tệp.
• Giả sử tập tin nhị phân oldprogram.bin tồn tại ở vị trí E:\cprogram. Hàm thứ 2 sẽ mở
tập tin đang có và có thể đọc được nội dung tệp ở chế độ nhị phân ‘rb‘. Tính năng
đọc chỉ cho phép đọc tệp nhưng không thể ghi dữ liệu vào tệp được.
21
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.2 Tệp tin và các thao tác trên Tệp tin.
3.1.2.3 Đóng tệp
• Phải đóng tệp (cả tệp văn bản và tập tin nhị phân) sau khi đọc, ghi file trong C.
• Sử dụng hàm fclose() để đóng tệp.
fclose(fptr);
• fptr là một con trỏ tệp được liên kết với tệp sẽ được đóng.
• Đóng tất cả các tệp: int fcloseall(void)

• Làm sạch vùng đệm của tệp tin: int fflush(FILE *f)

22
Chương 3. Nhập - xuất dữ liệu
3.1 Nhập - xuất dữ liệu
3.1.2.4 Đọc ghi dữ liệu từ file .txt trong C
#include <stdio.h>
▪ Để đọc và ghi dữ liệu vào tệp văn #include <stdlib.h>
bản, sử dụng hàm fscanf và fprintf int main() {
trong C int num; FILE *fptr;
▪ 2 hàm trên là những phiên bản khác fptr = fopen("D:\\Baitap\\program.txt","w");
if(fptr == NULL) {
của lần lượt 2 hàm printf() và
printf("Error!");
scanf(). Tuy nhiên, có một sự khác exit(1);
biệt: 2 hàm fprint() và fscanf() sẽ chỉ }
dẫn con trỏ đến cấu trúc FILE. printf("Enter num: "); scanf("%d",&num);
fprintf(fptr,"%d",num);
❖Ví dụ 1: Ghi dữ liệu vào file văn bản fclose(fptr);
return 0;
int fprintf(FILE *f , const char *đặc tả, ds biến) }
23
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.2.4 Đọc, ghi dữ liệu từ file .txt trong C #include <stdio.h>
#include <stdlib.h>
▪ Để đọc và ghi dữ liệu vào tệp văn bản, sử int main() {
dụng hàm fscanf và fprintf trong C int num; FILE *fptr;
fptr =
▪ 2 hàm trên là những phiên bản khác của fopen("D:\\Baitap\\program.txt","r");
lần lượt 2 hàm printf() và scanf(). Tuy if (fptr == NULL){
nhiên, có một sự khác biệt: 2 hàm fprint() printf("Error! opening file");
và fscanf() sẽ chỉ dẫn con trỏ đến cấu trúc exit(1);
}
FILE.
fscanf(fptr,"%d", &num);
printf("Value of n = %d", num);
❖Ví dụ 2: Đọc file trong C fclose(fptr);
return 0;
fscanf(FILE *f , const char *đặc tả, ds biến)
}
24
Chương 3. Nhập - xuất dữ liệu

❖Bài tập
Bài 1:
• Cho tệp dulieu1c.txt chứa các thông tin như sau:
- Dòng 1: chứa số lượng phần tử của dãy
- Dòng 2: chứa các số nguyên trong dãy, các số cách nhau bởi dấu
cách trống.
Ví dụ: 5
25 2 67 12 8
• Hãy đọc dữ liệu từ tệp dulieu1c.txt ra mảng một chiều A, sau đó sắp xếp
các phần tử của mảng theo chiều tăng dần và ghi dữ liệu của mảng vào
tệp sapxep1c.txt.
25
Chương 3. Nhập - xuất dữ liệu

❖Bài tập
Bài 2:
• Cho tệp dulieu2c.txt chứa các thông tin như sau:
- Dòng 1: chứa số lượng phần tử hàng, cột của ma trận
- Các dòng 2, 3…: chứa lần lượt các giá trị của từng hang của ma trận,
các số cách nhau bởi dấu cách trống.
Ví dụ: 23
5 2 67
8 33 3
• Hãy đọc dữ liệu từ tệp dulieu2c.txt ra mảng 2 chiều A, sau đó sắp xếp các phần
tử trên từng hàng của mảng theo chiều tăng dần và ghi dữ liệu của mảng vào
tệp sapxep2c.txt.

26
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu typedef struct{


3.1.2.4 Đọc ghi dữ liệu từ file .csv trong C int masv;
char hoten[30];
❖ Mở file CSV có các cột phân tách bởi dấu phẩy float dtb;
int malop;
void inputArr(SV A[], int *n){
}SV;
int i; FILE *fptr;
fptr = fopen("D:\\Baitap\\DanhsachSV.csv","r");
if (fptr == NULL){
printf("Error! opening file");
exit(1); // Program exits if the file pointer returns NULL.
}
fscanf(fptr,"%d", n);
for(i=0; i<*n; i++){
fscanf(fptr, "%d,%[^,],%f,%d",&A[i].masv, &A[i].hoten, &A[i].dtb, &A[i].malop);
}
fclose(fptr);
}
27
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.2.4 Đọc, ghi dữ liệu từ file .csv trong C
❖ Ghi file CSV có các cột phân tách bởi dấu phẩy

28
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất dữ liệu


3.1.2.5 Đọc và ghi dữ liệu vào tập .bin
▪ Khi đọc hoặc ghi dữ liệu vào tập tin nhị phân, sử dụng tệp fread và fwrite trong C.
❖ Ghi dữ liệu vào tập tin nhị phân.
▪ Sử dụng hàm fwrite() để ghi dữ liệu vào tập tin nhị phân. Hàm này có 4 đối số:
1. địa chỉ của dữ liệu được ghi vào đĩa 2. kích thước của dữ liệu được ghi vào đĩa
3. số lượng các loại dữ liệu này 4. đưa con trỏ đến tệp mà muốn ghi dữ liệu.
fwrite (addressData, sizeData, numbersData, pointerToFile);
❖ Đọc dữ liệu từ tập tin nhị phân
▪ Hàm fread() trong C cũng có 4 đối số tương tự như hàm fwrite().
fread (addressData, sizeData, numbersData, pointerToFile);
29
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất #include <stdio.h>


dữ liệu #include <stdlib.h>
struct threeNum {
int n1, n2, n3;
};
int main() {
int n; struct threeNum num; FILE *fptr;
if ((fptr = fopen("D:\\Baitap\\program.bin","wb")) == NULL){
❖Ví dụ 3: Ghi dữ liệu printf("Error! opening file");
vào tệp nhị phân bằng exit(1); // Program exits if the file pointer returns NULL.
}
hàm fwrite trong C
for(n = 1; n < 5; ++n) {
num.n1 = n; num.n2 = 5*n; num.n3 = 5*n + 1;
fwrite(&num, sizeof(struct threeNum), 1, fptr);
}
fclose(fptr);
return 0;
30 }
Chương 3. Nhập - xuất dữ liệu

3.1 Nhập - xuất #include <stdio.h>


#include <stdlib.h>
dữ liệu struct threeNum {
int n1, n2, n3;
};
int main() {
int n; struct threeNum num; FILE *fptr;
if ((fptr = fopen("D:\\Baitap\\program.bin","rb")) == NULL){
printf("Error! opening file");
❖Ví dụ 4: Đọc dữ exit(1); // Program exits if the file pointer returns NULL.
}
liệu từ tệp nhị for(n = 1; n < 5; ++n) {
phân bằng hàm fread(&num, sizeof(struct threeNum), 1, fptr);
fread trong C printf("n1: %d\tn2: %d\tn3: %d\n", num.n1, num.n2, num.n3);
}
fclose(fptr);
return 0;
31 }
Chương 3. Nhập - xuất dữ liệu

3.1.2 Tệp tin và các thao tác trên Tệp tin.


7. Các hàm định vị con trỏ tệp tin
• Đưa con trỏ về đầu tập tin: void rewind(FILE *f)
• Dịch chuyển con trỏ tệp tin (Lấy dữ liệu bằng cách sử dụng hàm fseek())
int fseek(FILE *f, long số_byte, int vt_bắt_đầu)
=> Dời con trỏ tập tin đi số_byte tính từ vt_bắt_đầu. Nếu số_byte > 0 chuyển
xuống phía cuối tệp tin, số_byte < 0 chuyển lên phía đầu tệp tin, số_byte = 0 đứng tại
vt_bắt_đầu, vt_bắt_đầu có thể mang một trong các giá trị sau:
SEEK_SET (0) : Vị trí đầu tập tin
SEEK_CUR (1): Vị trí hiện hành
SEEK_END (2): Vị trí cuối tập tin.
* Cho biết vị trí hiện tại của con trỏ: long ftell(FILE *f)
32
Chương 3. Nhập - xuất dữ liệu

2.3.4. Dữ liệu kiểu tệp


❖Ví dụ: Lấy dữ liệu bằng cách sử dụng hàm fseek()
// Moves the cursor to the end of the file
fseek(fptr, -sizeof(struct threeNum), SEEK_END);
#include <stdio.h> for(n = 1; n < 5; ++n) {
#include <stdlib.h> fread(&num, sizeof(struct threeNum), 1, fptr);
struct threeNum { printf("n1: %d\tn2: %d\tn3: %d\n", num.n1, num.n2, num.n3);
int n1, n2, n3; fseek(fptr, -2*sizeof(struct threeNum), SEEK_CUR);
}; }
int main() { fclose(fptr);
int n; return 0;
struct threeNum num; }
FILE *fptr;
if ((fptr = fopen("D:\\Baitap\\program.bin","rb")) == NULL) {
printf("Error! opening file");
exit(1); // Program exits if the file pointer returns NULL
33 }
Chương 3. Nhập - xuất dữ liệu
3.2 Các kỹ thuật sinh dữ liệu
❖ Tạo số ngẫu nhiên
Để tạo ra một số ngẫu nhiên trong C, sử dụng hàm rand() trong thư viện
stdlib.h. Hàm này trả về là một giá trị nguyên có giá trị từ 0 đến RAND_MAX. Giá trị
RAND_MAX sẽ phụ thuộc vào từng môi trường lập trình C (trình biên dịch).

- Khi sử dụng hàm rand() để tạo ra một số ngẫu nhiên. Ở ❖ Ví dụ:


#include <stdio.h>
bất kỳ lần chạy nào các kết quả ở mỗi lần chạy đều giống #include <stdlib.h>
nhau theo thứ tự. #include <time.h>
- Để mỗi lần chạy cho ra 1 chuỗi kết quả khác nhau cần thay int main() {
đổi random seed bằng cách sử dụng hàm srand() và truyền int i;
vào 1 con số có thể thay đổi được (thông thường sử dụng srand(time(NULL));
for (i = 0;i < 10; i++)
đơn vị thời gian hiện tại time (NULL) ở mỗi lần chạy - thư printf("%d\n",rand());
viện time.h. Đặt dòng srand(time(NULL)) trước khi return 0;
34 hàm rand() được sử dụng. }
Chương 3. Nhập - xuất dữ liệu

3.2 Các kỹ thuật sinh dữ liệu


❖ Tạo số ngẫu nhiên với một ❖Ví dụ: Sinh số nguyên ngẫu nhiên có giá trị
khoảng xác định trong khoảng [3, 50]
#include <stdio.h>
Để tạo ra một giá trị ngẫu #include <stdlib.h>
nhiên trong khoảng xác định, sử dụng #include <time.h>
công thức: int main() {
srand(time(NULL));
int n, i;
rand() % (max – min + 1) + min
for (i = 0;i < 10; i++) {
n = rand()%(50-3+1)+3;
để nhận kết quả trong khoảng từ min printf("%d\n", n);
đến max. }
return 0;
35 }
TRƯỜNG ĐẠI HỌC QUẢN LÝ
VÀ CÔNG NGHỆ HẢI PHÒNG

Thank you!

You might also like