一个FLAG #02# 逆序输出

例题3-1 逆序输出

#include<stdio.h>
#define maxn 105
int a[maxn];
int main()
{
    int x, n = 0;
    
    while (scanf("%d", &x) == 1) {
        a[n++] = x;
    }

    // n++是事后增加,所以这里a[n]里没东西
    for (int i = n - 1; i >= 1; --i) {
        printf("%d ", a[i]);
    }
    
    printf("%d
", a[0]);
    
    return 0;
}

例题3-2 开灯问题

#include<stdio.h>
#include<string.h>
#define maxn 1010
int a[maxn];
int main()
{
    int n, k, first = 1; // 为了避免输出
    // 多余空格,设置了一个标志变量first,可
    // 以表示当前要输出的变量是否为第一个。 第一个变
    // 量前不应有空格,但其他变量都有。
    
    memset(a, 0, sizeof(a)); // 数组a清零,它也在string.h中定义
    
    scanf("%d%d", &n, &k); // 有n盏灯,k个人 
    
    for(int i = 1; i <= k; ++i) { // 每个人轮流操作 
        for(int j = 1; j <= n; ++j) {
            if(j % i == 0) {
                a[j] = !a[j]; // 实测!1得0以及!0得1 
            }
        }
    }
    
    
    for(int i = 1; i <= n; i++) {
        if (a[i]) { 
            if (first) {
                first = 0;                   
            } else {
                printf(" ");    
            } 
            printf("%d", i);
        }
    }
    
    printf("
");
    return 0;
}

参考

[1] 为什么大的数组要定义在main函数外? - C语言论坛 - 编程论坛

[2] scanf(计算机语言函数)_百度百科

[3] C 库函数 – scanf() | 菜鸟教程

 

原文地址:https://www.cnblogs.com/xkxf/p/12521214.html