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);//最低分
    void findmaxlndex(int score[],int n,int Max);//求最高分的下标
    void findminlndex(int score[],int n,int Min);//求最低分的下标
    void search(int score[],int n,int x);//查询成绩 
    void bubblesort(int score[],int n);//排序 
           int main()
           {
               int score[N]={0},n,Max,Min,x;
               double ave;
               printf("输入学生人数(n<100)");
               scanf("%d",&n);
               readScore(score,n);
               printScore(score,n);
                ave=average(score,n);
                printf("平均分为%.2f
    ",ave);
                Max=findMax(score,n);
                printf("最高分为%d
    ",Max);
                Min=findMin(score,n);
                printf("最低分为%d
    ",Min);
                findMaxlndex(score,n,Max);
                findMinlndex(score,n,Min);
                printf("输入查询的成绩");
                scanf("%d",&x);
                search(score,n,x);
                bubbleSort(score,n);
                printf("
    排序后为"); 
                printScore(score,n);
               return 0;
           }
    
    void readScore(int score[],int n)
    {
        
        int i;
        printf("输入成绩
    ");
        for(i=0;i<n;i++)
        {
            scanf("%d",&score[i]);
        }
    }
    void printScore(int score[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            printf("%5d",score[i]);
        }
        printf("
    ");
    }
    
    double average(int score[],int n)
    {
        int i,sum=0;
        for(i=0;i<n;i++)
        {
            sum+=score[i];
        }
        return (double)sum/n;
    }
    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;
    }
    int findMin(int score[],int n)
    {
        int i,min;
        min=score[0];
        for(i=1;i<n;i++)
        {
            if(score[i]<min)
            {
                min=score[i];
            }
        }
        return min;
    }
    void findmaxlndex(int score[],int n,int Max)
    {
        int i,maxlndex=0;
        printf("最高分有:");
        for(i=0;i<n;i++)
        {
            if(score[i]==Max)
            {
                printf("第%2d个",i+1);
            }
        }
        printf("
    ");
    }
    void findminlndex(int score[],int n,int Min)
    {
        int i,minlndex=0;
        printf("最低分有:");
        for(i=0;i<n;i++)
        {
            if(score[i]==Min)
            {
                printf("第%2d个",i+1);
            }
        }
        printf("
    ");
    }
    void search(int score[],int n,int x)
    {
        int i;
        for(i=0;i<n;i++)
        {
            if(score[i]==x)
            printf("是第%d个",i+1);
        }
    }
    void bubblesort(int score[],int n)
    {
        int i,j,t,flag;
        for(i=0;i<n-1;i++)
        {
            
            for(j=0;j<n-1-i;j++)
            {
                flag=0;
                if(score[j]>score[j+1])
                {
                    t=score[j];
                    score[j]=score[j+1];
                    score[j+1]=t;
                    flag=1;
                }
                
            }
            
        }
    }
    

      运行结果:

    2.题目:

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

     代码:

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

      运行结果:

    附加题:

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

    代码:

    #include <stdio.h>
    #define N 10
    int main()
    {
        int m[N],a,b,c,d;
        for(a=1;a<=N;a++)   
        {
           m[a]=a;
        }
        printf("请输入你想后移位数:
    ");
        scanf("%d",&b);
       m[1]=N;
        for(a=1;a<b;a++)
        {
            c=m[N-1];
            for(d=N-2;d>=1;d--)
            {
                m[d+1]=m[d];
            }
               m[1]=c;
        }
        for(a=1;a<N;a++)
        {
            printf("%d	",m[a]);
        }
        return 0;
    }
    

      运行结果:

    程序分析:

     三、程序分析

         程序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;
    }
    复制代码

     

    分析:

    第一个用的是数组做函数,第二个是用简单变量做函数。程序一的a[0和a[1]的值交换了,程序二没有改变。

    数组在调用函数中作为参数被传递是双向传递,单纯的简单变量作为参数被传递则是单向传递。

    实验总结:

    1。在调用函数时注意函数的一一对应。

    2。冒泡法的思路是:将相邻两个数比较,将小的调到前头。

    3.定义数组和在数组中移动变量时要注意数组的越界问题

    4.注意函数名一致!!

  • 相关阅读:
    MSMQ简例
    C#观察者模式简例
    C#常见算法题目(面试准备)
    HttpWebRequest
    自定义Attribute简例
    .Net下的 ORM框架介紹
    for xml path的应用
    .net中日至框架log4net.dll如何使用
    动态载入.ascx用户控件
    wap 2.0 编写规范
  • 原文地址:https://www.cnblogs.com/haoran333/p/6130949.html
Copyright © 2011-2022 走看看