首页 > 代码库 > 第九次作业

第九次作业

一、实验内容

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

代码

  1 #include<stdio.h>
  2 #define N 999
  3 void input(int score[],int n);//输入函数
  4 double average(int score[],int n);//平均值
  5 int maxindex(int score[],int n,int max[]);//最大值下标
  6 int minindex(int score[],int n,int min[]);//最小值下标
  7 void search(int score[],int n);//查找
  8 void sort(int score[],int n);//排序
  9 void output(int score[],int n);//输出
 10 int main()
 11 {
 12     int i,a[N]={0},c[N]={0},d,score[N],n,imax,imin,imaxindex,iminindex;
 13     double ave;
 14     printf("Input the number of students:\n");
 15     scanf("%d",&n);
 16     printf("Input the score of students:\n");
 17     input(score,n);
 18     imaxindex=maxindex(score,n,a);
 19     imax=score[a[0]-1];
 20     iminindex=minindex(score,n,c);
 21     imin=score[c[0]-1];
 22     printf("average=%.2f\n",ave);
 23     printf("max=%d\n",imax);
 24     for(i=0;i<=imaxindex;i++)
 25     {
 26         if(a[i]>0)
 27         {
 28             printf("num%d\n",a[i]);
 29         }    
 30     }
 31     printf("min%d\n",imin);
 32     for(i=0;i<=iminindex;i++)
 33     {
 34         if(c[i]>0)
 35         {
 36             printf("num%d\n",c[i]);
 37         }        
 38     }    
 39     printf("\n");
 40     search(score,n);
 41     printf("\n");
 42     sort(score,n);
 43     output(score,n);
 44     return 0;    
 45 } 
 46 void input(int score[],int n)
 47 {
 48     int i;
 49     for(i=0;i<n;i++)
 50     {
 51         scanf("%d",&score[i]);
 52     }    
 53 }
 54 int iaverage(int score[],int n)
 55 {
 56     int sum,i;
 57     sum=0;
 58     for(i=0;i<n;i++)
 59     {
 60         sum+=score[i];
 61     }
 62     return (double)sum/n;
 63 }
 64 int maxindex(int score[],int n,int a[])
 65 {
 66     int i,j,b;
 67     b=score[0];
 68     j=0;
 69     for(i=1;i<n;i++)
 70     {
 71         if(b<score[i])
 72         {
 73             b=score[i];
 74         }
 75     }
 76     for(i=0;i<n;i++)
 77     {
 78         if(b==score[i])
 79         {
 80             a[j]=i+1;
 81             j++;
 82         }
 83     }
 84     return j-1;
 85 }
 86 int minindex(int score[],int n,int a[])
 87 {
 88         int i,j,b;
 89     b=score[0];
 90     j=0;
 91     for(i=1;i<n;i++)
 92     {
 93         if(b>score[i])
 94         {
 95             b=score[i];
 96         }
 97     }
 98     for(i=0;i<n;i++)
 99     {
100         if(b==score[i])
101         {
102             a[j]=i+1;
103             j++;
104         }
105     }
106     return j-1;    
107 }
108 void search(int score[],int n)
109 {
110     int i,a,flag;
111     flag=0;
112     printf("Input the score you want search\n");
113     scanf("%d",&a);
114     for(i=0;i<n;i++)
115     {
116         if(a==score[i])
117         {
118             printf("num%d ",i+1);
119             flag=1;
120         }
121     }
122     if(flag==0)
123     {
124         printf("Don‘t have this score\n") ;
125     }
126 }
127 void sort(int score[],int n)
128 {
129     int a,i,j,x,flag;
130     
131     for(i=0;i<n;i++)
132     {
133         flag=0;
134         for(j=0;j<n-1;j++)
135         {
136             if(score[j]<score[j+1])
137             {
138                 a=score[j];
139                 score[j]=score[j+1];
140                 score[j+1]=a;
141             }
142             else
143             {
144                 flag=1;
145             }
146         }
147         if(flag==0)
148         {
149             break;
150         }
151     } 
152 } 
153 void output(int score[],int n)
154 {
155     int i;
156     for(i=0;i<n;i++)
157     {
158         printf("%5d",score[i]);
159     }
160 }  

运行结果

技术分享

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

 1 #include<stdio.h>
 2 #define N 100
 3 int main()
 4 {
 5     int i,n=0,sum[N];
 6     for(i=0;i<100;i=i+1)
 7     {
 8         sum[i]=i+1;
 9     }
10     for(i=0;i<100;i=i+1)
11     {
12         if(sum[i]%3==0||sum[i]%7==0)
13         {
14             sum[i]=0;
15         }
16     }
17     for(i=0;i<100;i++)
18     {
19         if(sum[i]!=0)
20         {
21             n++;
22             printf("%d ",sum[i]);
23         }
24     }
25     printf("\n还剩下%d个数\n",n);
26 }

运行结果

技术分享

总结

1.看了一下,尽量减少计算机的运算量,小毛病很多,以后要注意

2.函数名对应不要输错

 

第九次作业