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

โปรแกรม C พิมพ์ตัวเลข 1 ถึง N โดยไม่ใช้เซมิโคลอน (Semicolon)


ที่นี่เราจะดูวิธีแก้ปัญหาแบบ tricky เราจะพิมพ์ตัวเลขจาก 1 ถึง N โดยไม่ใช้เซมิโคลอนเลย

เราสามารถแก้ปัญหานี้ได้ 2 วิธี วิธีแรกคือวิธีวนซ้ำ (Iterative method) และวิธีที่สองคือวิธีเรียกซ้ำ (Recursive method)

วิธีที่ 1

ฟังก์ชัน printf() คืนค่าความยาวของสตริง ดังนั้นจึงเป็นค่าที่ไม่ใช่ศูนย์ เราสามารถทำ AND แบบตรรกะ (logical AND) กับเงื่อนไขเพื่อพิมพ์ผลลัพธ์ แล้วเพิ่มค่าตัวนับ

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

#include <stdio.h>
#define N 20

int main(int num, char *argv[]) {
    while (num <= N && printf("%d ", num) && num++) {
        // ส่วน body ของ while ว่างเปล่า
    }
}

ผลลัพธ์

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

วิธีที่ 2

ในวิธีที่สอง เราจะดูวิธีทำงานเดียวกันโดยใช้การเรียกซ้ำ (recursion) เราจะส่งอาร์กิวเมนต์บางอย่างกับฟังก์ชัน main ฟังก์ชัน main นี้จะถูกเรียกซ้ำ

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

#include <stdio.h>
#define N 20

main(int val) {
    if (val <= N && printf("%d ", val) && main(val + 1)) {
        // Body ว่างเปล่า
    }
}

ผลลัพธ์

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20