theo dõi

Gần nhất :

Tags

Thống kê câu hỏi

Chuyên mục : Lập trình
Topic : C++
Hỏi lúc:
Lượt xem: 1,270

Làm thế nào tôi có thể in 1-100 trong C ++ mà không có một vòng lặp, goto hoặc đệ quy?

Hoàng Ngọc Minh Hoàng Ngọc Minh
 00  01  00
1,270 xem 04 theo dõi 00 hữu ích hỏi –

Bạn biết ai đó có thể trả lời câu hỏi này?. Bạn có thể giúp đỡ bằng cách tìm những người giỏi nhất:

user user user user user

Trần Ðức Siêu Trần Ðức Siêu
 02  00  02

1. Sử dụng các cuộc gọi hệ thống.

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

#include <unistd.h>
#include <sys/types.h>
#include <signal.h>

int i = 0;
void sig_alarm_handler(int signal) {
    ++i;
    printf("%d\n", i);
    if(i < 100)
        alarm(1);
    else
        exit(0);
}

int main() {
    signal(SIGALRM, sig_alarm_handler);
    alarm(1);
    int x;
    scanf(" %d",&x);
    return 0;
}

2. Sử dụng fread và fwrite.

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

int main() {
    FILE* fd = fopen("data.txt", "r");
    char buf[10000];
    size_t n = fread(buf, sizeof(char), 10000, fd);
    fwrite(buf, sizeof(char), n, stdout);
    fflush(stdout);
    fclose(fd);
    return 0;
}

3. Mapping 1 file vào bộ nhớ.

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

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>

int main() {
    int fd = open("data.txt", O_RDONLY);
    struct stat stat_data;
    fstat(fd, &stat_data);
    off_t file_size = stat_data.st_size;

    // Memory map the file
    void* baseaddr = mmap(NULL, file_size, PROT_READ, MAP_PRIVATE, fd, 0);
    // Copy the memory mapped region to stdout
    fwrite((char*)baseaddr, sizeof(char), file_size, stdout);
    fflush(stdout);

    // Unmap the memory mapped region
    munmap(baseaddr, file_size);

    // Close the file
    close(fd);
    return 0;
}

4. Sử dụng struct.

#include <stdio.h>

template<int N>
struct X : X<N-1> {
    X() { printf("%d\n", N); }
};

template<>
struct X<0> {};

int main() {
    X<100> x;
    return 0;
}

5. Sử dụng biến tĩnh và 1 mảng.

#include <stdio.h>

struct X {
    static int i;

    X() { ++i; printf("%d\n", i); }
};

int X::i = 0;

int main() {
    X arr[100];
    return 0;
}

Ngon ngay

1,039 xem 00 hữu ích trả lời –
Lý Minh Thuận Lý Minh Thuận
 00  00  01

Thế này là dễ nhất nè:

#include <iostream>

int main() {
    std::cout << "1";
    std::cout << "2";
...
    std::cout << "100";
    std::cout << std::endl;
    return 0;
}

Xong luôn, haha

1,005 xem 00 hữu ích trả lời –
Hoàng Trọng Hùng Hoàng Trọng Hùng
 00  01  01

Mình có vài cách khác đấy:

Cách 1:

#include <iostream>

int num = 0;

class A {
    public:
        A() {
            std::cout << ++num << std::endl;
        }
};

int main() {
    A a[100];
    return 0;
}

Cách 2:

#include <csetjmp>
#include <iostream>
using namespace std;
int main()
{
    jmp_buf b;
    int x = 1;
    setjmp(b);
    cout << x++ << endl;
    if (x <= 100)
        longjmp(b, 1);
    return 0;
}
1,008 xem 00 hữu ích trả lời –