zoukankan      html  css  js  c++  java
  • 2016-12-04

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

    #include <stdio.h>
    #define N 100
    void readscore(int score[],int n);   //输入函数 
    double average(int score[],int n);    //平均值 
    int maxscore(int score[],int n);    //最大值 
    int maxindex(int score[],int n);     //最大下标 
    int minscore(int score[],int n);     //最小值 
    int minindex(int score[],int n);      //最小下标 
    int search(int num[],int n,int x);     //查询 
    void bubblesort(int score[],int n);     //升序 
    void printscore(int score[],int n);      //输出函数   
    int main()
    {
        int score[N],n,max,max1,min,min1,m,x;
        double ave;
        printf("请输入成绩个数
    ");
        scanf("%d",&n);
        readscore(score,n);
        ave=average(score,n);
        max=maxscore(score,n);
        max1=maxindex(score,n);
        min=minscore(score,n);
        min1=minindex(score,n);
        printf("平均值为%.2f,最大值为%d,最大下标为%d,最小值为%d,最小下标为%d
    ",ave,max,max1,min,min1);
        printf("请输入一个成绩
    ");
        scanf("%d",&x); 
        m=search(score,n,x);
        printf("该学生下标为%d
    ",m);
        bubblesort(score,n);     
        printscore(score,n);      
        return 0;
    }
    void readscore(int score[],int n)  //输入函数 
    {
        int i=0;
        printf("请输入成绩
    ");
        for(i=0;i<n;i++)
        {
            scanf("%d",&score[i]);
        }
    }
    double average(int score[],int n)    //平均值 
    {
        int i;
        double sum;
        sum=0;
        for(i=0;i<n;i++)
        {
            sum=sum+score[i];
        }
        return (double)sum/n;
    }
    int maxscore(int score[],int n)    //最大值 
    {
        int max,i;
        max=score[0];
        for(i=0;i<n;i++)
        {
            if(max<score[i])
            {
                max=score[i];
            }
        }
        return max;
    }
    int maxindex(int score[],int n)     //最大下标 
    {
        int i, maxdex=0;
        for(i=1;i<n;i++)
        {
            if(score[i]>score[maxdex])
            {
                maxdex=i;
            }
        }
        return maxdex;
    }
    int minscore(int score[],int n)     //最小值 
    {
        int i,min;
        min=score[0];
        for(i=0;i<n;i++)
        {
            if(min>score[i])
            {
                min=score[i];
            }
        }
        return min;
    }
    int minindex(int score[],int n)      //最小下标 
    {
        int i,mindex=0;
        for(i=1;i<n;i++)
        {
            if(score[i]<score[mindex])
            {
                mindex=i;
            }
        }
        return mindex;
    }
    int search(int num[],int n,int x)     //查询 
    {
        int i;
        for(i=0;i<n;i++)
        {
            if(num[i]==x)
            {
                return i;
            }
        }
        return -1;
    }
    void bubblesort(int score[],int n)     //升序
    {
        int i,j,t,flag;
        for(i=0;i<n;i++)
        {
            flag=0;
            for(j=0;j<n-1;j++)
            {
                if(score[j]>score[j+1])
                {
                    t=score[j];
                    score[j]=score[j+1];
                    score[j+1]=t;
                    flag=1;
                }
            }
            if(flag==0)
            {
                break;
            }
        }
    }
    void printscore(int score[],int n)        //输出函数
    {
        int i;
        for(i=0;i<n;i++)
        {
            printf("%5d",score[i]);
        }
        printf("
    ");
    }

    总结:注意有返回值和没有返回值的函数该如何调用    写代码的时候循环嵌套弄错了

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

    #include <stdio.h>
    #define N 100
    int main()
    {
        int num[N],i,j=0,a=0;
        for(i=0;i<N;i++)
        {
            j++;
            num[i]=j;
            if(num[i]%3==0||num[i]%7==0)
            {
                num[i]=0;
            }
        }
        for(i=0;i<N;i++)
        {
            if(num[i]!=0)
            {
                printf("%5d",num[i]);
                a++;
            }
        }
        printf("
    ");
        printf("一共有%d个数
    ",a);
        return 0;
    }

     总结:利用循环给数组赋值,还要注意a++放的位置

    附加题

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

    #include <stdio.h>
    #define N 10
    int main()
    {
        int arr[N],i,j=0,m,t;
        printf("原数组为:
    ");
        for(i=0;i<N;i++)
        {
            j++;
            arr[i]=j;
        }
        for(i=0;i<N;i++)
        {
            printf("%d  ",arr[i]);
        }
        printf("
    ");
        printf("请输入后移位置m
    ");
        scanf("%d",&m);
         for(j=1;j<=m;j++)
        {
            t=arr[N-1];
            for(i=N-1;i>0;i--)
               {
                arr[i]=arr[i-1];
            }    
            arr[0]=t;
        }
    
        printf("新数组为:
    ");
        for(i=0;i<N;i++)
        {
            printf("%d  ",arr[i]);
        }
        printf("
    ");  
        return 0;
    }

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

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

    总结:定义输入的数组时可以定义成char型的才能连续输出一串数字     运算的时候要注意转化成数字 

    三、程序分析

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

    实验分析:实参传的是数组传的是地址引用,传两个数字的话只是在方法区换了两个数,一退键就清空了,主函数中的两个数还是没有变。

  • 相关阅读:
    离线下载使用Google商店插件crx
    springboot thymeleaf 引入js
    如何保证系统重启,tomcat自动重启
    如何实现财务自由
    理财之道
    九大职场定律
    算法系列二:如何学习算法
    FastDFS结合Flask使用
    系统权限的实现
    正则表达式
  • 原文地址:https://www.cnblogs.com/333xar/p/6118938.html
Copyright © 2011-2022 走看看