Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C หาผลรวมและผลต่างด้วย Pointer ในฟังก์ชัน


คำอธิบายปัญหา

สมมติว่าเรามีตัวเลข 2 ตัว a และ b เราต้องนิยามฟังก์ชันที่คำนวณ (a + b) และ (a - b) พร้อมกัน แต่ฟังก์ชันใน C คืนค่าได้สูงสุด 1 ค่า เพื่อคืนค่าหลายค่า เราใช้ Output Parameters ผ่าน Pointer โดยส่งที่อยู่ของตัวแปรเข้าไป ฟังก์ชันจะอัปเดต a เป็น a+b และ b เป็น a-b

ตัวอย่าง

หากอินพุตเป็น a = 5, b = 8 ผลลัพธ์จะเป็น a + b = 13 และ a - b = -3

ขั้นตอนการแก้ปัญหา

  1. นิยามฟังก์ชัน solve() รับที่อยู่ของ a และ b (int *a, int *b)
  2. คำนวณ temp = *a + *b (เก็บผลรวมไว้ชั่วคราว)
  3. อัปเดต *b = *a - *b (ผลต่าง)
  4. อัปเดต *a = temp (ผลรวม)

โค้ดตัวอย่าง

#include <stdio.h>

void solve(int *a, int *b) {
    int temp = *a + *b;
    *b = *a - *b;
    *a = temp;
}

int main() {
    int a = 5, b = 8;
    solve(&a, &b);
    printf("a + b = %d and a - b = %d", a, b);
    return 0;
}

อินพุต

a = 5, b = 8

เอาต์พุต

a + b = 13 and a - b = -3