Which of the following switch statement will correctly compute the result for the expression 5 * 4?
4 phương ánCó giải thích
double result;
char op = '*';
int num1 = 5, num2 = 4;
switch (op) {
case '+': result = num1 + num2; break;
case '-': result = num1 - num2; break;
case '*': result = num1 * num2; break;
case '/': if (num2 != 0) result = num1 / num2; break;
default: printf("Invalid Operator");
}
printf("%d", result);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: "20". Biến op mang hằng ký tự dấu nhân, nên switch rẽ vào đúng nhãn khớp với ký tự đó và thực hiện result bằng num1 nhân num2, tức 5 nhân 4 bằng 20, rồi break thoát switch. Cần công bố một khuyết điểm của đề: result khai báo kiểu double nhưng lại in bằng đặc tả số nguyên, đây là sai khớp định dạng nên con số hiện trên màn hình không được bảo đảm; câu hỏi chỉ xét giá trị mà switch tính ra, và giá trị đó là 20. Lựa chọn "9" là kết quả của nhánh cộng, chỉ chạy nếu op mang dấu cộng. Lựa chọn "1.25" là 5 chia 4 theo nghĩa thực, nhưng nhánh chia không được chọn, và hơn nữa num1 chia num2 giữa hai số nguyên sẽ cho 1 chứ không phải 1.25. Lựa chọn "0" ứng với trường hợp result chưa bao giờ được gán, tức op không khớp nhãn nào và chỉ nhánh mặc định chạy.
Cùng phần 3
What will be the output of the following C code?
#include <stdio.h>
void main()
{
int x = 0;
if (x == 0)
printf("Hi");
else
printf("How are you");
printf("Hello");
}Có lời giảiCâu hỏiHow does a "for" loop differ from a "while" loop in C programming?Có lời giảiCâu hỏiIn a C program, what happens if none of the conditions in an if-else statement are true?Có lời giảiCâu hỏiCả 40 câu của chủ đề40 câu
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây