水仙花、排序、函数调用

几道作业,给学生看一下,要考试了,要读懂代码,不要硬抄袭!

作业:
1. 编写完整的程序打印输出所有”水仙花数”,”水仙花数”即一个三位数,
其各位立方和等于其本身的数。
2.编写完整的程序:从键盘上输入全班同学的30个成绩,要求存放在数组的a[1]-a[30]中,请编程实现对此30个成绩实现由大到小的排序。
3.编写完整的程序:计算并显示全班同学某门课程考试成绩的平均分、最高分和最低分(设全班30个同学的成绩存放在数组s[0]-s[29]中)。请对计算平均分、最高分和最低分各自定义一个函数,用数组名作为函数的参数,用函数调用的方式进行编程。

第一题,代码如下:

/*

 编写完整的程序打印输出所有"水仙花数""水仙花数"即一个三位数,
其各位立方和等于其本身的数。

*/

#include <stdio.h>

void main()
{
    int i,j,k,n;

    for(n=100; n<=999; n++)
    {
        i=n/100;        //  百位
        j=n%100/10;     //  十位
        k=n%10;         //  个位

        if(n == i*i*i + j*j*j + k*k*k)
        {
            printf("%d ",n);
        }
    }
    printf("\n");
}

结果如下:
这里写图片描述

第二题,代码如下:
以五个人的成绩为例。

/* 

编写完整的程序:从键盘上输入全班同学的30个成绩,
要求存放在数组的a[1]-a[30]中,请编程实现对此30
个成绩实现由大到小的排序。

 */
#include <stdio.h>
#define N 5

void main()
{
    int i,j;
    int t;      //  中间变量
    int score[N]={0};       //  加入成绩都是整数
    printf("请输入%d位成绩:",N);
    for(i=0; i<N; i++)
    {
        scanf("%d",&score[i]);
    }
    // 冒泡排序 
    for(i=1; i<N; i++)
    {
        for(j=0;j<N-i;j++)
        {
            if(score[j]>score[j+1])
            {
                t=score[j];
                score[j]=score[j+1];
                score[j+1]=t;
            }
        }
    }

    for(i=0; i<N; i++)
    {
        printf("%d ",score[i]);
    }
    printf("\n");

}

结果如下:
这里写图片描述

第三题,代码如下:

/*
编写完整的程序:计算并显示全班同学某门课程考
试成绩的平均分、最高分和最低分(设全班30个同
学的成绩存放在数组s[0]-s[29]中)。请对计算平
均分、最高分和最低分各自定义一个函数,用数组
名作为函数的参数,用函数调用的方式进行编程。

*/

#include <stdio.h>
#define N 5

void main()
{
    float avg(int a[]);
    int max(int a[]);
    int min(int a[]);
    int Max,Min,i;
    float Avg;
    int score[N]={0};       //  假使分数都为整数
    printf("请输入%d个成绩值:",N);
    for(i=0; i<N; i++)
    {
        scanf("%d",&score[i]);
    }

    Avg=avg(score);
    Max=max(score);
    Min=min(score);
    printf("平均分:%0.2f\n",Avg);
    printf("最大值:%d\n",Max);
    printf("最小值:%d\n",Min);
}

// 平均值 
float avg(int a[])
{
    int i;
    int sum=0;
    for(i=0; i<N; i++)
    {
        sum = sum+a[i];
    }
    return (float)sum/N;
}

// 最大值 
int max(int a[])
{
    int i;
    int Max;
    Max = a[0];
    for(i=0; i<N; i++)
    {
        if(Max<a[i])
        {
            Max=a[i];
        }
    }

    return Max;
}

// 最小值 
int min(int a[])
{
    int i;
    int Min;
    Min = a[0];
    for(i=0; i<N; i++)
    {
        if(Min>a[i])
        {
            Min=a[i];
        }
    }

    return Min;
}

结果,如下:
这里写图片描述

同学们,可以参考,完全可以自己完成这样简单的代码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小材大用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值