missyou7389

New Member

Download miễn phí Đề thi môn lập trình C trên windows





Đề thi mẫu số 2
Thời gian: 60 phút. Được phép sử dụng tài liệu.
Câu 1. Anh (chị) hãy trình bày (phân tích) tổng quát các đặc điểm chính của các ứng dụng trên MS Windows.
Câu 2. Trình bày hiểu biết của anh (chị) về cơ chế GDI của các ứng ụng trên MS Windows - Giải thích quy trình xuất (các) đối tượng đồ họa ra thiết bị xuất (ví dụ xuất ra màn hình). Quy trình này được thể hiện và xử lý như thế nào khi cài đặt chương trình?
Câu 3. Anh (chị) hãy giải thích đoạn code dưới đây, bằng cách cho biết mục đích của chương trình là gì, thể hiện qua các hàm, biến được cài đặt như thế nào; quy trình khi chương trình thực thi trong thực tế ra sao?
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

ĐỀ THI MÔN LẬP TRÌNH C TRÊN WINDOWS
Đề thi mẫu số 1
Thời gian: 60 phút. Được phép sử dụng tài liệu.
Câu 1. Anh (chị) hãy trình bày (phân tích) tổng quát các đặc điểm chính của các ứng dụng trên MS Windows.
Câu 2. Anh (chị) hãy trình bày mô hình thể hiện quy trình nạp và zoom ảnh bitmap? Giải thích mô hình (các hàm) thông qua cơ chế thao tác và thể hiện các đối tượng đồ họa trên MS Windows.
Câu 3. Anh (chị) hãy giải thích đoạn code dưới đây, bằng cách cho biết mục đích của chương trình là gì, thể hiện qua các hàm, biến được cài đặt như thế nào; quy trình khi chương trình thực thi trong thực tế ra sao?
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_COMMAND:
wmId    = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case IDM_GETTEXT:
if(DialogBox(hInst, (LPCTSTR)IDD_GETTEXT, hWnd, (DLGPROC)GetText)==IDOK)
InvalidateRect(hWnd, NULL, TRUE);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szContent, strlen(szContent), &rt, uAlignment);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
LRESULT CALLBACK GetText(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
uAlignment = 0; // uAlignment là một biến toàn cục kiểu UINT
CheckDlgButton(hDlg, IDC_SINGLELINE, BST_CHECKED);
CheckRadioButton(hDlg, IDC_TOP, IDC_BOTTOM, IDC_VCENTER);
CheckRadioButton(hDlg, IDC_LEFT, IDC_RIGHT, IDC_CENTER);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_SINGLELINE:
if(IsDlgButtonChecked(hDlg, IDC_SINGLELINE)==BST_CHECKED)
{
CheckDlgButton(hDlg, IDC_SINGLELINE, BST_UNCHECKED);
EnableWindow(GetDlgItem(hDlg, IDC_TOP), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_VCENTER), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_BOTTOM), FALSE);
}
else
{
CheckDlgButton(hDlg, IDC_SINGLELINE, BST_CHECKED);
EnableWindow(GetDlgItem(hDlg, IDC_TOP), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_VCENTER), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_BOTTOM), TRUE);
}
break;
case IDC_TOP:
case IDC_VCENTER:
case IDC_BOTTOM:
CheckRadioButton(hDlg, IDC_TOP, IDC_BOTTOM, LOWORD(wParam));
break;
case IDC_LEFT:
case IDC_CENTER:
case IDC_RIGHT:
CheckRadioButton(hDlg, IDC_LEFT, IDC_RIGHT, LOWORD(wParam));
break;
case IDOK:
if(IsWindowEnabled(GetDlgItem(hDlg, IDC_TOP)))
{
uAlignment |= DT_SINGLELINE;
if(IsDlgButtonChecked(hDlg, IDC_TOP))
uAlignment |= DT_TOP;
else if(IsDlgButtonChecked(hDlg, IDC_VCENTER))
uAlignment |= DT_VCENTER;
else if(IsDlgButtonChecked(hDlg, IDC_BOTTOM))
uAlignment |= DT_BOTTOM;
}
if(IsDlgButtonChecked(hDlg, IDC_LEFT))
uAlignment |= DT_LEFT;
else if(IsDlgButtonChecked(hDlg, IDC_CENTER))
uAlignment |= DT_CENTER;
else if(IsDlgButtonChecked(hDlg, IDC_RIGHT))
uAlignment |= DT_RIGHT;
GetDlgItemText(hDlg, IDC_CONTENT, szContent, MAX_LOADSTRING); // szContent là biến toàn cục kiểu TCHAR[]
case IDCANCEL:
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}
ĐỀ THI MÔN LẬP TRÌNH C TRÊN WINDOWS
Đề thi mẫu số 2
Thời gian: 60 phút. Được phép sử dụng tài liệu.
Câu 1. Anh (chị) hãy trình bày (phân tích) tổng quát các đặc điểm chính của các ứng dụng trên MS Windows.
Câu 2. Trình bày hiểu biết của anh (chị) về cơ chế GDI của các ứng ụng trên MS Windows - Giải thích quy trình xuất (các) đối tượng đồ họa ra thiết bị xuất (ví dụ xuất ra màn hình). Quy trình này được thể hiện và xử lý như thế nào khi cài đặt chương trình?
Câu 3.  Anh (chị) hãy giải thích đoạn code dưới đây, bằng cách cho biết mục đích của chương trình là gì, thể hiện qua các hàm, biến được cài đặt như thế nào; quy trình khi chương trình thực thi trong thực tế ra sao?
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hDC, hSrcMemDC, hDestMemDC;
HBITMAP       hBmp, hOldBmp, hBlankBmp, hOldBlankBmp;
static RECT      rBmp, rClient;
static POINT ptCenter, ptVirDist;
switch (message)
{
case WM_CREATE:
GetClientRect(hWnd, &rClient);
ptCenter.x = (rClient.right + rClient.left)/2;
ptCenter.y = (rClient.bottom + rClient.top)/2;
ptVirDist.x = BMP_WIDTH/2;  // Ghi chú: BMP_WIDTH và BMP_HEIGHT là
ptVirDist.y = BMP_HEIGHT/2; // kích thước một ảnh trong tập tin tài nguyên
break;              
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
hSrcMemDC = CreateCompatibleDC(hDC);
hDestMemDC = CreateCompatibleDC(hDC);
hBmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_EXAM));  // Ảnh trong tập tin tài nguyên
hBlankBmp = CreateCompatibleBitmap(hDC, rClient.right, rClient.bottom);
hOldBmp = (HBITMAP)SelectObject(hSrcMemDC, hBmp);
hOldBlankBmp = (HBITMAP)SelectObject(hDestMemDC, hBlankBmp);          
rBmp.left = ptCenter.x-ptVirDist.x;
rBmp.top = ptCenter.y-ptVirDist.y;
rBmp.right = ptCenter.x+ptVirDist.x;
rBmp.bottom = ptCenter.y+ptVirDist.y;
StretchBlt(hDestMemDC, rBmp.left, rBmp.top, rBmp.right-rBmp.left, rBmp.bottom-
rBmp.top,  hSrcMemDC, 0, 0, BMP_WIDTH, BMP_HEIGHT, SRCCOPY);
BitBlt(hDC, rBmp.left, rBmp.top, rBmp.right-rBmp.left, rBmp.bottom-rBmp.top,
hDestMemDC, rBmp.left, rBmp.top, SRCCOPY);
SelectObject(hSrcMemDC, hOldBmp);
SelectObject(hDestMemDC, hOldBlankBmp);
DeleteObject(hBmp);
DeleteObject(hBlankBmp);
DeleteDC(hSrcMemDC);
DeleteDC(hDestMemDC);                               
EndPaint(hWnd, &ps);
break;
case WM_SIZE:
GetClientRect(hWnd, &rClient);
ptCenter.x = (rClient.right + rClient.left)/2;
ptCenter.y = (rClient.bottom + rClient.top)/2;
break;              
case WM_LBUTTONDOWN:
if( (rBmp.left-BMP_WIDTH/2)>0 && (rBmp.top-BMP_HEIGHT/2)>0 )
{
ptVirDist.x += BMP_WIDTH/2;
ptVirDist.y += BMP_HEIGHT/2;
InvalidateRect(hWnd, &rClient, TRUE);
}
break;              
case WM_RBUTTONDOWN:
if( (rBmp.left+BMP_WIDTH/2) (rBmp.top+BMP_HEIGHT/2) {
ptVirDist.x -= BMP_WIDTH/2;
ptVirDist.y -= BMP_HEIGHT/2;
InvalidateRect(hWnd, &rClient, TRUE);
}
break;              
case WM_DESTROY:
PostQuitMessage(0);
break;              
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
ĐỀ THI MÔN LẬP TRÌNH C TRÊN WINDOWS
Đề thi mẫu số 3
Thời gian: 90 phút. Không sử dụng tài liệu.
Câu 1. Trình bày hiểu biết của anh (chị) về cơ chế thông điệp của các ứng dụng trên hệ điều hành MS Windows? Với cơ chế này thì lập trình trên MS Windows khác trên MS-DOS như thế nào? Vẽ mô hình xử lý thông điệp và giải thích minh họa qua thông điệp về ký tự (WM_CHAR) khi viết code cho ứng dụng dạng Win32 Application?
Câu 2. Viết chương trình thực hiện thao tác vẽ một hình tròn ra chính giữa màn hình ứng dụng Win32 Application, với bán kính được nhập từ một hộp thoại.
Ghi chú:
Hộp thoại có ID là IDD_GETRADIUS, dạng modal, được gọi hiển thị khi người dùng chọn menu item IDM_GETRADIUS của cửa sổ chính.
Giá trị bán kính nhận được là một số nguyên từ edit có ID là IDC_RADIUS, kiểu Number. Hai nút nhấn còn lại trên hộp thoại có ID tương ứng là IDOK và IDCANCEL.
Màu tô cho hình tròn (kể cả đường biên) là màu đỏ, tức giá trị RGB(255, 0, 0).
Prototype một số hàm tham khảo:
int DialogBox(HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDlgFunc);
BOOL InvalidateRect(HWND hWnd, CONST RECT *lpRect, BOOL bErase);
HDC BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);
BOOL EndPaint(HWND hWnd, CONST PAINTSTRUCT *lpPaint);
BOOL GetClientRect(HWND hWnd, LPRECT lpRect);
HPEN CreatePen(int fnPenStyle, int nWidth, COLORREF crColor);
HBRUSH CreateSolidBrush(COLORREF crColor);
HGDIOBJ SelectObject(HDC hDC, HGDIOBJ hGDIObj);
BOOL DeleteObject(HGDIOBJ hGDIObj);
BOOL Ellipse(HDC hDC, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
UINT GetDlgItemInt(HWND hDlg, int iIDDlgItem, BOOL *lpTranslated, BOOL bSigned);
BOOL EndDialog(HWND hDlg, int nResult);
C...
 

Các chủ đề có liên quan khác

Top