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

โปรแกรม C แทนที่เลข 0 ด้วย 1 ในจำนวนเต็ม

ปัญหา: แทนที่หลักศูนย์ (0) ทุกหลักในจำนวนเต็มให้กลายเป็น 1

เช่น 102410 → 112411

อัลกอริทึมแบบ Recursive

  1. ฟังก์ชัน replace(number): ถ้า number == 0 คืน 0
  2. 取หลักสุดท้าย digit = number % 10
  3. ถ้า digit == 0 ตั้ง digit = 1
  4. คืน replace(number/10) * 10 + digit
  5. ฟังก์ชัน Convert(number): ถ้า number == 0 คืน 1 (กรณีเลข 0 เดียว) ไม่งั้นเรียก replace()

โค้ด C

#include <stdio.h>

int replace(long int number) {
    if (number == 0)
        return 0;
    int digit = number % 10;
    if (digit == 0)
        digit = 1;
    return replace(number / 10) * 10 + digit;
}

int Convert(long int number) {
    if (number == 0)
        return 1;
    else
        return replace(number);
}

int main() {
    long int number;
    printf("\nEnter any number : ");
    scanf("%ld", &number);
    printf("\nAfter replacement the number is : %ld\n", Convert(number));
    return 0;
}

ตัวอย่าง Output

Enter any number: 1056110010
After replacement the number is: 1156111111