• 作业九


     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,n4;
        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);
        n4=find(score,n);
        if(n4!=-1)
        {
        printf("%d号得到这个分数
    ",n4); 
        }
        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",&n3);
            for(i=0;i<n;i++)
            {        
                if(score[i]==n3)
                {
                    n4=i+1;
                }
                else
                {
                    n4=-1;
                }
            }    
            return n4;
    } 

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

    #include<stdio.h>
    int main()
    {
        int a=0,b=0,c=0;
        for(a=1;a<=100;a++)
        {
            if(a%3==0||a%7==0)
            {
                continue;
            }
        else
            {
                printf("%5d",a);
                c++;
            }
            if(c%10==0)
            {
                printf(" 
    ");
            } 
        }
            printf("有%d个",c);
        return 0;
    }

    附加题

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

    #include<stdio.h>
    #define N 100
    int main() 
    {    
        int shuzu[N]={0},a,b,i,m,n,n1;
        printf("输入要平移的位数:
    "); 
        scanf("%d",&m);
        printf("原数组为:"); 
        for(a=0,b=1;a<N;a++,b++)
        {
            shuzu[a]=b;
            printf("%d	",shuzu[a]);
        }
        n1=N-m;
        for(i=0;i<m;i++)
        {
            n=shuzu[n1];
            shuzu[n1]=shuzu[i];
            shuzu[i]=n;
            n1++;
        }
            printf("
    
    
    ");
            printf("数组变成:");
        for(i=0;i<N;i++)
        {
        
            printf("%d	",shuzu[i]);
        }
        return 0;
    } 

    # include <stdio.h>
    int jiami(int x);
    int main()
    {
        int a,b,c,d,e,f,g,b1,d1,f1,g1,h;
        printf("输入一个四位数
    ");
        scanf("%d",&a);
        if(a<1000||a>9999)
        {
            printf("输入错误
    ");
        }
        b=a/1000;/*千位*/
        c=a%1000;/*后三位*/
        d=c/100;/*百位*/
        e=c%100;//后两位
        f=e/10;//十位
        g=e%10;//个位
        b1=jiami(b);
        d1=jiami(d);
        f1=jiami(f);
        g1=jiami(g);
        f=b1*1000+d1*100+f1*10+g1;
        printf("%04d",f);
        return 0;
    }
    int jiami(int x)
    {
        int z=(x+9)%10;
        return z;
    }

    三、程序分析

         程序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;
    }

      程序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;
    }

    程序一和程序二都使用了void,所以不能返回数值,程序一函数为void swap(int x[]) ,所以数组的值随着int[]变化而变化,而程序二把数组中两个数赋值给了两个变量,所以结果相反。

    二、实验总结(实验中遇到的问题及解决方法) 

    1:注意函数的引用,以及void和int的区别。

    2:数组平移时,要给出所平移数组空余的位置,以便存放平移的数组。

    3:注意限制条件,不满足条件的用continue来取消。

    4:函数名要一样,注意;的使用。

    5:注意限定条件。

  • 相关阅读:
    剑指 Offer II 005. 单词长度的最大乘积
    中文编程的瓶颈
    Unity TextMeshPro 富文本格式介绍
    centos使用httpd搭建文件下载服务器教程
    开博第一天
    macOS安装brew(Homebrew国内源)
    git命令将代码导出为单个文件
    CPU虚拟化
    指令
    华为公有云服务的主要服务产品
  • 原文地址:https://www.cnblogs.com/mty1997/p/6112149.html
Copyright © 2020-2023  润新知