第八次作业

一、实验内容

1.实验要求

输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。

代码

#include<stdio.h>
#define N 100
int main()
{
    int i,a,n,sum,max,min,grade,index,score[N],index1=0,index2=0;
    double average;
    printf("请输入学生数量:\n");
    scanf("%d",&n);
    sum=0;
    //输入学生成绩
    for(i=0;i<n;i++)
    {
        printf("请输入第%d位学生的成绩\n",i+1);
        scanf("%d",&score[i]);
        sum=sum+score[i];
    }
    //平均成绩
    average=(double)sum/n;
    printf("平均成绩是%.2lf\n",average);
    //最大值最小值及下标
    max=score[0];
    min=score[0];
    for(i=0;i<n;i++)
    {
        
        if(score[i]>max)
        {
            max=score[i];
            index1=i;
        }
        
        if(score[i]<min)
        {
            min=score[i];
            index2=i;
        }
    }
    printf("max=%d,下标为%d,min=%d,下标为%d\n",max,index1,min,index2);
    //成绩查找
    printf("输入你想查找的成绩\n");
    scanf( "%d",&grade);
    a=0;
    for(i=0;i<n;i++)
    {
        if(score[i]==grade)
        {
            printf("第%d位同学符合人要求\n",i+1);
            a++;
        }
    }
    printf("共有%d位同学符合要求\n",a);
    return 0;
}

 

程序运行结果

 

2.实验要求

现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。

代码

#include<stdio.h>
#define N 11
int main()
{
    int i,m,n,
        num[N]={2,4,6,8,10,12,14,16,18,20};
    printf("输入你想插入的一个数字\n");
    scanf("%d",&n);
    for(i=0;i<N-1;i++)
    {
        if(i>=N-2)
        {
            num[N-1]=n;
        }
        if(n<=num[i])
        {
            for(m=N-2;m>=i;m--)
            {
            
                num[m+1]=num[m];
            }
            num[i]=n;
            break;
        }        
    } 
    for(i=0;i<N;i++)
    {
        printf("%d ",num[i]);
    }
    return 0;
}

 

程序运行结果

 

 

 

3.实验要求

用数组实现火柴棍等式

代码

#include<stdio.h>
int main()
{
    int a,b,c,
        gen[10]={6,2,5,5,4,5,6,3,7,6};
    for(a=0;a<=9;a++)
    {
        for(b=0;b<9;b++)
        {
            c=a+b;
            if(c<9)
            {
                if(gen[a]+gen[b]+gen[c]==12)
                {
                    printf("%d+%d=%d\n",a,b,c);
                }
            }
        }
    }
    return 0;
}

 

程序运行结果

 

附加题

实验要求  输入一行任意长的数字,用数组元素作为计数器统计每个数字出现的次数。用下标为0的元素统计0出现的次数,用下标为1的元素统计1出现的次数…

代码

程序运行结果

 

 

二、知识点总结

1. 数组的定义,数组的初始化和赋值。

  一堆数组的定义:数组类型 数组名【常量表达式】

  数组不初始化,其 元素值为随机数

  只给部分数组元素赋初值,则其后的元素被初始为0

  全部数组元素赋初值时,可不指定数组长度

在数组定义后对数组元素进行动态赋值,通常用循环结构实现

2. 明确以下问题:能否给数组名赋值?为什么?C语言会对数组下

标做越界检查吗?那么我们写程序时应该注意什么?

  数组元素的下标采用的是元素相对于数组起始地址的偏移量,所以从0开始顺序编号

  数组名中存放的是一个地址常量,他代表整个数组的首地址。同一数组中的所有元素。同一数组中的所有元素按其下标的顺序占用一段连续的存储单元

  数组元素的引用格式:数组名【下标 】

  下标可以是非负的整形常量或其值为非负整型数据的表达式,取值范围是0-(元素个数-1)

  在编写程序时,保证数组下标不越界是十分重要的

  一个数组元素 实质上就是一个变量,它具有和相同类型单个变量一样的属性,可以对他进行赋值和参与各种运算。

3. 对数组数据的访问一定是跟循环结构分不开的,一般情况下,循环变量的值随数组元素的下标变化。学会灵活运行循环结构完成对数组数组的处理。

4.通过火柴棍等式问题,理解利用函数、数组对程序的优化。

三、实验总结

1.for语句后面不加分号

2.不能对数组整体引用

posted @ 2016-11-22 23:05  张晓楠  阅读(318)  评论(2编辑  收藏  举报