作业,8
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h>
#define N 10000
int main()
{
int fs[N],xs,sum,zs,i,max,min,a,b,c,d;
double pjf;
printf("输入学生的总数\n");
scanf("%d",&zs);
printf("输入学生的分数\n");
for(i=1,sum=0;i<=zs;i++)
{
scanf("%d",&fs[i]);
sum+=fs[i];
}
for(max=fs[1],i=1;i<=zs;i++)
{
if(max<fs[i])
{
max=fs[i];
a=i;
}
}
for(min=fs[1],i=1;i<=zs;i++)
{
if(min>fs[i])
{
min=fs[i];
b=i;
}
}
pjf=(double)sum/zs;
printf("平均分是%.2f,最高分是%d,是同学%d,最低分是%d,是同学%d\n",pjf,max,min,a,b);
printf("再次输入一个分数\n");
scanf("%d",&c);
for(i=0;i<=zs;i++)
{
if(c==fs[i])
{
printf("是学生%d\n",i);
d=2;
}
}
if(d!=2)
{
printf("没有学生是这个成绩");
}
}
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h>
#define N 11
int main()
{
int sz[N]={1,3,5,7,9,11,13,15,17,19},i,a;
printf("1,3,5,7,9,11,13,15,17,19\n输入一个数字,插入在上述数字之内\n");
scanf("%d",&a);
if(a<1)
{
for(i=11;i>-1;i--)
{
sz[i+1]=sz[i];
}
sz[0]=a;
}
else if(a>19)
{
sz[10]=a;
}
else
{
for(i=9;i>=(a/2);i--)
{
sz[(i)+1]=sz[i];
}
sz[a/2]=a;
}
for(i=0;i<=10;i++)
{
printf("%d ",sz[i]);
}
}
3.用数组实现火柴棍等式
#include<stdio.h>
#define N 10
int main()
{
int gun[N]={6,2,5,5,4,5,6,3,7,6},i,j,h;
for(i=0;i<=9;i++)
for(j=0;j<=9;j++)
for(h=0;h<=9;h++)
{
if((j+i==h)&&(gun[j]+gun[i]+gun[h]==12))
{
printf("%d+%d=%d ",i,j,h);
}
}
}
总结
1,数组不能初始化,其元素值为随机数。
2,数组的下标是从0开始的