第八次作业

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

#include <stdio.h>
#define N 100
int main()
{ 
	int score[N],sum=0,c,j,max,min,i=0,x=0;
	float average;
	printf("输入学生的成绩,输入负数时退出
"); 
	scanf("%d",&score[i]);
	x++;
	while(score[i]>=0)
	{
	    sum+=score[i];
		i++;
		printf("输入学生的成绩,输入负数时退出
"); 
		scanf("%d",&score[i]);
		x++;
    }
	average=(float)sum/x;
	printf("平均分为%.2f
",average);
	max=score[0];
	min=score[0];
	i=0;
	while(i<x&&score[i]>=0)
	{
		if(score[i]>max)
		{
			max=score[i];
		}
		if(score[i]<min)
		{
			min=score[i];
		 } 
		 i++;
	 } 
	 printf("最高分为%d,最低分为%d
",max,min);
	 i=0;
	 while(i<x&&score[i]>=0)
	 {
	 	if(score[i]==max)
	     {
	     	printf("最高分有第%d个人
",i+1);
		  } 
		if(score[i]==min)
		{
			printf("最低分有第%d个人
",i+1); 
		}
		i++;
	  } 
	printf("输入一个成绩,说明是第几个学生
");
	scanf("%d",&c);
	for(j=0;j<i;j++)
	{
		if(c==score[j])
		{
			
			printf("该成绩有第%d个学生
",j+1);
		}
	}
	return 0;
}

  

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

#include <stdio.h>
int main()
{
	int i,j,x,a[11]={2,4,6,8,10,12,14,16,18,19};
	printf("输入一个数,插入数组当中");
	scanf("%d",&j);
	for(i=0;i<10;i++)
	{
		if(a[i]>j)
		{
			x=i;
			break;
		}
		else
		{
			x=10;
		}
	}
	for(i=10;i>x;i--)
	{
		a[i]=a[i-1];
	}
	a[x]=j;
	for(i=0;i<11;i++)
	{
		printf("%4d",a[i]);
	}
	return 0;
}

  

 

 3.用数组实现火柴棍等式

#include <stdio.h>
int main()
{
int a,b,c,s[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(s[a]+s[b]+s[c]==12&&c<10)
{
printf("%d+%d=%d
",a,b,c);
}
}
return 0;
}

实验总结:1.数组的下标从零开始。

               2.数组能处理大量数据,优化程序。

               3.数组一旦创建,不能改变大小。

               4.要多方面考虑题目结果,使代码完整。

               5.变量对应的关系要搞清楚。

知识点总结:1.数组与循环结构紧密相连,一般情况下,循环变量的值随数组元素的下标变化。

                 2数组使用时要先定义才能使用,C语言不会对数组下标做越界检查。

                 3.数组不能被赋值。

原文地址:https://www.cnblogs.com/a378/p/6097162.html