第九次实验作业

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

#include<stdio.h>
#define N 100
void readscore(int score[],int n);//输入函数
double average(int score[],int n);//求平均
int findmaxindex(int score[],int n,int index[]);//求最高分及对应下标
int findminindex(int score[],int n,int index[]);//求最低分及对应下标
int Search(int score[],int n,int x);//查找
void bubblesort(int score[],int n);//排序
void printscore(int score[],int n);//输出函数
int main()
{
    int score[N]={0},n,i,sum,count1,count2,index[N]={0},chazhao,x;
    double ave;
    printf("请输入人数\n");
    scanf("%d",&n);
    readscore(score,n);
    ave=average(score,n);
    printf("平均值为%.2f\n",ave);
    count1=findmaxindex(score,n,index);
    for(i=0;i<count1;i++)
    {
        printf("最高分=%d,是第%d个同学\n",score[index[i]],index[i]+1);
    }
    count2=findminindex(score,n,index);
    for(i=0;i<count2;i++)
    {
        printf("最低分=%d,是第%d个同学\n",score[index[i]],index[i]+1);
    }
    chazhao=Search(score,n,x);
    printf("该学生在%d位\n",chazhao+1);
    bubblesort(score,n);
    printf("排序后的数为:\n");
    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("\n");
}
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 findmaxindex(int score[],int n,int index[])//求最高分对应的学生
{
    int i,max,count1;
    max=score[0];
    count1=0;
    for(i=0;i<n;i++)
    {
        if(score[i]==max)
        {
            index[count1++]=i;
        }
        else if(score[i]>max)
        {
            max=score[i];
            count1=0;
            index[count1++]=i;
        }
    }
    return count1;
}
int findminindex(int score[],int n,int index[])//求最低分对应的学生
{
    int i,min,count2;
    min=score[0];
    count2=0;
    for(i=0;i<n;i++)
    {
        if(score[i]==min)
        {
            index[count2++]=i;
        }
        else if(score[i]<min)
        {
            min=score[i];
            count2=0;
            index[count2++]=i;
        }
    }
    return count2;
}
int Search(int score[],int n,int x)//查找
{
    int i;
    printf("请输入你要查询的成绩:");
    scanf("%d",&x);
    for(i=0;i<n;i++)
    {
        if(score[i]==x)
        return i;
    }
    return -1;
}
void bubblesort(int score[],int n)//排序
{
    int i,j,t,flag;
    for(i=0;i<n;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;
            }
        }
        if(flag==0)
        {
            break;
        }
    }
}

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

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

二、实验总结(实验中遇到的问题及解决方法)

1.记得要赋初值。

2.continue只结束一条语句,break是跳出循环。

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

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

三、程序分析

上述是两个程序执行出来的结果,执行出的结果将两个数值交换了

程序1:数组作函数参数,是将实参数组的地址传给形参数组,结果将结果交换。

程序2:简单参数,只是单向传递,所以输出值不会改变。

时间: 2024-11-14 22:56:07

第九次实验作业的相关文章

Linux内核实验作业四

实验作业:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 20135313吴子怡.北京电子科技学院 [第一部分]使用库函数API来获取用户标识号.库函数为getuid() 代码如下: 编译运行之后,将用户id号1000打印输出在屏幕上. [第二部分]使用汇编方式触发系统调用来获取用户标识号.库函数依旧为getuid() 代码如下: 可以看出,打印出来的用户id和之前的一样都是1000. [第三部分]系统调用的工作机制学习总结 我认为系统调用的工作机制就是系统调用经过封装包装成为

实验作业:使gdb跟踪分析一个系统调用内核函数

实验作业:使gdb跟踪分析一个系统调用内核函数(我使用的是getuid) 20135313吴子怡.北京电子科技学院 [第一部分] 根据视频演示的步骤,先做第一部分,步骤如下 ①更新menu代码到最新版 ②在代码中加入C函数.汇编函数 ③在main函数中加入makeconfig ④make rootfs ⑤可以看到qemu中增加了我们先前添加的命令: ⑥分别执行新增的命令 [第二部分]gdb跟踪分析一个系统调用内核函数 ①进入gdb调试 ②设置断点,继续执行: ③相对应的得到这样的结果: ④查看我

第九周编程作业

A:list 总时间限制:  4000ms  内存限制:  65536kB 描写叙述 写一个程序完毕下面命令:new id --新建一个指定编号为id的序列(id<10000)add id num--向编号为id的序列增加整数nummerge id1 id2--合并序列id1和id2中的数,并将id2清空unique id--去掉序列id中反复的元素out id --从小到大输出编号为id的序列中的元素,以空格隔开 输入 第一行一个数n,表示有多少个命令( n<=200000).以后n行每行一

lamp实验作业详细过程

1.请描述一次完整的http请求处理过程:由客户端发起请求给服务端,服务端接收到请求后解析http报文内容,把处理完成后的内容反馈给客户端,再将每次请求记录在日志中.2.httpd所支持的处理模型有哪些,他们的分别使用于哪些环境.prefork:多进程模型,一个进程响应一个请求:worker:多进程多线程模型,一个线程响应一个请求:event:事件驱动模型,一个进程响应n个请求:3.源码编译安装LAMP环境(基于wordpress程序),并写出详细的安装.配置.测试过程.一.编译安装httpd2

第九次实验总结+作业

一.知识点 1.二维数组的定义和引用   类型名 数组名[行长度][列长度]:   引用:数组名[行下标][列下标]  行下标合理范围值是[0,行长度-1],列下标合理取值范围是[0,列长度-1],所以类似九九乘法表就不能是a[9][9],要是a[10][10].2.二维数组的初始化   分行赋值:类型名 数组名 [行长度][列长度]={{初值表0},...,{初值表k},...};   顺序赋值:类型名 数组名 [行长度][列长度]={初值表}3.矩阵术语和二维数组对应关系   主对角线:从矩

第七次实验作业

第一个作业 #include <stdio.h>#include <math.h>int sign(int x);int even(int n);int prime(int m);int countdigit(int number,int digit);int is(int number);int main(){ int choice=0; int n; int x,y,m,i,sum=0; int digit,z,c; do{ printf("*************

第五次实验作业

1.输入两个正整数m和n(要求m<=n), 求m!+(m+1)!+(m+2)!-+n! #include <stdio.h> int main() { int i,m,n,a,t,sum=0; printf("请输入两个正整数m和n\n"); scanf("%d%d",&m,&n); if(m>n) { t=m; m=n; n=t; } for(;m<=n;m++) { a=1; for(i=1;i<=m;i++)

第四次实验作业

1.编写程序,输入一个整数x,按照下式输出对应的y值.     #include<stdio.h> int main() { int x,y,i; y=0; printf("请输入一个整数x\n"); scanf("%d",&x); if(x%2==1) { for(i=1;i<=x;i+=2) { y=i+y; } } else if(x%2==0) { for(i=2;i<=x;i+=2) { y=i+y; } } printf(

第九周课堂作业

一.怎样判断对象是否可以转换? 可以使用instanceof运算符判断一个对象是否可以转换为指定的类型: 程序截图: 结果截图: 二.类型转换 实验截图: 结论:子类可直接赋给基类(“基类变量=子类对象”):基类的引用类型要传递给子类必须通过强制转换(“子类变量=(子类名)基类对象”):子类之间不可以进行转换. 三.变态类 程序截图: 程序截图: 原因及结论: 当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类