1. Trang chủ
  2. » Giáo án - Bài giảng

Giáo án - Bài giảng: Công nghệ thông tin:Bài tập môn công nghệ mã nguồn mở giành cho sinh viên ôn tập

42 1,1K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 42
Dung lượng 1,14 MB

Nội dung

Bài tập 1: Trích xuất nội dung từ lệnh #ls trong Terminal thu được bảng sau : Hãy trả lời các câu hỏi sau: a. User dupont có quyền thực thi file fich hay không ? b. User dupont có đọc, thay đổi file fichier hay không? c. Một user trong nhóm prof có quyền đọc file fich hay không ? d. Một user trong nhóm prof có quyền thay đổi file fich hay không ? e. Một user trong nhóm prof, có quyền xoá những file trong thư mục sql không ? f. User dupont có quyền thay đổi file texte hay không ? g. User dupont có quyền thực thi file long hay không ? h. Một user robert không thuộc nhóm prof, có quyền xoá những file không thuộc về thư mục exoshell ? i. Một user thuộc nhóm prof, có quyền đổi tên những file trong thư mục sql không? j. Một user thuộc nhóm prof, có quyền đổi tên những file trong thư mục exoshell? Bài tập 2: Cho biết giá trị thập phân của umask cho phép tạo ra file có quyền rwrwr Bài tập 3: Cho biết quyền của file mới tạo ra khi sử dụng giá trị umask là 127 Bài tập 4: Trích xuất nội dung từ lệnh #ls trong Terminal của một thư mục với các quyền sau đây : Cho biết giá trị của umask là 0022, hãy cho biết quyền của file đích (destination) khi thực hiện lệnh copy sau đây : $ cp test.c test2.c $ cp test.c a.out MSSV : Họ tên : BÀI TẬP SHELL Bài 1 : Viết đoạn script, sử dụng lệnh case biểu diễn 4 phép toán cơ bản sau đây : + cộng ; - trừ; x nhân; / chia Yêu cầu: Khi thực thi câu lệnh như sau : $./pheptoan 20*3 Bài 2 : Viết đoạn script minh họa xuất ra chuỗi số Fibonnaci theo                         Với giá trị p = 0, ta có chuỗi Fibonacci: 0, 2, 4, 8, 16, 32, 64, 128… Với giá trị p = 1, ta có chuỗi Fibonacci : 1, 1, 2, 3, 5, 8, 13, 21, 34, 55… Bài 3 : Viết đoạn script xuất ra ngày, giờ, tháng năm và thư mục hiện hành. Bài 4 : Viết đoạn script đảo thứ tự của chuỗi số. Ví dụ : 12345 đảo thành 54321 Hướng dẫn : Lệnh cut [-c] [-f] list [-n] [-d delim] [-s] [file] -c list: xác định ký tự sẽ chọn. $ echo "hello" | cut -c 2-4 # chọn ký tự từ thứ 2 đến 4 Kết quả : ell Bài 5 : Viết đoạn script tính tổng như sau. Nhập vào số : 1234, tổng sẽ là sum=1+2+3+4 Bài 6 : Viết đoạn script tính module của số phức. Số phức : . Module : Bài 7 : Viết đoạn script xác định file nào đó có tồn tại hay không ? $ ./ existe file File khong ton tai Bài 8 : Viết đoạn shell script giải phương trình bậc 2 Bài 9 : Viết đoạn script kiểm tra số a nhập vào có phải là nguyên tố hay không và tính tổng các số nguyên tố từ số nguyên tố đầu tiên đến a. MSSV : Họ tên : Bài 10 : Viết đoạn script chuyển đổi số thập phân ra thập lục phân (HEX) và nhị phân. Và ngược lại. Bài 11. Viết đoạn script kiểm tra quyền truy xuất của 1 file và xuất ra kết quả quyền theo dạng số thập phân Nếu file có quyền là rwxrwxrwx , thì xuất ra 777 Trang 1 BÀI TẬP LẬP TRÌNH C TRÊN UNIX MÔN HỌC : CÔNG NGHỆ NGUỒN MỞ HỌ TÊN : MSSV : LỚP : Hướng dẫn : Các bài tập dưới đây có kèm lời giải và source code (chưa hoàn chỉnh và chính xác). Sinh viên dựa theo gợi ý của code hoàn chỉnh bài giải. NỘP SOURCE CODE HOÀN CHỈNH (BẰNG GIẤY IN) CHO LỚP TRƯỞNG VÀO NGÀY CUỐI MÔN HỌC. 1. Viết chương trình cho phép nhập vào một số và trả về giá trị tuyệt đối của số đó. #include <stdio.h> int main(void) { int n; /* Nhap */ printf("Nhap vao : "); scanf("%d", &n); /* Tinh toan va hien thi */ if (n < 0) n = -n; printf("Abs = %d\n", n); return 0; } 2. Viết chương trình nhập vào một số và trả kết quả về số nhị phân #include <stdio.h> void binairerec(int n) { if (n > 1) binairerec(n/2); printf("%d", n%2); } void binaireite(int n) { int e; int bits[32]; for (e = 0; n > 0; n = n/2, e++) bits[e] = n%2; for (e ; e >= 0; e ) Trang 2 printf("%d", bits[e]); } int main(void) { int n; // Saisie de n printf("n : "); scanf("%d", &n); binairerec(n); printf("\n"); binaireite(n); printf("\n"); return 0; } 3. Xuất ra tam giác Pascal #include <stdio.h> void pascal1(int n) { int l; /* Chi so dong */ int c; /* Chi so cot */ int p[n][n]; /* Bang */ for (l = 0; l < n; l++) { p[l][0] = 1; /* Cot 0 */ p[l][l] = 1; /* Cot l */ /* Cot 1 toi l-1 */ for (c = 1; c < l; c++) p[l][c] = p[l-1][c-1] + p[l-1][c]; } /*Hien thi*/ for (l = 0; l < n; l++) { for (c = 0; c <= l; c++) printf("%d\t", p[l][c]); printf("\n"); } } void pascal2(int n) { Trang 3 int l; /* Chi so dong */ int c; /* Chi so cot*/ int tab1[n]; int tab2[n]; int* connue = tab1; int* calcul = tab2; int* tmp; connue[0] = 0; printf("%d\n", connue[0]); for (l = 1; l < n; l++) { calcul[0] = 1; calcul[l] = 1; for (c = 1; c < l; c++) calcul[c] = connue[c-1] + connue[c]; tmp = connue; connue = calcul; calcul = tmp; for (c = 0; c <= l; c++) printf("%d\t", connue[c]); printf("\n"); } } void pascal3(int n) { int l; int c; int tab[n]; tab[0] = 1; printf("%d\n", tab[0]); for (l = 1; l < n; l++) { tab[l] = 1; for (c = l-1; c > 0; c ) tab[c] = tab[c-1] + tab[c]; Trang 4 for (c = 0; c <= l; c++) printf("%d\t", tab[c]); printf("\n"); } } int main(void) { pascal1(10); pascal2(10); pascal3(10); return 0; } 4. Viết hàm strlength để tính độ dài của một chuỗi : #include <stdio.h> int strlength(char s[]) { int i; for (i = 0; s[i] != '\0'; i++); return i; } int main(int argc, char* argv[]) { if (argc > 1) { printf("%d\n", strlength(argv[1])); } else { printf("strlength <chaine>\n"); } return 0; } 5. Viết hàm delspace để xóa khoảng trắng của chuỗi ký tự. Ví dụ : char s[] = "Xin chao moi nguoi"; delspace(s); printf("s = \"%s\"\n", s); Output sẽ là: "Xinchaomoinguoi"; #include <stdio.h> void delspace(char s[]) { int r; int w; Trang 5 for (w = r = 0; s[r] != '\0'; r++) if (s[r] != ' ' && s[r] != '\t') { s[w] = s[r]; w++; } s[w] = '\0'; } int main(int argc, char* argv[]) { if (argc > 1) { delspace(argv[1]); printf("chaine = \"%s\"\n", argv[1]); } else { printf("delspace <chaine>\n"); } return 0; } 6. Viết chương trình kiếm tra số Armstrong. Ví dụ số 371 là số Armstrong vì : 3 3 + 7 3 + 1 3 = 371. Ta có các số Armstrong như : 0, 1, 153, 370, 407. 1 1. Phần quan trọng nhất của hệ điều hành Linux là: a. File System b. Services c. Kernel d. Shell 2. Số phiên bản kernel của Linux có gì đặc biệt a. Số chẵn là phiên bản ổn định b. Số lẻ là phiên bản thử nghiệm c. Không quan trọng d. Câu a và b đúng 3. Khi cài RedHat Linux ở chế độ nào thì các partion DOS bị xoá hết a. Workstation b. Server c. Workstation and Server d. Không cái nào đúng 4. Kiến trúc Kernel Linux là : a. Static b. Microkernel c. Distributed d. Monolithic 5. Tác giả của phiên bản hệ điều hành Linux đầu tiên là ? a. Bill Gates b. Linus Torvalds c. Alan Turing d. Pascal 6. Để liệt kê các file có trong thư mục hiện hành ta dùng lệnh: a. lệnh ls b. lệnh df c. lệnh du d. lệnh cp 7. Để liệt kê đầy đủ thông tin của các file có trong thư mục hiện hành theo ta dùng lệnh ls với tham số a. –a b. –l c. –x d. –n 8. Để liệt kê các file ẩn trong thư mục hiện hành theo ta dùng lệnh ls với tham số a. –b b. –a c. –l d. –n 9. Để chuyển sang một thư mục khác ta dùng lệnh a. Lệnh cdir [...]... lib2.0 ta dùng câu lệnh A ~root]#gcc -c -pfic lib1.c lib2.c B.~root]#gcc -shared lib1.o lib2.o -o lib12.so C.~root]#gcc -o lib12.so -shared lib1.o lib2.o D ~root]#gcc -o -shared lib1.o lib12.so lib2.o 11 .Tập tin makefile là tập tin A Chứa các thông tin tả cách thức xây dựng và biên dịch chương trình B.Thực thi chương trình C.Cấu hình hệ thống D.Logfile 12.Trình tự các thông tin được đặc tả trong makefe... C./usr/lib/gcc-lib D./usr/local/lib 2.Các tập tin nào sau đây không phải là tập tin thư viện của gcc A.libabc.so 23 B.liba.lib C.libabc.sa D.libab.a 3 .Cho biết tập tin nào sau đây được tạo ra sau khi thực hiện câu lênh sau /root]#gcc main.c A: main.o B.main C.a.out D.a.o 4 Cho biết tập tin nào sau đây được tạo ra sau khi thực hiện câu lênh sau /root]#gcc -c main.c A.main B.main.o C.main.so D.main.sa 5 Cho biết tập. .. nào dưới đây cho phép lấy ra chuỗi “xyz” từ chuỗi string=“xyzabcdefabcxyztuv” a.echo ${string#*xyz} b.echo ${string##*xyz} c.echo ${#string xyz} d.echo ${string% abc*} 122 Những lệnh nào dưới đây cho phép loại chuỗi “xyz” đầu tiên tính từ đầu chuỗi string=“xyzabcdef123xyztuv” a.echo ${string:3} b.echo ${string##*xyz} 15 c.echo ${string#x*y} d.echo ${string%%xyz*} 123 Lệnh nào dưới đây cho phép loại... nào sau đây: A.favc123fau B.u C.abcde D.au 11 Cho một chuỗi : string=abcdefavc 123fau Câu lệnh echo {string %%fa} cho ta kết quả nào sau đây: A.abcdefavc123 B.abcde C.abcdefavc123fa D.abcdefa 12 .Tập tin /etc/group chứa các thông tin về nhóm trong hệ thống.Hãy cho biết câu lệnh sau xuất ra thông tin nào của nhóm: ($(cat /etc/group | grep $GRUID | cut –d: -f4)) A Group ID B Group Name C Group’s Members... array 7 .Cho biết kết quả chạy dòng lệnh sau A.501060 B.501020 C.501010 D.505060 8 .Cho biết kêt quả của phép toán sau: A.10 B.22 C.12 D.120 26 9 Cho biết kêt quả của phép toán sau: A.int(125) B.float(125) C.125 D.int(120) 10 Cho biết kêt quả của phép toán sau: . /etc/mtab b. /etc/mount.conf c. /etc/fstab d. /etc/modules.conf 16. Tập tin nào chứa thông tin các file system đang được mount a. /etc/mntab b. /etc/mount.conf c. /etc/fstab d. /etc/modules.conf. nhóm được đọc, thực thi, other chỉ đọc thì ta làm lệnh nào dưới đây. a. chmod 665 b. chmod 654 c. chmod 653 d. chmod 754 19. Tập tin có dấu chấm “.” Phía trước có đặc tính gì đặc biệt: . c. :wq d. :qw 73. Lệnh nào tương đương với lệnh sau “chmod u+rwx,g=rx,o-rwx myfile” a. chmod 027 myfile b. chmod 757 myfile c. chmod 750 myfile d. Không câu nào đúng 74. Để chuyển về thư

Ngày đăng: 18/04/2014, 15:02

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w