Code

#include <stdio.h>

// Hàm nhận con trỏ kép (pointer to pointer)
void reassign_based_on_value(int **pp, int *n2_ptr) {
    // **pp: Lấy giá trị mà con trỏ p đang trỏ tới
    // *pp: Lấy địa chỉ mà con trỏ p đang lưu
    
    int value = **pp;  // Lấy giá trị tại địa chỉ mà p trỏ tới
    
    // Kiểm tra giá trị chẵn hay lẻ
    if (value % 2 == 0) {
        // Nếu chẵn: cho p trỏ sang n2
        *pp = n2_ptr;
    }
    // Nếu lẻ: giữ nguyên (p vẫn trỏ vào n1)
}

int main() {
    int n1, n2;
    scanf("%d %d", &n1, &n2);
    
    int *p = &n1;  // Ban đầu p trỏ vào n1
    
    // Truyền địa chỉ của con trỏ p (&p) và địa chỉ của n2 (&n2)
    reassign_based_on_value(&p, &n2);
    
    printf("%d", *p);  // In giá trị mà p đang trỏ tới
    
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

10 50

Expected Output

50