What will the following program print?
4 phương ánCó giải thích
#include <stdio.h>
int hours_and_minutes2(int total, int *pminutes) {
return (*pminutes = total % 60, total / 60);
}
int main() {
int minutes;
printf("Hours: %d, Minutes: %d\n", hours_and_minutes2(135, &minutes), minutes);
return 0;
}Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "Hours: 2, Minutes: 15". Lệnh trả về của hàm dùng toán tử phẩy: vế trái gán 135 phần trăm 60, tức phần dư 15, vào chỗ pminutes trỏ tới chính là biến minutes của hàm chính; vế phải lấy 135 chia 60 mà cả hai đều là số nguyên nên đó là phép chia lấy phần nguyên, cho 2. Giá trị của một biểu thức phẩy chính là giá trị vế phải, nên hàm trả về 2 và lệnh in xuất 2 cho giờ, 15 cho phút. Dãy "Hours: 2, Minutes: 30" đòi phần dư 30, nhưng 135 bớt đi hai lần 60 chỉ còn 15. Dãy "Hours: 3, Minutes: 15" đòi thương 3, trong khi ba lần 60 đã vượt quá 135. Dãy "Hours: 3, Minutes: 30" sai cả hai phần theo đúng hai lý do vừa nêu. Cần biết thêm rằng chuẩn C không ấn định thứ tự tính các đối số của một lời gọi, nên mã kiểu này chỉ cho kết quả như trên khi lời gọi hàm được tính trước lúc lấy giá trị của minutes.
Cùng phần 5
What will be the output of the following C code?
#include <stdio.h>
void main()
{
int *ptr, a = 10;
ptr = &a;
*ptr += 1;
printf("%d,%d\n", *ptr, a);
}Có lời giảiCâu hỏi(Choose 1 answer)
What is the output of this C code?
#include <stdio.h>
#include <conio.h>
int main() {
int n = 267, *pn = &n;
char* pc = pn;
*pc = 0;
printf("n = %d", n);
return 0;
}Có lời giảiCâu hỏiWhat will be the output of the C program?
int arr[5] = { 2, 3, 5, 4, 7 };
int *ptr = (&arr + 1);
printf("%d %d\n", *(arr + 1), *(ptr - 1));Có lời giảiCâu hỏiCả 41 câu của chủ đề41 câu
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây