• 第九次作业


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

    # include <stdio.h>
    # define N 100
    void scan(int score[],int n);//输入数据 
    int average(int score[],int n);//平均数 
    int maxindex(int score[],int n,int a[]);//最大值下标 
    int minindex(int score[],int n,int a[]);//最小值下标
    void search(int score[],int n);//查找
    void sort(int score[],int n);//排序
    void print(int score[],int n);//输出 
    int main()
    {
        int i,a[N]={0},c[N]={0},d,score[N],n,max1,min1,maxindex1,minindex1; 
        double ave;
        printf("请输入人数:
    ");
        scanf("%d",&n);
        printf("请输入成绩:
    ");
        scan(score,n);
        ave=average(score,n);
        maxindex1=maxindex(score,n,a);
        max1=score[a[0]-1];
        minindex1=minindex(score,n,c);
        min1=score[c[0]-1];
        printf("平均数%.2f
    ",ave);
        printf("最大值是%d
    ",max1);
        for(i=0;i<=maxindex1;i++)
        {
            if(a[i]>0)
            {
                printf("%d号
    ",a[i]);
            }    
        }
        printf("最小值是%d
    ",min1);
        for(i=0;i<=minindex1;i++)
        {
            if(c[i]>0)
            {
                printf("%d号
    ",c[i]);
            }        
        }    
        printf("
    ");
        search(score,n);
        printf("
    ");
        sort(score,n);
        print(score,n);
        return 0;    
    } 
    void scan(int score[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            scanf("%d",&score[i]);
        }    
    }
    int average(int score[],int n)
    {
        int sum,i;
        sum=0;
        for(i=0;i<n;i++)
        {
            sum+=score[i];
        }
        return (double)sum/n;
    }
    int maxindex(int score[],int n,int a[])
    {
        int i,j,b;
        b=score[0];
        j=0;
        for(i=1;i<n;i++)
        {
            if(b<score[i])
            {
                b=score[i];
            }
        }
        for(i=0;i<n;i++)
        {
            if(b==score[i])
            {
                a[j]=i+1;
                j++;
            }
        }
        return j-1;
    }
    int minindex(int score[],int n,int a[])
    {
            int i,j,b;
        b=score[0];
        j=0;
        for(i=1;i<n;i++)
        {
            if(b>score[i])
            {
                b=score[i];
            }
        }
        for(i=0;i<n;i++)
        {
            if(b==score[i])
            {
                a[j]=i+1;
                j++;
            }
        }
        return j-1;    
    }
    void search(int score[],int n)
    {
        int i,a,flag;
        flag=0;
        printf("请输入要查找的数据:
    ");
        scanf("%d",&a);
        for(i=0;i<n;i++)
        {
            if(a==score[i])
            {
                printf("%d号 ",i+1);
                flag=1;
            }
        }
        if(flag==0)
        {
            printf("您要查询的成绩不存在
    ") ;
        }
    }
    void sort(int score[],int n)
    {
        int a,i,j,x,flag;
        
        for(i=0;i<n;i++)
        {
            flag=0;
            for(j=0;j<n-1;j++)
            {
                if(score[j]<score[j+1])
                {
                    a=score[j];
                    score[j]=score[j+1];
                    score[j+1]=a;
                }
                else
                {
                    flag=1;
                }
            }
            if(flag==0)
            {
                break;
            }
        } 
    } 
    void print(int score[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            printf("%5d",score[i]);
        }
    } 

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

    # include <stdio.h>
    # define N 100
    int main()
    {
        int i,a[N],d;
        d=0;
        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)
            {
                a[i]=0;
                d++;
            }
        }
        for(i=0;i<100;i++)
        {
            if(a[i]!=0)
            {
                printf("%d	",a[i]);
            }
        }
        printf("
    剩余%d个数",100-d);
    return 0;    
    }

    附加题

       1.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的 前m位。要求:(1)数组值在程序中初始化(2)m从键盘输入。

    # include <stdio.h>
    int main()
    {
        int i,a[20],x,m,n;
        for(i=0;i<10;i++)
        {
            a[i]=i+1;
        }
        printf("请输入一个数m:
    ");
        scanf("%d",&m);
        n=m%10;
        x=n;
        for(i=9;i>9-n;i--)
        {
            a[9+x--]=a[i];
        }
        x=n;
        for(i=9-n;i>=0;i--)
        {
            a[x+i]=a[i];
        }
        x=n;
        for(i=n-1;i>=0;i--)
        {
            a[i]=a[9+x--];
        }
        for(i=0;i<10;i++)
        {
            printf("%d  ",a[i]);
        }
    return 0;    
    }

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

    # include <stdio.h>
    int main()
    {
        int i,b[4];
        char a[4];
        printf("请输入一个四位数:
    ");
        for(i=0;i<=3;i++)
        {
            scanf("%c",&a[i]);
            b[i]=(a[i]-48+9)%10;
        }
        printf("%d%d%d%d",b[2],b[3],b[0],b[1]);
        return 0;
    }

     实验总结:

    1.一个数组如果想要在多个函数里面调用,在定义函数后面的括号里必须有那个数组。如:int maxindex(int score[],int n,int a[]);score[]和a[]这两个数组都可以在其他函数里面调用;

    2.只需输出不用返回值的用void用返回值的用int;

    3.对于多个数据都要进行的相同循环,定义新函数;

    4.对于要重复使用的变量,要注意每用一次之后该变量是否发生变化,如果变化且下次再用还要要原数据时,要记得重新赋初值。

    程序分析:

    第一个:a[0]=1,a[1]=2,实现了交换;第二个:a[0]=2,a[1]=1;没有实现交换;第一个用了数组,在函数名处定义了的数组在其他函数中也可以调用,所以a[]的值发生了变化。第二个没用数组,并且没有返回值,所以a[]没变。

    根据火柴棍那道题可以看出数组在有些时候可以大大简化程序。

  • 相关阅读:
    SQL语句之奇形怪状的冷门函数
    计算累计收益
    关于SQL表字段值缺失的处理办法
    虚拟机移植到另一台机器
    分分钟搞懂rank() over(partition by)的使用
    分分钟搞懂union与union all
    【转】10分钟就能学会的.NET Core配置
    【转】依赖注入的威力,.NET Core的魅力:解决MVC视图中的中文被html编码的问题
    【转】Asp.Net Core2.0获取客户IP地址,及解决发布到Ubuntu服务器获取不到正确IP解决办法
    【转】在.net Core 中像以前那样的使用HttpContext.Current
  • 原文地址:https://www.cnblogs.com/w123/p/6112069.html
Copyright © 2020-2023  润新知