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

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

    #include<stdio.h>
    #include<stdlib.h> 
    #define N 101
    int x,index_query[N]={0},index_score[N]={0};
    int imax(int score[]);
    int imin(int score[]);
    double average(int score[]);
    void input(int score[]);
    void output(int score[]);
    void query(int score[],int n);
    void bubblesort(int score[]);
    int main()
    {
        int score[N]={0};
        char c;
        input(score);
        printf("计算完毕(输入Y继续)
    ");
        fflush(stdin);
        if((c=getchar())=='Y'||c=='y')
        {
            output(score);
        }
    }
    void input(int score[])
    {
        int i;
        printf("本程序可处理100个以内的成绩统计问题,请输入成绩个数
    ");
        scanf("%d",&x);
        printf("您共要输入%d个成绩,下面请输入:",x);
        for(i=0;i<x;i++)
        {
            scanf("%d",&score[i]);
        }
    }
    int imax(int score[])
    {
        int i=0,max,ii=0;
        max=score[0];
        for(i=1;i<x;i++)
        {
            if(score[i]>=max)
            {
                max=score[i];
            }
        }
        query(score,max);
        return max;
    }
    int imin(int score[])
    {
        int i=0,min,ii=0;
        min=score[0];
        for(i=1;i<x;i++)
        {
            if(score[i]<=min)
            {
                min=score[i];
            }
        }
        query(score,min);
        return min;
    }
    double average(int score[])
    {
        int i,sum=0;
        double ave;
        for(i=0;i<x;i++)
        {
            sum+=score[i];
        }
        ave=(double)sum/x;
        return ave;
    }
    void output(int score[])
    {
        char c;
        int a,q,i,ii,max,min;
        double ave;
        while(1)
        {
            system("cls");
            printf("
    
    
    
    				*****************
    				*1、成绩查询    *
    				*2、显示最大成绩*
    				*3、显示最小成绩*
    				*4、显示平均成绩*
    				*5、成绩单      *
    				*****************");
            fflush(stdin);
            if((c=getchar())=='1')
            {
                system("cls");
                printf("请输入查询成绩:
    ");
                scanf("%d",&a);
                printf("您查询的成绩为:
    ");
                for(i=0;i<x;i++)
                {
                    query(score,a);
                    if(index_query[0]==0)
                    {
                        printf("无此成绩"); 
                        break;
                    }
                    else
                    {
                    if(index_query[i]==0)
                        {
                            printf("");
                            break;
                        }
                    printf("%d ",index_query[i]);
                    }
                    if(i==x-1)
                    printf("");
                } 
            }
            else if(c=='2')
            {
                system("cls");
                max=imax(score);
                printf("最大成绩为%d,为第",max);
                for(i=0;i<x;i++)
                {
                    if(index_query[i]==0&&i!=0)
                    {
                        break;
                    }
                    printf("  %d  ",index_query[i]);
                 } 
                 printf("");
            }
            else if(c=='3')
            {
                system("cls");
                min=imin(score);
                printf("最小成绩为%d,为第",min);
                for(i=0;i<x;i++)
                {
                    if(index_query[i]==0&&i!=0)
                    {
                        break;
                    }
                    printf(" %d ",index_query[i]);
                 }
                 printf(""); 
            }
            else if(c=='4')
            {
                system("cls");
                ave=average(score);
                printf("共有%d人,平均成绩为%.1lf
    ",x,ave);
            }
            else if(c=='5')
            {
                system("cls");
                bubblesort(score);
                printf("学号	成绩	名次
    ");
                for(i=0,ii=1;i<x;i++)
                {
                    
                    query(score,index_score[i]);
                    if(index_score[i]==index_score[i-1])
                    {
                        printf("%d",index_query[ii]);
                        ii++;
                    }
                    else
                    {
                        printf("%d",index_query[0]);
                        ii=1;
                    }
                     printf("	%d	",index_score[i]);
                     printf("%d
    ",i+1);
                }
            }
            else
            {
                printf("选择错误
    ");
            }
            printf("是否继续?(Y)
    ");
            fflush(stdin);
            if((c=getchar())=='Y'||c=='y')
            {
                continue;
            }
            else
            {
                printf("感谢使用!");
                break;
            }
        }
    }
    void query(int score[],int n)
    {
        int i,ii=0,ia=0;
        for(i=0;i<x;i++)
        {
            index_query[i]=0;
        }
        for(i=0;i<x;i++)
        {
            if(score[i]==n)
            {
                index_query[ii]=i+1;
                ii++;
                ia=1;
            }
            if(ia=0)
            {
                for(ii=0;ii<x;ii++)
                {
                    index_query[ii]=0;
                }
            }
        }
    }
    void bubblesort(int score[])
    {
        int i,ii,a,flag;
        for(i=0;i<x;i++)
        {
            index_score[i]=score[i];
        }
        for(i=0;i<x;i++)
        {
            flag=0;
            for(ii=0;ii<x-1-i;ii++)
            {
                if(index_score[ii]<index_score[ii+1])
                {
                    a=index_score[ii];
                    index_score[ii]=index_score[ii+1];
                    index_score[ii+1]=a;
                    flag=1;
                }
            }
            if(flag==0)
            break;
        }
    }

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

    #include<stdio.h>
    #define N 100
    int main()
    {
        int i,n=0,sum[N];
        for(i=0;i<100;i=i+1)
        {
            sum[i]=i+1;
        }
        for(i=0;i<100;i=i+1)
        {
            if(sum[i]%3==0||sum[i]%7==0)
            {
                sum[i]=0;
            }
        }
        for(i=0;i<100;i++)
        {
            if(sum[i]!=0)
            {
                n++;
                printf("%d ",sum[i]);
            }
        }
        printf("
    还剩下%d个数
    ",n);
    }

    实验报告

    1、自定义函数确实好用。

    2、处于偷懒目的使用了全局变量和数组。(逃~)

    3、时间不够没写附加题。(典型找打)

    程序分析

    关于两个程序,我个人的理解是,作为实参的变量可以说是一个相对固定的“个体”,而数组则是划定范围的“容器”,形参则是“地标”。作为容器来讲,内部的“个体(下标变量)”是可以被取走或改变的。

  • 相关阅读:
    校验规则,纯数字。几位有效数字,保留几位小数
    银行卡校验规则(Luhn算法)
    forEach兼容ie8
    node.js
    gulp
    observer
    webpack.config.js 配置
    内存泄漏(Memory Leak)
    cdn
    前端 各种插件的官网
  • 原文地址:https://www.cnblogs.com/wxc123/p/6132204.html
Copyright © 2011-2022 走看看