• Save
[Ôn thi cao học PTIT - KTLT] Test1
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

[Ôn thi cao học PTIT - KTLT] Test1

on

  • 1,563 views

 

Statistics

Views

Total Views
1,563
Views on SlideShare
1,563
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
1

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • hay
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

[Ôn thi cao học PTIT - KTLT] Test1 Document Transcript

  • 1. I- CHO CHƯƠNG TRÌNH ĐOÁN KẾT QUẢ 1. a) Chứng minh rằng, một chương trình bất kỳ được thể hiện bằng tất cả các cấu trúc lệnh: for, while, do..while, if..else, switch đều có thể chuyển đổi thành một chương trình mới tương đương với việc sử dụng tối thiểu cấu trúc lệnh lặp while và một số biến phụ. b) Áp dụng khẳng định trên chuyển đổi hàm Function1() dưới đây thành một hàm mới tương đương nhưng chỉ được phép sử dụng tối thiểu cấu trúc lệnh lặp while và được phép thêm vào một số biến phụ. int Function1(int A[], int n, int x){ for( int L=0, H=n-1,M=(L+H)/2; L<=H; M=(L+H)/2){ if (x>A[M]) L = M+1; else { if(x<A[M]) H = M-1; else return(M); } } return(-1); } 2. a) Chứng minh rằng, một chương trình bất kỳ được thể hiện bằng tất cả các cấu trúc lệnh: for, while, do..while, if..else, switch đều có thể chuyển đổi thành một chương trình mới tương đương với việc sử dụng tối thiểu cấu trúc lệnh lặp while và một số biến phụ. b) Áp dụng khẳng định trên chuyển hàm Function1() dưới đây thành một hàm mới tương đương nhưng chỉ được phép sử dụng cấu trúc lệnh lặp while và một số biến phụ. int Function1(int A[][MAX], int n) { int H=0; for(int i=1; i<=n; i++){ int S =0; for(int j=1; j<=n; j++){ if(A[i][j]!=A[j][i]) return(2); S = S + A[i][j]; } if (S%2==0) H++; } if(H == n) return(1); else if( H == (n-2)) return(-1); return(0); }
  • 2. 3. a. Hãy cho biết kết quả thực hiện chương trình dưới đây? b. Chuyển đổi chương trình đã cho thành một chương trình mới tương đương nhưng chỉ được phép sử dụng tối thiểu cấu trúc lệnh lặp while và được phép thêm vào một số biến phụ (không được phép dùng các cấu trúc lệnh for, do..while, if..else, và switch)? #include <stdio.h> #include <conio.h> int X[10], n =4, chuaxet[]={1,1,1,1,1},count=0; void Result(void){ printf("n Ket qua buoc %d:",++count); for(int i=1; i<=n; i++) printf("%3d",X[i]); } void Function(int i){ for(int j=1; j<=n; j++){ if(chuaxet[j]){X[i]=j; chuaxet[j]=0; if(i==n) Result(); else Function(i+1); chuaxet[j]=1; } } } void main(void){ Function(1); } 4. a) Hãy cho biết kết quả thực hiện chương trình dưới đây? b) Hãy chuyển đổi chương trình dưới đây thành một chương trình mới tương đương nhưng chỉ được phép sử dụng cấu trúc lệnh lặp while và được phép thêm vào một số biến phụ? Không được phép sử dụng các cấu trúc lệnh khác như if..else, switch, do..while, for. #include <stdio.h> #include <conio.h> #define MAX 100 int X[MAX], n=5,k=3,count =0; void Result(void){ printf("n Ket qua buoc %d:",++count); for(int i=1; i<=k; i++) printf("%5d",X[i]); } void Function1(int i){ for(int j=X[i-1]+1; j<= n-k+i;j++){ X[i]=j; if(i==k) Result(); else Function1(i+1); } } void main(void){ X[0]=0; Function1(1); }
  • 3. 5. c) Hãy cho biết kết quả thực hiện chương trình dưới đây? d) Hãy chuyển đổi chương trình dưới đây thành một chương trình mới tương đương nhưng chỉ được phép sử dụng cấu trúc lệnh lặp while và được phép thêm vào một số biến phụ? Không được phép sử dụng các cấu trúc lệnh khác như if..else, switch, do..while, for. #include <stdio.h> #include <conio.h> int X[10], n =4, count=0; void Result(void){ printf("n Ket qua buoc %d:",++count); for(int i=1; i<=n; i++) printf("%3d",X[i]); } void Function(int i){ for(int j=0; j<=1; j++){ X[i]=j; if(i==n) Result(); else Function(i+1); } } void main(void){ Function(1); } 6. a) Hãy cho biết kết quả thực hiện chương trình dưới đây? b) Chỉ được phép sử dụng cấu trúc lệnh lặp while và được phép thêm vào một số biến phụ, hãy chuyển đổi chương trình đã cho thành một chương trình mới tương đương (không được phép sử dụng các cấu trúc lệnh (for, do..while, if..else, switch )? #include <stdio.h> #include <conio.h> #include <math.h> int nguyen_to(unsigned long int n){ unsigned long int i, k=sqrt(n); for(i=2; i<=k; i++) { if(n%i==0) return(0);} return(1); } void main(void){ unsigned long int n =2677114440; int k=0,i=2, OK=1; do { if(nguyen_to(n)) { printf("n Kết quả bước:%d:%ld",++k ,n); OK=0; } else if (n%i==0){ printf("n Kết quả bước:%d: %d",++k,i); n = n/i;} else i++; } while(OK); }
  • 4. 7. a) Hãy cho biết kết quả thực hiện chương trình dưới đây? b) Chỉ được phép sử dụng cấu trúc lệnh lặp while và được phép thêm vào một số biến phụ, hãy chuyển đổi chương trình đã cho thành một chương trình mới tương đương (không được phép sử dụng các cấu trúc lệnh (for, do..while, if..else, switch )? #include <stdio.h> #include <conio.h> char line[]="000 001 010 011 100 101 110 111 101 110"; void main(void){ clrscr(); int n, m=0, k=0;n = strlen(line);char s[32]; for(int i=0; i<=n; i++){ switch(line[i]){ case ' ' : case 't': case 'n': case 'r': case '0': if (k>0) { s[k]='0';m++;k=0; printf("n Kết quả bước %d:%s",m,s); } break; default: s[k++]=line[i]; break; } } }