南京邮电大学 高级语言程序设计 第六章 数组 MOOC编程作业

1.算算是第几天?(10分)

题目内容:

给定一个日期,数据格式为YYYY-MM-DD,输出这个日期是该年的第几天。

提示:一年十二个月每个月的天数可以作为一维数组的元素

输入格式:

输入代表这个日期的年月日信息,scanf语句中的格式控制串为: "%d-%d-%d"

输出格式:

输出是当年的第几天 printf中的格式控制串为 "%d\n"

输入样例:

2018-9-11

输出样例:

254

时间限制:500ms 内存限制:32000kb

#include <stdio.h>

int main() {
    int year, month, day;
    int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    // 从输入中读取年月日信息
    scanf("%d-%d-%d", &year, &month, &day);

    // 判断闰年
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
        days[2] = 29;  // 闰年二月有29天
    }

    // 计算天数
    int totalDays = 0;
    for (int i = 1; i < month; i++) {
        totalDays += days[i];
    }
    totalDays += day;

    // 输出结果
    printf("%d\n", totalDays);
    
    return 0;
}

2.生成指定的数列(10分)

题目内容:

编写程序:编写函数fun,求出a到b之内能被7或者11整除,但不能同时被7和11整除的所有正数,并将他们放在数组中,函数返回这些数的个数。编写main函数,定义一个整型数组,可容纳1000个元素,定义整型变量a,b,输入a,b的值(输入时a小于等于b)并调用函数fun进行求解,最后在main函数中输出所有符合条件的元素。

提示: fun的函数原型为: int fun(int a,int b,int r[ ] );  其中的r用于存放a,b之间满足条件的所有元素

输入格式:

输入表示范围的两个整数a和b(a<b)

scanf的格式控制串为 "%d%d"

输出格式:

输出满足条件的所有元素

输出每个元素时用格式串"%d", 不同元素间以一个空格分隔,但是最后一个元素之后没有空格,输出后直接换行

输入样例:

1 20

输出样例:

7 11 14

时间限制:500ms内存限制:32000kb

#include <stdio.h>

int fun(int a, int b, int r[]) {
    int count = 0;
    
    for (int i = a; i <= b; i++) {
        if ((i % 7 == 0 || i % 11 == 0) && !(i % 7 == 0 && i % 11 == 0)) {
            r[count] = i;
            count++;
        }
    }
    
    return count;
}

int main() {
    int a, b;
    int r[1000];
    
    scanf("%d%d", &a, &b);
    
    int count = fun(a, b, r);
    
    for (int i = 0; i < count; i++) {
        printf("%d", r[i]);
        if (i != count - 1) {
            printf(" ");
        }
    }
    printf("\n");
    
    return 0;
}

3.求数组元素的平均值(10分)

题目内容:

定义一个含10个整型元素的一维数组,从键盘上输入10个元素值,求去掉最大值和最小值之后的元素平均值.

输入格式:

用循环控制依次输入10个元素值,scanf语句中的格式控制串为: "%d"

输出格式:

输出平均值, printf中的格式控制串为 "%lf\n"

输入样例:

2 3 4 5 6 2 4 6 4 3

输出样例:

3.833333

时间限制:500ms内存限制:32000kb

#include <stdio.h>

int main() {
    int arr[10];

    // 输入10个元素值
    for (int i = 0; i < 10; i++) {
        scanf("%d", &arr[i]);
    }

    int max = arr[0], min = arr[0], countmax = 1, countmin = 1;
    double sum = arr[0];
    // 计算最大值和最小值,并统计它们在数组中的出现次数
    for (int i = 1; i < 10; i++) {
        if (arr[i] > max) {
            max = arr[i];
            countmax = 1;
        } else if (arr[i] == max) {
            countmax++;
        }

        if (arr[i] < min) {
            min = arr[i];
            countmin = 1;
        } else if (arr[i] == min) {
            countmin++;
        }

        sum += arr[i];
    }

    // 计算去掉最大值和最小值后的元素和,以及剩余元素的数量
    double avg = (sum - max * countmax - min * countmin) / (10 - countmax - countmin);

    // 输出平均值
    printf("%lf\n", avg);

    return 0;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值