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

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

    #include <stdio.h>
    #define N 100
    void intscore (int score[],int n);
    void outfscore(int score[],int n);
    double aver(int score[],int n);
    int Maxindex(int score[],int n,int max);
    int Minindex(int score[],int n,int min);
    int insearch(int score[],int n);
    void readScore(int score[], int n);
    void printscore(int score[],int n);
    int main()
    {
        int i,score[N]={0},n,max,maxindex,min,minindex,search;
        double average;
        printf("请输入要统计的学生人数:
    ");
        scanf("%d",&n);
        intscore(score,n);
        outfscore(score,n);
        average=aver(score,n);
        max=score[0];
        maxindex=Maxindex(score,n,max);
        min=score[0];
        minindex=Minindex(score,n,min);
        search=insearch(score,n);
        readScore(score,n);
        printscore(score,n);
        return 0;
    }
    //输入函数 
    void intscore (int score[],int n)
    {
        int i; 
        for(i=0;i<n;i++)
        {
            printf("请输入学生分数:
    ");
            scanf("%d",&score[i]);
        }
    }
    //输出函数
    void outfscore(int score[],int n)
    {
        int i; 
        for(i=0;i<n;i++)
        {
            printf("%5d",score[i]);
        }
    }
    //平均值
    double aver(int score[],int n) 
    {
        int i,sum=0;
        double average;
        for(i=0;i<n;i++)
        {
            sum+=score[i];
        }
        average=(double)sum/n;
        //return (double)sum/n;
        printf("
    %.2lf
    ",average);
    }
    //最大值
    int Maxindex(int score[],int n,int max) 
    {    
        int insearch=0,i;
        for(i=1;i<n;i++)
        {
            if(score[i]>max)    
            {
                max=score[i];
                insearch=i;
            }
        } 
        printf("最高分为%d,该学生为第%d号
    ",max,++insearch);   
    }
    //最小值
    int Minindex(int score[],int n,int min) 
    {
        int i,insearch=0;
        for(i=1;i<n;i++)
        {
            if(score[i]<min)    
            {
                min=score[i];
                insearch=i;
            }
        } 
        printf("最低分为%d,该学生为第%d号
    ",min,++insearch); 
    }
    //寻找
    int insearch(int score[],int n)
    {
        int grade,i,insearch;
        printf("输入你要找的分数:
    "); 
        scanf("%d",&grade); 
        for(i=0;i<n;i++)
        {
            if(grade==score[i])
            {
                insearch=i+1;
            }
        }
        printf("该学生的学号为%d
    ",insearch); 
    }
    //排序
    void readScore(int score[], int n)
    {
        int i,j,temp;
        for(i = 0; i < n; i++)
        {
            for(j = 0; i + j < n - 1; j++)
            {
                if(score[j] > score[j + 1])
                {
                    temp = score[j];
                    score[j] = score[j + 1];
                    score[j + 1] = temp;
                }
      
            }
        }
        return;
    }
    //输出函数
    void printscore(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,n,l=0,m=0,x=0,num[N];
        for(i=1,n=0;i<N;i++,n++)
        {
            num[n]=i;
        }
        for(i=0;i<N;i++)
        {
            if(num[i]%3==0||num[i]%7==0)
            {
                num[i]=0;
                m++;
            }
        }
        for(i=0;i<N;i++)
        {
            if(num[i]==0)
            {
                continue;
            }
            x++;
            printf("%5d",num[i]);
            if(x%8==0)
            {
                printf("
    ");
            }
        }
        printf("
    一共有%d个",(100-m));
        return 0;
    }    

    附加题

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

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

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

    #include <stdio.h>
    #define N 4
    int main()
    {
        int x,n,i;
        int num[N]={0},nums[N]={0};
        printf("请输入一个四位数:
    ");
        scanf("%d",&n);
        while(n>9999||n<1000)
        {
            printf("输入错误!
    ");
            scanf("%d",&n);
        }
        for(i=3;i>=0;i--)            //分配 
        {
            num[i]=n%10;
            n=n/10;
        }
    /*    for(i=0;i<4;i++)           //验证 
        {
            printf("%2d",num[i]);
        }*/
        for(i=3;i>=0;i--)
        {            
            nums[i]=(num[i]+9)%10;
        }
    /*    for(i=0;i<4;i++)           //验证 
        {
            printf("%3d",nums[i]);
        }*/
        x=nums[2]*1000+nums[3]*100+nums[0]*10+nums[1]*1; 
        printf("
    加密后为%d",x);
        return 0;
    } 

    实验总结:

    1:第一个程序其实不难,就是麻烦。。。

    2:附加题一里,有个循环变量g,之前用的也是i,但是发现陷入死循环。。其实之前就是想省点事少定义一个变量,,,

    3:附加题二的for循环第二个语句记反了,符合条件再进行循环语句,导致输出一直是零。

    4:while()         当符合()里的条件时才进行循环。

       

         程序分析:

    结果:

      程序1结果:a【0】=2,a【1】=1。

      程序2结果:a【0】=1,a【1】=2.

    分析:数组在调用函数中作为参数被传递是双向传递,若做修改则返回原数组后,被修改的数组项数值改变。

       单纯的简单变量作为参数被传递则是单向传递,在调用函数中被修改,主函数中的变量值无变化。

  • 相关阅读:
    Lua 随机数生成问题
    关于LUA中的随机数问题
    用setup.py安装第三方包packages
    问题解决 -------- 解决YUM下Loaded plugins: fastestmirror Determining fastest mirrors 的问题
    CentOS6.7上安装Mysql5.7
    Centos6.8通过yum安装mysql5.7
    Gcc ------ gcc的使用简介与命令行参数说明
    redis 常用命令
    redis学习系列
    C# Redis实战
  • 原文地址:https://www.cnblogs.com/yanchao980817/p/6128449.html
Copyright © 2011-2022 走看看