Consider the following program and answer the following questions.
4 phương ánCó giải thích
#include<stdio.h>
void updatePosition(int *time, float* position, float v)
{
if ((*position < 5) && (*position > -5))
*position += v;
else
*position += -0.1*(*position);
time += 1;
}
main()
{
float p = 4.0, v = 1;
int t = 0;
printf("t = %d, p = %f\n", t, p);
updatePosition(&t, &p, v);
updatePosition(&t, &p, v);
printf("t = %d, p = %f\n", t, p);
}What is the result displayed to the screen?
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: "t = 0, p = 4.000000
t = 2, p = 4.500000". Lần gọi đầu, giá trị trỏ tới nằm giữa -5 và 5 nên p tăng thêm v, thành 5.0. Lần gọi sau, điều kiện nhỏ hơn 5 đã sai vì p đúng bằng 5.0, nên nhánh else chạy: p cộng thêm -0.1 nhân 5.0, tức giảm 0.5 còn 4.5. Phải nói thẳng một khuyết điểm của đề: lệnh time += 1 chỉ dịch bản sao con trỏ trong hàm chứ không ghi qua dấu sao, nên t thật sự vẫn là 0, mà cả bốn lựa chọn đều in t = 2; vì vậy chỉ giá trị của p phân định được, và 4.500000 là con số duy nhất đúng. Dòng "t = 0, p = 4.000000
t = 2, p = 6.000000" coi như cả hai lần gọi đều vào nhánh cộng v. Dòng "t = 0, p = 4.000000
t = 2, p = 5.000000" dừng ở kết quả lần gọi đầu. Dòng "t = 0, p = 4.000000
t = 2, p = 4.000000" coi như lần gọi sau trả p về giá trị cũ.
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