• 第九次作业


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

    # include<stdio.h>
    # define N 100
    void renshu(int sore[],int a);
    float pingjun(int sore[],int a);
    int  max(int sore[],int a,int shu[]);
    int  min(int sore[],int a,int shu[]);
    void  find(int sore[],int a);
    void paixu(int sore[],int a);
    void shuchu(int sore[],int a);
    int main()
    {
        int a,b,c,d,e,h,n,x,y;
        int sore[N]={0},shu[N]={0};
        printf("输入成绩人数
    ");
        scanf("%d",&a);
        printf("输入成绩
    ");
        renshu(sore,a);
        printf("平均数为%.2f",pingjun(sore,a));
        find(sore,a);
        x=min(sore,a,shu);
        for(b=0;b<x;b++)
        {
            e=shu[b];
            printf("最小%d	",e+1);
        }
        y=max(sore,a,shu);
        for(b=0;b<y;b++)
        {
            e=shu[b];
            printf("最大%d	",e+1);
        }
        paixu(sore,a);
        shuchu(sore,a);
        return 0;
    }
    void renshu(int sore[],int a)
    {
        int b;
        for(b=0;b<a;b++)
        {
            scanf("%d",&sore[b]);
         } 
    }
    float pingjun(int sore[],int a)
    {
        int b,sum=0;
        float average;
        for(b=0;b<a;b++)
        {
            sum=sum+sore[b];
        }
        average=(float)sum/a;
        return average;
    }
    void  find(int sore[],int a)
    {
        int e,b,c,flag=0;
        printf("输入查找的分数
    ");
        scanf("%d",&e);
        for(b=0;b<a;b++)
        {
            if(e==sore[b])
            {
            printf("他是%d号	",b+1);
            flag=1;
            }
        }
        if(flag==0)
        {
            printf("没有这个数
    ");
        }
        printf("
    ");
    }
    void paixu(int sore[],int a)
    {
        int b,c,d,e=0;
        for(b=0;b<a-1;b++)
        {
            for(c=0;c<a-1-b;c++)
            {
                if(sore[c]<sore[c+1])
                {
                    e=sore[c];
                    sore[c]=sore[c+1];
                    sore[c+1]=e;
                }
            }
        }
    }
    void shuchu(int sore[],int a)
    {
        int b,d;
        for(b=0;b<a;b++)
        {
            d=sore[b];
            printf("%d	",d);
        }
        printf("
    ");
    }
    int  max(int sore[],int a,int shu[])
    {
        int b,c,d,max,n,index[N]={0},e=0,h;
        max=sore[0];
        n=0;
        for(b=0;b<a;b++)
        {
            if(sore[b]==max)
            {
            shu[n++]=b;
            }
            else if(sore[b]>max)
            {
                max=sore[b];
                n=0;
                shu[n++]=b;
            }
        }
        return n;
    }
    int  min(int sore[],int a,int shu[])
    {
        int b,c,d,e,min=0,n,h;
        min=sore[0];
        n=0;
       for(b=0;b<a;b++)
        {
            if(sore[b]==min)
            {
            shu[n++]=b;
            }
            else if(min>sore[b])
            {
                min=sore[b];
                n=0;
                shu[n++]=b;
            }
        }
        return n;
    }
    
    

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

    # include <stdio.h>
    # define N 100
    void saber(int shu[N]);
    void shuchu(int shu[N]); 
    int main()
    {
        int a,b,c,d,e;
        int shu[N]={0};
        for(a=0,b=1;a<N;a++,b++)
        {
            shu[a]=b;
        }
        saber(shu);
        shuchu(shu); 
        return 0;
    }
    void saber(int shu[N])
    {
        int a,b,c,d;
        for(a=0;a<N;a++)
        {
            if((shu[a]%3==0)||(shu[a]%7==0))
            {
                shu[a]=0;
            }
        }
    }
    void shuchu(int shu[N])
    {
        int a,b=0,c,d;
        for(a=0;a<N;a++)
        {
            if(shu[a]==0)
            {
                continue;
            }
            else
            {
                printf("%-3d	",shu[a]);
                ++b;    
            }
            if(b%10==0)
            {
                printf("
    ");
            }
        }
        printf("共有%d个",b);
    }

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

    # include<stdio.h>
    # define N 4 
    int main ()
    {
        int b,c,d,e,f,shu[N]={0};
        char a;
        printf("输入一个四位数整数加密
    ");
        for(b=0;b<4;b++)
        {    
           scanf("%c",&a);
            shu[b]=((a-48)+9)%10;
        }
        c=shu[0]*10+shu[2]*1000+shu[1]+shu[3]*100;
        printf("%d
    ",c);
              return 0;    
     } 

     1.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的 前m

    # include<stdio.h>
    # define N 200
    int main ()
    {
        int a,b=0,c,d,e,m,n,shu[N]={0},f,h;
        for(a=0,b=1;a<N-100;a++,b++)
        {
            shu[a]=b;
        }
        printf("输入插入的位置
    ");
        scanf("%d",&c);
        m=N-100+c;
        n=N-100;
        f=N-100;
        for(a=0;a<=f;a++)
        {
             e=shu[m];
             shu[m]=shu[n];
             shu[n]=e;
             n--;m--;
        }
        h=N-100;
        for(a=0;a<c;a++)
        {
            d=shu[h];
            shu[h]=shu[a];
            shu[a]=d;
            h++;
        }
        for(a=0;a<N-100;a++)
        {
        printf("%d	",shu[a]);
        }
        return 0;
    }

     

    实验总结:

    看了

    1.第一题中应用的函数较多,一个一个的来,简单一点,

    2.在函数中into  void 两种,比较喜欢第二个当然有时因题而义,有时必须要返回值存在,

    3用函数多了老是忘打return 0;尴尬;单词量较少,对于定义的函数名很随意,还有变量的定义也一样,

    4.会做的一想就行,有的连体都没看懂,理解问题;

    程序1

    程序2

     两种函数的传递方式不同,导致结果不一样,值传递和引用传递两种形式,第一个是引用传递,第二个是值传递,第一个形参就是实参,实参随着形参的改变而改变,第二个中将数组用变量代替,然而实参不会因形参的变化去改变,所以输出值不一样

      简单变量做参数,实现的是值的单向传递,即只能把实参的值传给形参,由于实参和形参占用不同的内存单元,形参的改变不会影响实参。

         数组做函数参数,是将实参数组的地址传给形参数组,实参和形参占用的是相同的内存空间。         

  • 相关阅读:
    mysql热备脚本
    linux系统编程-进程
    15-模块
    14-面向对象3
    13-面向对象2
    12-面向对象1
    02-对比两个文件的差异
    11-面向对象基础
    08-不定长函数
    07-缺省参数
  • 原文地址:https://www.cnblogs.com/saber114567/p/6115043.html
Copyright © 2020-2023  润新知