Hãy trả lời các yêu cầu tương ứng... - 0.5 đ Nhập vào một mảng một chiều gồm A phần tử số nguyên, yêu cầu: dùng con trỏ và cấp phát bộ nhớ động.
Trang 1TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM
KHOA ĐIỆN – ĐIỆN TỬ
BM: KT MÁY TÍNH VÀ VIỄN THÔNG
ĐÁP ÁN CUỐI KỲ HK 1 NĂM HỌC 2018 - 2019 Môn: Ngôn ngữ lập trình C
Mã môn học: CPRL130064
Đề số/Mã đề: CPRL1300641
TRẮC NGHIỆM (4.0 đ)
Cho các chương trình (với các dòng lệnh được đánh số thứ tự) như bên dưới Hãy trả lời các yêu
cầu tương ứng
{
return 0;
else
return x;
}
{
for(i = 0; i < 5; i++)
a[i] = i;
printf("%d \n", i); (16)
for(i = 0; i < 5; i++)
printf printf ("%d ", a[i]);
(20)
printf("\n");
for( i = 0; i < 5; i++)
printf("%d ",a[i]); (26)
(27)
int d = 0;
for(i = 0; i < 5; i++)
Thư viện ở dòng lệnh (1) được khai báo cho hàm nào trong chương trình:
printf,
Phép % ở dòng lệnh (5) là phép toán gì: Chia lấy dư
Sau khi thực thi hết dòng lệnh (13), giá trị biến i là:
Không xác định
Sau khi thực thi hết dòng lệnh (16), kết quả in ra màn hình là:
5 Sau khi thực thi hết dòng lệnh (20), kết quả in ra màn hình là:
0 1 2 3 4
Sau khi thực thi hết dòng lệnh (26), kết quả in ra màn hình là:
1 2 4 Hãy viết lại dòng (25) và (26) dùng lệnh switch sao cho chức năng không thay đổi:
switch (a[i] % 3){
case 0:
break;
default:
printf("%d ", a[i]);}
} Lệnh d++; ở dòng lệnh (41) tương
đương với lệnh gì:
Trang 2if(a[i]%2 == 0)
printf("\n %d",d); (42)
for(i = 0 ; i < 5; i++)
a[i] = Func1(a[i]);
for(i = 0; i < 5; i++)
printf("%d ", a[i]);
(51) getch();
}
d = d + 1 Sau khi thực thi hết dòng lệnh (42), kết quả in ra màn hình là:
3
Lệnh ở dòng (48) có tác dụng gì: Con trỏ xuống dòng về đầu dòng
Sau khi thực thi hết dòng lệnh (51), kết quả in ra màn hình là:
0 0 2 0 4
#include <conio.h>
void main (void)
{
int a[4] = {2,4,6,8};
int *x, i;
printf("%d\n", *x + 1); (12)
printf("%d\n", *(x + 2)); (15)
x = a;
printf("%d\n", *x); (19)
getch();
}
Lệnh ở dòng lệnh (9) thực thi công việc gì: .Lấy địa chỉ của a[1]gán vào x Sau khi thực thi hết dòng lệnh (12), kết quả in ra màn hình là:
5 Sau khi thực thi hết dòng lệnh (15), kết quả in ra màn hình là: 8
Sau khi thực thi hết dòng lệnh (19), kết quả in ra màn hình là:
2
Trang 3
TỰ LUẬN (6.0 đ)
Câu 1 (1.5 đ) Viết MỘT chương trình C xử lý tất cả các yêu cầu sau:
- (1.0 đ) Nhập mảng một chiều gồm 200 phần tử số nguyên, yêu cầu: chỉ chấp nhận và lưu số
DƯƠNG vào mảng
- (0.5 đ) Sắp xếp và in ra mảng theo trật tự giảm dần
#include <stdio.h>
#include <conio.h>
void main(void)
{
int a[200],i,hold,j; ………
for (i = 0; i < 200; i++) ………
{
printf("Nhap phan tu thu %d:\n", i + 1);
scanf_s("%d", &a[i]); ………
while (a[i] <= 0) ………
{
printf("Nhap lai phan tu thu %d:\n", i + 1);
scanf_s("%d", &a[i]);
}
}
for (j = 1; j < 200; j++){
for (i = 0; i < 199; i++)
{
if (a[i] < a[i + 1]) {
hold = a[i];
a[i] = a[i + 1];
a[i + 1] = hold;
} }
}
for (i = 0; i < 200; i++){ ………
printf("%d ", a[i]);
}
_getch();
}
0.25đ 0.25đ
0.25đ 0.25đ
0.25đ
0.25đ
Câu 2 (1.0 đ) Viết MỘT chương trình C, xử lý các yêu cầu sau:
- (0.5 đ) Nhập vào mảng 2 chiều 16 hàng x151cột các phần tử số nguyên
- (0.5 đ) Cho biết trong mảng có hay không có số lẻ
#include <stdio.h>
#include <conio.h>
void main(void)
{
int a[16][151], i, j, dem = 0; ………
for (j = 0; j < 16; j++){
for (i = 0; i < 151; i++){
printf("Nhap phan tu hang %d cot %d:\n", j + 1, i + 1);
scanf_s("%d", &a[j][i]);
}
} ………
for (j = 0; j < 16; j++){
for (i = 0; i < 151; i++){
0.25đ
0.25đ
Trang 4if (a[j][i] % 2 == 1) dem++;
}
} ………
if (dem == 0) ………
printf("Mang khong co so nguyen le");
else
printf("Mang co so nguyen le");
_getch();
}
0.25đ 0.25đ
Câu 3 (1.5 đ) Viết MỘT chương trình C xử lý các yêu cầu sau:
- (0.5 đ) Nhập vào một số nguyên A, yêu cầu: chỉ chấp nhận giá trị A > 0
- (0.5 đ) Nhập vào một mảng một chiều gồm A phần tử số nguyên, yêu cầu: dùng con trỏ và cấp phát bộ nhớ động
- (0.5 đ) In ra số lớn nhất của mảng vừa nhập
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main(void)
{
int i, A, max, *p;
printf("Nhap so nguyen A:\n");
scanf_s("%d", &A); ………
while (A <= 0){
printf("nhap lai so nguyen A!");
scanf_s("%d", &A); ………
}
p = (int*)malloc(A*sizeof (int)); ………
for (i = 0; i < A; i++){
printf("Nhap so phan tu thu %d:\n", i + 1);
scanf_s("%d", &*(p+i)); ………
} max = *p; ………
for (i = 1; i < A; i++){
if (max < *(p+i)) ………
max = *(p+i);
}
printf("so lon nhat la: %d", max);
free(p);
_getch();
}
0.25đ
0.25đ
0.25đ
0.25đ
0.25đ
0.25đ
Câu 4 (0.5 đ) Viết (định nghĩa) HÀM bằng ngôn ngữ C thực hiện công việc: tìm số lớn nhất trong
hai số nguyên Hàm có:
- Tham số đầu vào: 2 số nguyên
- Kết quả trả về: số lớn nhất trong 2 số đầu vào
Trang 5int TimSoLon(int x, int y){ ………
if (x > y) ………
return x;
else
return y;
}
0.25đ 0.25đ
Câu 5 (1.5 đ) Viết MỘT chương trình C xử lý:
- (0.5 đ)Định nghĩa(tạo) một kiểu cấu trúc DonHang để quản lý đơn hàng của khách hàng, gồm các thành phần:
+ Mã đơn hàng (ma): kiểu int
+ Tên khách hàng (ten): kiểu char
+ Số điện thoại (sodt): kiểu int
+ Tổng tiền (tien): kiểu int
- (0.5 đ) Nhập dữ liệu cho danh sách đơn hàng của 300 khách hàng từ bàn phím
- (0.5 đ) Hãy cho biết trong danh sách vừa nhập có hay không có đơn hàng của khách hàng có số điện thoại là: 0909123456
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define Max 300
struct DonHang { ………
int ma, sodt, tien;
char ten[10]; }; ………
void main(void){
struct DonHang sdh[Max]; ………
int i, dem = 0, a;
for (i = 0; i < Max; i++) {
printf("Nhap vao ma don hang thu %d: ", i + 1);
scanf_s("%d", &sdh[i].ma);
_flushall();
printf("Nhap vao ten khach hang: ");
scanf_s("%c", &sdh[i].ten[i]);
_flushall();
printf("Nhap vao so dien thoai: ");
scanf_s("%d", &sdh[i].sodt);
_flushall();
printf("Nhap vao so tien: ");
scanf_s("%d", &sdh[i].tien);
_flushall(); ………
}
a = atoi("0909123456");
for (i = 0; i < Max; i++){
if ((sdh[i].sodt) == a)
dem++; ………
}
if (dem !=0) ………
printf("co don hang so dien thoai 0909123456\n");
else
printf("Khong co don hang cua so dien thoai 0909123456\n");
_getch();
}
0.25đ
0.25đ
0.25đ
0.25đ
0.25đ
0.25đ
Trang 6
Ngày 18 tháng 12 năm 2018
Thông qua bộ môn