• 第九次作业


    一、实验内容

    1、实验要求:定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)

    代码:

    #include<stdio.h>
    #define N 100
    void readscore(int score[],int n);
    void printscore(int score[],int n);
    double average(int score[],int n);
    int findmax(int score[],int n);
    int findmin(int score[],int n);
    int findmaxindex(int score[],int n);
    int findminindex(int score[],int n);
    int find(int score[],int n);
    int main()
    {
        int score[N]={0},n=0,i=0,n1,n2,n3;
        printf("输入人数:
    "); 
        scanf("%d",&n);
        readscore(score,n);
        printscore(score,n);
        average(score,n);
        printf("平均数是:%.2f
    ",average(score,n));
        findmax(score,n);
        printf("最高分是%d
    ",findmax(score,n));
        n1=findmaxindex(score,n);
        printf("最高分数的学生为%d号
    ",n1+1);
        findmin(score,n);
        printf("最低分是%d
    ",findmin(score,n));
        n2=findminindex(score,n);
        printf("最低分数的学生为%d号
    ",n2+1);
        n3=find(score,n);
        if(n3!=-1)
        {
            printf("%d号得到这个分数
    ",n3); 
        }
        else
        {
            printf("不存在这个成绩
    ");    
        }
        return 0;
    }
    void printscore(int score[],int n)
    {
        int i;
        printf("学生成绩是:");
        for(i=0;i<n;i++)
        {
            
            printf("%5d",score[i]);
        }
        printf("
    ");
    }
    void readscore(int score[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            printf("输入成绩:
    ");
            scanf("%d",&score[i]);
        }
    }
    double average(int score[],int n)
    {
        int sum=0,i;
        double average;
        for(i=0;i<n;i++)
        {
            sum=sum+score[i];
        }
        average=(double)sum/n;
        return average;
    }
    int findmax(int score[],int n)
    {
        int i=0,max;
        max=score[0];
        for(i=0;i<n;i++)
        {
            if(score[i]>max)
            {
                max=score[i];           
            }
        }
        return max;
    }
    int findmin(int score[],int n)
    {
        int i=0,min;
        min=score[0];
        for(i=0;i<n;i++)
        {
            if(score[i]<min)
            {
                min=score[i];      
            }
        }
        return min;
    }
    int findmaxindex(int score[],int n)
    {
        int i=0,max,n1;
        max=score[0];
        for(i=0;i<n;i++)
        {
            if(score[i]>max)
            {
                max=score[i];
                n1=i;            
            }
        }
        return n1;
    }
    int findminindex(int score[],int n)
    {
        int i=0,min,n2;
        min=score[0];
        for(i=0;i<n;i++)
        {
            if(score[i]<min)
            {
                min=score[i];
                n2=i;            
            }
        }
        return n2;
    }
    int find(int score[],int n)
    {    
        int i=0,n3=0,n4=0;
        printf("输入一个分数:
    ");
        scanf("%d",&n4);
        for(i=0;i<n;i++)
        {        
            if(score[i]==n4)
            {
                n3=i+1;
            }
        } 
        return n3;
    } 

    程序运行结果:

    2、实验要求:定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。

    代码:

    #include<stdio.h>
    int main()
    {
        int a[100],n=0,i;
        for(i=0;i<100;i++)
        {
            a[i]=i+1;
        }
        for(i=0;i<100;i++)
        {
            if(a[i]%3!=0&&a[i]%7!=0)
            {
                printf("%4d",a[i]);
                n++;
                if(n%10==0)
                {
                    printf("
    ");
                }
            }
        }
        printf("有%d个",n);
        return 0;
    }

    程序运行结果:

    附加题

     2. 数字加密:输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。(使用数组)

    代码:

    #include<stdio.h>
    int main()
    {
        int shu[2],n,a,b,c,d;
        printf("请输入一个四位数:
    ");
        scanf("%d",&n);
        a=(n/1000+9)%10;
        b=(n%1000/100+9)%10;
        c=(n%100/10+9)%10;
        d=(n%10+9)%10;
        shu[0]=a*1000+b*100+c*10+d;
        shu[1]=a*10+c*1000+b+d*100;
        printf("%4d经过加9取余后得到新数字%04d,再经过两次换位后得到%04d",n,shu[0],shu[1]);
        return 0;
    }

    程序运行结果:

    二、实验总结:

    1、注意换行时是在循环里面还是外面;

    2、一般情况下,函数中不能有输入输出的语句;

    3、主函数中注意后面函数的书写。

    三、程序分析

    程序1

    #include <stdio.h>
    void swap(int x[]);
    int main()
    {  
         int a[2]={1,2};
        swap(a);
        printf("a[0]=%d
    a[1]=%d
    ",a[0],a[1]);
        return 0;
    }
    void swap(int x[])
    {   
        int z;
        z=x[0];     
        x[0]=x[1];     
        x[1]=z;
    }

    最后a[0]与a[1]的值互换,void里完成交换,因为不需要输出,所以有awap(a),int[]可以由里面的数的变化表示相应的值。

    程序2

    #include <stdio.h>
    void swap(int x,int y);
    int main()
    {
        int a[2]={1,2};
        swap(a[0],a[1]);
        printf("a[0]=%d
    a[1]=%d
    ",a[0],a[1]);
        return 0;
    }
    void swap(int x,int y)
    {  
         int z;
         z=x;
         x=y; 
         y=z;
    }

    x与y的值得交换代表a[0]于a[1]的交换,这里将a[]赋给了一个字母。

  • 相关阅读:
    传输层——UDP报文头介绍
    传输层——TCP报文头介绍
    网络层——IP报文头介绍
    数据链路层——以太网包头介绍
    POJ2752 (Seek the Name, Seek the Fame,kmp)
    POJ2406 Power Strings
    HNOI2008 玩具装箱toy (BZOJ1010,斜率dp)
    Covered Walkway(HDU4258,dp斜率优化)
    HDU3507 Print Article
    POJ1821 Fence
  • 原文地址:https://www.cnblogs.com/zhao-1184346113/p/6115942.html
Copyright © 2020-2023  润新知