2016-12-04

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

#include <stdio.h>
#define N 100
void readscore(int score[],int n);   //输入函数
double average(int score[],int n);    //平均值
int maxscore(int score[],int n);    //最大值
int maxindex(int score[],int n);     //最大下标
int minscore(int score[],int n);     //最小值
int minindex(int score[],int n);      //最小下标
int search(int num[],int n,int x);     //查询
void bubblesort(int score[],int n);     //升序
void printscore(int score[],int n);      //输出函数
int main()
{
    int score[N],n,max,max1,min,min1,m,x;
    double ave;
    printf("请输入成绩个数\n");
    scanf("%d",&n);
    readscore(score,n);
    ave=average(score,n);
    max=maxscore(score,n);
    max1=maxindex(score,n);
    min=minscore(score,n);
    min1=minindex(score,n);
    printf("平均值为%.2f,最大值为%d,最大下标为%d,最小值为%d,最小下标为%d\n",ave,max,max1,min,min1);
    printf("请输入一个成绩\n");
    scanf("%d",&x);
    m=search(score,n,x);
    printf("该学生下标为%d\n",m);
    bubblesort(score,n);
    printscore(score,n);
    return 0;
}
void readscore(int score[],int n)  //输入函数
{
    int i=0;
    printf("请输入成绩\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&score[i]);
    }
}
double average(int score[],int n)    //平均值
{
    int i;
    double sum;
    sum=0;
    for(i=0;i<n;i++)
    {
        sum=sum+score[i];
    }
    return (double)sum/n;
}
int maxscore(int score[],int n)    //最大值
{
    int max,i;
    max=score[0];
    for(i=0;i<n;i++)
    {
        if(max<score[i])
        {
            max=score[i];
        }
    }
    return max;
}
int maxindex(int score[],int n)     //最大下标
{
    int i, maxdex=0;
    for(i=1;i<n;i++)
    {
        if(score[i]>score[maxdex])
        {
            maxdex=i;
        }
    }
    return maxdex;
}
int minscore(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;
}
int minindex(int score[],int n)      //最小下标
{
    int i,mindex=0;
    for(i=1;i<n;i++)
    {
        if(score[i]<score[mindex])
        {
            mindex=i;
        }
    }
    return mindex;
}
int search(int num[],int n,int x)     //查询
{
    int i;
    for(i=0;i<n;i++)
    {
        if(num[i]==x)
        {
            return i;
        }
    }
    return -1;
}
void bubblesort(int score[],int n)     //升序
{
    int i,j,t,flag;
    for(i=0;i<n;i++)
    {
        flag=0;
        for(j=0;j<n-1;j++)
        {
            if(score[j]>score[j+1])
            {
                t=score[j];
                score[j]=score[j+1];
                score[j+1]=t;
                flag=1;
            }
        }
        if(flag==0)
        {
            break;
        }
    }
}
void printscore(int score[],int n)        //输出函数
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%5d",score[i]);
    }
    printf("\n");
}

总结:注意有返回值和没有返回值的函数该如何调用    写代码的时候循环嵌套弄错了

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

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

总结:利用循环给数组赋值,还要注意a++放的位置

附加题

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

#include <stdio.h>
#define N 10
int main()
{
    int arr[N],i,j=0,m,t;
    printf("原数组为:\n");
    for(i=0;i<N;i++)
    {
        j++;
        arr[i]=j;
    }
    for(i=0;i<N;i++)
    {
        printf("%d  ",arr[i]);
    }
    printf("\n");
    printf("请输入后移位置m\n");
    scanf("%d",&m);
     for(j=1;j<=m;j++)
    {
        t=arr[N-1];
        for(i=N-1;i>0;i--)
           {
            arr[i]=arr[i-1];
        }
        arr[0]=t;
    }

    printf("新数组为:\n");
    for(i=0;i<N;i++)
    {
        printf("%d  ",arr[i]);
    }
    printf("\n");
    return 0;
}

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

#include <stdio.h>
int main()
{
    int i,brr[4];
    char arr[4];
    printf("请输入一个四位数\n");
    for(i=0;i<4;i++)
    {
        scanf("%c",&arr[i]);
        brr[i]=(arr[i]-48+9)%10;
    }
    printf("%d%d%d%d",brr[2],brr[3],brr[0],brr[1]);
    printf("\n");
    return 0;
}

总结:定义输入的数组时可以定义成char型的才能连续输出一串数字     运算的时候要注意转化成数字

三、程序分析

     程序1

#include <stdio.h>
void swap(int x[]);
int main()
{
     int a[2]={1,2};
    swap(a);
    printf("a[0]=%d\na[1]=%d\n",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\na[1]=%d\n",a[0],a[1]);
    return 0;
}
void swap(int x,int y)
{
     int z;
     z=x;
     x=y;
     y=z;
}

实验分析:实参传的是数组传的是地址引用,传两个数字的话只是在方法区换了两个数,一退键就清空了,主函数中的两个数还是没有变。

时间: 2024-08-04 02:26:27

2016-12-04的相关文章

移动互联网广告 - 第一更 - 精准投放 - 2016/12/04

一.互联网广告及其相关投放技术 1.1 展示方式 广告主要分为网络广告.电视广告以及杂志广告等,主要表现形式有文本.图片.富媒体及视频等. 常见互联网广告有如下展示方式. 搜索引擎广告:借助搜索引擎技术,广告主按照某种计价方式付费给搜索引擎公司来使自己的广告出于搜索结构中较好的位置,以此来吸引用户.这类广告,比较多的是关键词广告,关键是根据自己所需推广的产品或服务的内容.特点设定关键词,因为搜索引擎是利用关键词来搜索,从而相应的广告也随着搜索结果出现. 目前针对关键词广告有两种排名方式:固定排名

2016.12.04软件更新公告

OCR文件夹下更新MODI_From_Office2007SP3.rar,补充了在不同操作系统下的安装说明,并提供VC 8的运行环境安装包,解决某些环境下不能正常安装的问题. 原创软件区发布新软LeanSync. Q:LeanSync是什么?A:这是一个简单的文件夹同步工具,具有下列特点: 提供增量备份.全量备份,及备份恢复功能. 每次备份,不论是增量备份还是全量备份,均存储为一个zip文件,便于管理.并且可以选择"只打包不压缩",相当于WinRAR中的"存储"选项

分布式技术一周技术动态 2016.12.04

分布式系统实践 1. 列存储格式Parquet调研报告 http://dwz.cn/4HnU24 摘要: Apache Parquet是Hadoop生态圈中一种新型列式存储格式,它可以兼容Hadoop生态圈中大多数计算框架(Hadoop.Spark等),被多种查询引擎支持(Hive.Impala.Drill等),并且它是语言和平台无关的.这篇文章详细介绍了Parquet格式, 包括原理和实现, 并且给出了性能对比数据. 2. TiKV 的 MVCC(Multi-Version Concurren

2016年04月MVP开始申请了~[截止时间:1月12日]

51CTO与微软中国合作长期为用户提供申请"微软最有价值专家"的平台希望有兴趣.资历的朋友以及正在朝这个方向努力的朋友能够积极参与只要您想参与我们将为您向微软推荐 微软最有价值专家MVP一年评选4次分别为每年的1月.4月.7月.10月.2016年4月的MVP申请截止时间是2016年1月12日. 申请MVP的午饭请下载2016年4月MVP申请表填好后发送到[email protected].我们会在每次MVP申请开始时把用户提交的申请表格推荐到微软中国相关部门 [注意事项]1.51CTO

GAMIT 10.50在Ubuntu 12.04系统下的安装

转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/162.html?1456480908 摘要:GAMIT/GLOBK是一套安装于Unix/Linux操作系统高精度GPS数据处理分析软件,以Ubuntu12.04桌面版构建系统平台,在网络的支持下,安装最新版GAMIT/GLOBK10.50的详细过程,并运行GAMIT检验安装是否成功. GAMIT/GLOBK是由美国麻省理工学院.斯克里普斯海洋研究所.哈佛大学共同研发的高精度GPS数据处理

Ubuntu 12.04下GAMIT10.40安装说明

转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/164.html?1456481297 Ubuntu 12.04下GAMIT10.40安装步骤: 1 首先就是Gamit软件——gamit.tar.gz的准备,大概64M:2 将下载的gamit.tar.gz复制到 opt/gamit10.40/下面,这里需要建立文件夹10.40,sudo mkdir gamit10.40;3 安装Cshell.sudo apt-get install c

关于2016.12.12——T1的反思:凸包的意义与应用

2016.12.12 T1 给n个圆,保证圆圆相离,求将圆围起来的最小周长.n<=100 就像上图.考场上,我就想用切线的角度来做凸包.以圆心x,y排序,像点凸包一样,不过用两圆之间的下切线角度来判断. 这就是下切线(我自己瞎编的名字): 好像是对的啊: 然后我就保证必AC的希望,用这种写法交了,然后就只得了N=2的暴力分... 自以为是正解,却落得如此下场... 为什么?这样不对吗?借用学长的力量,果然被Hack掉了: 这种情况,圆心排序后,检测的顺序并不是圆上的切点的顺序,自然就会挂. 蓝瘦

Yii php 环境配置on ubuntu 12.04

ubuntu 12.04自带的php版本是5.3.x的,不支持explode(...)[]的语法,故升级到5.4.x. aptitude install python-software-properties add-apt-repository ppa:ondrej/php5-oldstable aptitude update aptitude upgrade Yii安装依赖: aptitude install php5-mysql Yii php 环境配置on ubuntu 12.04,布布扣

Ubuntu 12.04下NFS安装配置图解

转载于:http://www.linuxidc.com/Linux/2013-08/89154.htm 用网线将主机与开发板连接起来,主机开启nfs服务后,就可以像tftp一样传文件到开发板了,有的人会问,不如直接用tftp好了,但是nfs还可以挂载根文件系统啊!我等屌丝先这样比较吧(本文主要是记录安装使用步骤)! 相关阅读: Ubuntu 12.04安装NFS server  http://www.linuxidc.com/Linux/2012-09/70728.htm NFS服务器安装配置实

我的淘宝:Ubuntu 12.04.5上安装 Oracle 11.2.0.4 RAC

进入淘宝店铺 教程:Ubuntu 12.04.5上安装 Oracle 11.2.0.4 RAC 请支持下.价格好商量!