Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Anda Boleh Mencetak Nombor 1 hingga 1000 dalam C Tanpa Gelung atau Pernyataan Bersyarat?

Bagaimanakah Anda Boleh Mencetak Nombor 1 hingga 1000 dalam C Tanpa Gelung atau Pernyataan Bersyarat?

Susan Sarandon
Lepaskan: 2024-11-30 21:54:14
asal
422 orang telah melayarinya

How Can You Print Numbers 1 to 1000 in C Without Loops or Conditional Statements?

Mencetak 1 hingga 1000 tanpa Looping atau Pernyataan Bersyarat

Dalam dunia pengaturcaraan, ia boleh menjadi mencabar untuk menyelesaikan tugas yang kelihatan mudah tanpa menggunakan gelung konvensional atau sintaks bersyarat. Satu tugas sedemikian ialah mencetak satu siri nombor dari 1 hingga 1000.

Penyusunan ke dalam Perhimpunan Tanpa Bersyarat

Penyelesaian bijak melibatkan penyusunan coretan kod ke dalam arahan pemasangan yang kekurangan syarat. Pertimbangkan kod C berikut:

#include <stdio.h>
#include <stdlib.h>

void main(int j) {
  printf("%d\n", j);
  (&&main + (&&exit - &&main)*(j/1000))(j+1);
}
Salin selepas log masuk

Kod ini menggunakan operator "&&" untuk menghantar penunjuk fungsi dan mengira offset berdasarkan hasil pembahagian "j/1000." Dengan merantai panggilan fungsi, ia secara berkesan mencetak jujukan nombor tanpa gelung atau syarat.

Pendekatan Alternatif dengan Penunjuk Fungsi

Penyelesaian alternatif mematuhi standard C dan tidak bergantung pada aritmetik penuding fungsi:

#include <stdio.h>
#include <stdlib.h>

void f(int j)
{
    static void (*const ft[2])(int) = { f, exit };

    printf("%d\n", j);
    ft[j/1000](j + 1);
}

int main(int argc, char *argv[])
{
    f(1);
}
Salin selepas log masuk

Kod ini menggunakan tatasusunan statik penunjuk fungsi untuk mencapai hasil yang sama seperti contoh sebelumnya. Dengan memilih dan memanggil fungsi ini secara dinamik, ia mengelakkan penggunaan bersyarat atau gelung.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mencetak Nombor 1 hingga 1000 dalam C Tanpa Gelung atau Pernyataan Bersyarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan