c语言课下作业(第六次「数组」)

#include <stdio.h>
#define MAX_ONE 10 //homeworkone数组的个数
#define PRO 8      //homeworktwo评委的个数

void homeworkOne();   //任意输入10个整数存贮在数组x中,并统计输出正数和负数的个数
void homeworkTwo();   //评分程序,8个评委,满分10分,去掉一个最高,去掉一个最低分,其余6个数平均分,保留两位
void homeworkThree(); //编程实现任意输入10个整数,将这10个数升序排列输出,并且奇数在前,偶数在后
void homeworkFour();  //编程实现把下列矩阵一行和第二行换位置存放并输入
void homeworkFive();  //编程实现求任意3*3矩阵的两条对角线之和

int main(void)
{
    int no, retry;
    do
    {
        printf("请选择你要执行的任务[输入1-5 按回车结束]:");
        scanf("%d", &no);
        switch (no)
        {
        case 1:
            homeworkOne();
            break;
        case 2:
            homeworkTwo();
            break;
        case 3:
            homeworkThree();
            break;
        case 4:
            homeworkFour();
            break;
        case 5:
            homeworkFive();
            break;
        default:
            printf("请输入1-5选择任务");
            break;
        }
        //选择是否再次运行
        printf("是否继续选择任务执行[yes --> 0], [no --> 9]");
        scanf("%d", &retry);
    } while (retry == 0);
}

void homeworkOne()
{
    int i, j;
    int c, z, zero; //c统计负数个数,z统计正数个数,zero为0的个数
    int x[MAX_ONE];

    puts("请输入10个整数。");

    for (i = 0; i < MAX_ONE; i++)
    {
        printf("请输入%d个数:", i + 1);
        scanf("%d", &x[i]);
    }

    c = z = zero = 0;
    for (j = 0; j < MAX_ONE; j++)
    {
        if (x[j] > 0)
            c++;
        else if (x[j] < 0)
            z++;
        else
            zero++;
    }

    printf("正数:%d, 负数:%d, 0的个数%d", c, z, zero);
    putchar('\n');
}

void homeworkTwo()
{
    int i, j;
    double max, min; //记录数组中的最大值与最小值
    double sum, avg;
    ;              //sun记录所有数组的和,avg记录所有数组的平均值
    double a[PRO]; //存储8个评委的分数

    puts("8个评委的打分。");

    for (i = 0; i < PRO; i++)
    {
        do
        {
            printf("第%d个评委打分:", i + 1);
            scanf("%lf", &a[i]);
            if (a[i] < 0 && a[i] <= 10)
                printf("\a注意评委打分为【0-10】分。");
        } while (a[i] > 0 && a[i] <= 10);
    }

    max = min = a[0];
    for (j = 0; j < PRO; j++)
    {
        if (a[j] > max)
            max = a[j];
        if (a[j] < min)
            min = a[j];
    }

    sum = avg = 0;
    for (j = 0; j < PRO; j++)
        sum += a[j];

    putchar('\n');
    printf("去掉一个最高分%.2f,去掉一个最低分%.2f, 最后总分为%.2f", max, min, (sum - max - min) / (PRO - 2));
    putchar('\n');
}

void homeworkThree()
{
    int i, j;
    int m, n; //存放奇偶数的中间变量
    int temp; //用于升序的中间变量
    int a[MAX_ONE], b[MAX_ONE / 2], c[MAX_ONE / 2];

    puts("请输入10个整数。");

    for (i = 0; i < MAX_ONE; i++)
    {
        printf("请输入%d个数:", i + 1);
        scanf("%d", &a[i]);
    }

    for (i = 0; i < MAX_ONE - 1; i++)
    { //用快速排序法排序
        for (j = i + 1; j < MAX_ONE; j++)
            if (a[i] > a[j])
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
    }

    //把排序好的奇偶数分别分给b,c数组
    m = 0;
    n = 0;
    for (i = 0; i < MAX_ONE; i++)
    {
        if (a[i] % 2 == 0)
        {
            b[m] = a[i]; //偶数
            m++;
        }
        else
        {
            c[n] = a[i]; //奇数
            n++;
        }
    }

    for (i = 0; i < MAX_ONE; i++)
    {
        a[i] = c[i];
        if (i >= 5)
        {
            a[i] = b[i - 5];
        }
    }

    puts("正序。");
    putchar('{');
    for (i = 0; i < MAX_ONE; i++)
    {
        printf("%d ", a[i]);
    }
    putchar('}');
}

void homeworkFour()
{
    int i, j;
    int a[2][3], b[2][3];

    puts("请在数组中输入6个数。");

    for (i = 0; i < 2; i++){
         for( j = 0; j < 3; j++)
            {
                printf("请输入第%d行%d列的个数:", i + 1, j + 1);
                scanf("%d", &a[i][j]);
            }
    }

    puts("换行前。");
    for (i = 0; i < 2; i++){
        for( j = 0; j < 3; j++)
            printf("%3d", a[i][j]);
        putchar('\n');
    }

    for (i = 0; i < 2; i++){
        for( j = 0; j < 3; j++)
            if(i == 1)
                b[i][j] = a[i-1][j];
            else
                b[i][j] = a[i+1][j]; 
    }

    puts("换行后。");
    for (i = 0; i < 2; i++){
        for( j = 0; j < 3; j++)
            printf("%3d", b[i][j]);
        putchar('\n');
    }
}

void homeworkFive()
{
    int i, j;
    int a[3][3];
    int temp;

    puts("请在数组中输入9个数。");

    for (i = 0; i < 3; i++){
         for( j = 0; j < 3; j++)
            {
                printf("请输入第%d行%d列的个数:", i + 1, j + 1);
                scanf("%d", &a[i][j]);
            }
    }

    puts("输入的值。");
    for (i = 0; i < 3; i++){
        for( j = 0; j < 3; j++)
            printf("%3d", a[i][j]);
        putchar('\n');
    }

    puts("对角线之和。");

    temp = 0;
    for (i = 0; i < 3; i++){
         for( j = 0; j < 3; j++)
            if(i == j || i + j == 2)
            {
                temp += a[i][j];
                printf(" %d ", a[i][j]);
            }
    }
    printf("=%d", temp+a[1][1]);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值