zoukankan      html  css  js  c++  java
  • 作业九

     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:注意限定条件。

  • 相关阅读:
    Linkerd 2.10(Step by Step)—将 GitOps 与 Linkerd 和 Argo CD 结合使用
    Linkerd 2.10(Step by Step)—多集群通信
    Linkerd 2.10(Step by Step)—使用 Kustomize 自定义 Linkerd 的配置
    Linkerd 2.10(Step by Step)—控制平面调试端点
    Linkerd 2.10(Step by Step)—配置超时
    Linkerd 2.10(Step by Step)—配置重试
    Linkerd 2.10(Step by Step)—配置代理并发
    本地正常运行,线上环境诡异异常原因集合
    Need to invoke method 'xxx' declared on target class 'yyy', but not found in any interface(s) of the exposed proxy type
    alpine 安装常用命令
  • 原文地址:https://www.cnblogs.com/mty1997/p/6112149.html
Copyright © 2011-2022 走看看