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

    实验一:

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

    #include<stdio.h>
    #define N 100
    int readScore(int score[],int n);//输入函数
    void printScore(int score[],int n);//浏览函数
    double average(int score[],int n); //计算平均值函数
    int findmin(int score[],int n);//计算最小值函数
    void findminlndex(int score[],int n);//计算多个最小值下标
    int findmax(int score[],int n);//求最高分 
    void findmaxlndex(int score[],int n);//计算多个最大值下标 
    void findscore(int score[],int n);//查找函数 
    void bubblesort(int score[],int n);//排序函数 
    int main()
    {
        int score[N]={0},n,min,max,maxlndex;
        double average1;
        printf("请输入学生人数n:
    ");
        scanf("%d",&n);
        readScore(score,n);
        bubblesort(score,n);
        average1=average(score,n);
        printf("这%d名学生的平均成绩是%.2lf
    ",n,average1);
        min=findmin(score,n);
        max=findmax(score,n);
        printf("最低分是%d,最高分是%d
    ",min,max);
        findminlndex(score,n);
        findmaxlndex(score,n);
        findscore(score,n);
        return 0;
    }
    int readScore(int score[],int n)
    {
        int i;
        printf("请输入编分数:
    ");
        for(i=0;i<n;i++)
        {
            scanf("%d",&score[i]);
        }
        return i;
    }
    void bubblesort(int score[],int n)
     {
         int i,j,t,flag;
         for(i=0;i<n-1;i++)
         {
             flag=0;
             for(j=0;j<n-1-i;j++)
             {
                 if(score[j]>score[j+1])
                 {
                     t=score[j+1];
                     score[j+1]=score[j];
                     score[j]=t;
                     flag=1;
                 }
             }
             if(flag==0)
             {
                 break;
             }
         }
         for(i=0;i<n;i++)
         {
             printf("%d号:%d
    ",i,score[i]);
          } 
     }
    double average(int score[],int n)
    {
        int i,sum;
        sum=0;
        for(i=0;i<n;i++)
        {
            sum+=score[i];
        }
        return (double)sum/n;
    }
    int findmin(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;
    } 
    void findminlndex(int score[],int n)
    {
        int i,min;
        min=findmin(score,n);
        printf("最低分的同学有:
    ");
        for(i=0;i<n;i++)
        {
            if(score[i]==min)
            {
                printf("第%d为学生 ",i+1);
            }
        }
        printf("
    ");
    }
    int findmax(int score[],int n)
     {
         int i,max;
         max=score[0];
         for(i=1;i<n;i++)
         {
             if(score[i]>max)
             {
                 max=score[i];
             }
        } 
        return max;
     } 
    void findmaxlndex(int score[],int n)
    {
        int i,max;
        max=findmax(score,n);
        printf("最高分有:
    ");
        for(i=0;i<=n;i++)
        {
            if(score[i]==max)
            {
                printf("第%d名学生 ",i+1);
            }
        }
        printf("
    ");
     } 
     void findscore(int score[],int n)
     {
         int i,score1,flag=0;
         printf("请输入你要查找的分数:
    ");
         scanf("%d",&score1);
         printf("该分数的有:
    ");
         for(i=0;i<n;i++)
         {
             if(score[i]==score1)
             {
                 printf("第%d位学生
    ",i+1);
                 flag=1;
             }
         }
         if(flag==0)
         printf("没有改分数的学生
    ");
     } 

    实验二:

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

    #include<stdio.h>
    #define N 100
    int main()
    {
        int a[N],i,x=0;
        for(i=0;i<100;i++)
        {
            a[i]=i+1;
            if(a[i]%7==0||a[i]%3==0)
            {
                continue;
            }
            else
            {
                printf("%2d  ",a[i]);
                x++;
                if(x%10==0)
                {
                    printf("
    ");
                 } 
            }
         } 
         printf("
    还剩余%d个数字",x);
         return 0;
    }

    附加题

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

    #include<stdio.h>
    int main()
    {
        int a[10]={0},i,n,j,k,t;
        for(i=0;i<10;i++)
        {
            a[i]=i+1;
            printf("%d ",a[i]);
        }
        printf("
    请输入要移出几位:
    ");
        scanf("%d",&n);
        for(j=0;j<n;j++)
        {
            t=a[9];
            for(k=9;k>0;k--)
            {
                a[k]=a[k-1];
            }
            a[0]=t;
        }
        for(i=0;i<10;i++)
        {
            printf("%d ",a[i]);
        }
        return 0;
     } 

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

    #include<stdio.h>
    int main()
    {
        int a[4],num,num1;
        printf("请输入一个四位数:
    ");
        scanf("%d",&num);
        a[0]=(num%10+9)%10;//
        a[1]=(num%100/10+9)%10;//
        a[2]=(num/100%10+9)%10;//
        a[3]=(num/1000+9)%10;//
        num1=a[1]*1000+a[0]*100+a[3]*10+a[2];
       printf("加密后的数为%d",num1);return 0;
        
    }

    实验总结:

    1  在使用数组写函数时一定要注意到不要让数组越界

    2  写函数时在无返回值时用void型

    3  冒泡排序需要循环嵌套,内层循环是第一次找到一个最值得二次找到次最值……外层循环控制趟数

    4  对数组中的数移位时要从后往前一个一个替换,不能从前往后替换

    程序分析:

    #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;
    }

    该程序能够完成交换是函数将实参录入地址传给形参,通过函数完成数组中两个数的交换;

    #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;
    }

    该程序没有完成交换是因为程序只是吧形参的值给啦形参,录入地址并没有与函数同步,所以没有完成交换

  • 相关阅读:
    Maven基本操作命令
    Android studio安装与配置
    java数据结构----图
    java数据结构----堆
    java数据结构----哈希表
    java数据结构----树
    java数据结构----链表
    java数据结构----队列,优先级队列
    java数据结构----栈
    java数据结构----数组篇
  • 原文地址:https://www.cnblogs.com/myfdpk/p/6127609.html
Copyright © 2011-2022 走看看