第九次作业

实验内容

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


#include <stdio.h>
#define N 100
void readScore(int score[], int n);
double average(int score[],int n);
int findMax(int score[],int n);
int findMaxIndex(int score[],int n);
int findMin(int score[],int n);
int findMinIndex(int score[],int n);
int findscore(int score[],int n);
void bubbleSort(int score[],int n);
void print(int score[],int n);
int main ()
{
int score[N],n,max,maxIndex,min,minIndex,i,a[N],k,l,m;
double ave;
printf ("请输入学生的人数
");
scanf ("%d",&n) ;
printf("请输入学生的成绩
") ; 
readScore(score,n);
ave=average(score,n);
{
printf("学生平均成绩为%.lf
",ave);
}
max=findMax(score,n);
{
printf("学生成绩最大值为%d
",max);
}
maxIndex=findMaxIndex(score,n);
{
    k=maxIndex+1; 
printf("成绩最高的学生是第%d名
",k);
}
min=findMin(score,n);
{
printf("学生成绩最小值为%d
",min);
}
minIndex=findMinIndex(score,n);
{
    l=minIndex+1;
printf("成绩最低的学生是第%d名
",l);
}
i=findscore(score,n);
bubbleSort(score,n) ;
print(score,n);
return 0;    
} 
void readScore(int score[], int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d",&score[i]);
}
}
double average(int score[],int n)
{
int i,sum; 
double ave;
sum = 0;
for(i=0;i<n;i++)
{
sum+=score[i];
}
ave=(double)sum/n;
return ave;
}
int findMax(int score[],int n)
{
int i;
int max;
max=score[0];
for(i=1;i<n;i++)
{
if(score[i]>max)
{
max=score[i];
}
}
return max;
}
int findMaxIndex(int score[],int n)
{    
int i,maxIndex;
maxIndex=0;
for(i=1;i<n;i++)
{
if(score[i]>score[maxIndex])
{
maxIndex=i;
}
}
return maxIndex;
}
int findMin(int score[],int n)
{
int i;
int min;
min=score[0]; 
for(i=1;i<n;i++)
{
if(score[i]<min)
{
min=score[i];
}
}
return min;
}
int findMinIndex(int score[],int n)
{    
int i,minIndex;
minIndex=0;
for(i=1;i<n;i++)
{
if(score[i]<score[minIndex])
{
minIndex=i;
}
}
return minIndex;
}
int findscore(int score[],int n)
{
int x,i,m;
printf("请输入你想查询的学生的成绩
");
scanf ("%d",&x);
for(i=0;i<n;i++)
{
if (score[i]==x)
{
    m=i+1;
printf("这名学生是第%d名学生
",m);
}
}
return 0;
}
void bubbleSort(int score[],int n)
{    int i,j,t,flag;
for(i=0;i<n-1;i++) 
{
flag=0;
for(j=0;j<n-1-i;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 print(int score[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%5d",score[i]);
}
}


 
 
  2.定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。
#include<stdio.h>
#define N 100
int main()
{
    int i,x[N],a,b,c,d;
    a=3;
    b=7;
    c=0;
    for(i=0;i<100;i++)
    {
        x[i]=i+1;
    }
    for(i=0;i<100;i++)
    {
        if(x[i]%a==0||x[i]%b==0)
        {
            x[i]=0;
            c++;
        }
    }
    for(i=0;i<100;i++)
    {
        if(x[i]!=0)
        {
            printf(" %d",x[i]);
        }
       
    }
    d=100-c;
    printf("剩余%d个数",d);
    return 0;
}

知识点总结

1.自定义函数要和主函数中数值的类型保持一致。

2.数字初值一定要定义.

实验总结

1.应注意数组越界的情况。

2.调用函数一定要与定义函数名相同。

程序分析

     题目复制后再打字会混在程序里,所以没有题目,直接写分析。

     第一个程序中因为数组的应用函数内容可以被交换,第二个程序中没有运用数组定义函数,导致实际数组中的数无法进行交换。

原文地址:https://www.cnblogs.com/li1252204077/p/6132257.html