為什么不對呢
#include <stdio.h>
#define N 10
void MAX(int score[])
{
? ? int max=score[0];
? ? for(int i=1;i<N;i++)
? ? {
? ? ? ? if(max<score[i])
? ? ? ? max=score[i];
? ? }
? ? printf("最大值為%d\n",max);
}
void MIN(int score[])
{
? ? int min=score[0];
? ? for(int i=1;i<N;i++)
? ? {
? ? ? ? if(min>score[i])
? ? ? ? min=score[i];
? ? }
? ? printf("最小值為%d\n",min);
? ??
}
void SA(int score[])
{
? ? int sum=0;
? ? for(int i=0;i<N;i++)
? ? {sum+=score[i];}
? ? printf("總分為%d\n",sum);
? ? printf("均分為%d\n",sum/N);
? ??
}
void WANG(int score[])
{
? ? int i,j,temp;
? ? for(i=N-1;i>=0;i--)
? ? ? {for(j=0;j<i;j++)
? ? ? if(score[j]<score[j+1])
? ? ? temp=score[j];
? ? ? score[j]=score[j+1];
? ? ? score[j+1]=temp;
? ? ? }
? for(int k=0;k<N;k++)
? printf("%d",score[k]);
? ??
}
int main()
{
? ? int score[N]={67,98,75,63,82,79,81,91,66,84};
? ?MAX(score);
? ?MIN(score);
? ?SA(score);
? ?WANG(score);
? ? return 0;
}
錯誤的代碼是?
/bin/bash:?line?1:?18563?Segmentation?fault??????(core?dumped)?hello 最大值為98
2018-02-07
你的那個WANG函數(shù)的最后排序i應該等于N,輸出的時候加上括號或者右移,還有那個k,你直接用之前的那個i或者j就行,沒必要再定義。而且你要看清楚它的要求,它要5個函數(shù),你只有四個。還有在你比較大小,你最好不要改變他們原本的數(shù)據(jù),最好做到交換。我的代碼給你參考一下吧!
#include <stdio.h>
#include<math.h>
#define N 10
int total(int score[N])
{
? ? int sum,i;
? ? for(sum=0,i=0;i<N;i++)
? ? ? ? sum+=score[i];
? ? printf("總分是%d\n",sum);
? ? return sum;
}
int max(int score[N])
{
? ? int m,i;
? ? for(m=score[0],i=1;i<N;i++)
? ? {
? ? ? ? if(m<score[i])
? ? ? ? {
? ? ? ? ? ? int tmp=m;
? ? ? ? ? ? m=score[i];
? ? ? ? ? ? score[i]=tmp;
? ? ? ? }
? ? ? ? else
? ? ? ? ? ? continue;
? ? }
? ? printf("最大值是%d\n",m);
? ? return m;
}
int min(int score[N])
{
? ? int n,i;
? ? for(n=score[0],i=1;i<N;i++)
? ? {
? ? ? ? if(n>score[i])
? ? ? ? {
? ? ? ? ? ? int tmp=n;
? ? ? ? ? ? n=score[i];
? ? ? ? ? ? score[i]=tmp;
? ? ? ? }
? ? ? ? else
? ? ? ? ? ? continue;
? ? }
? ? printf("最小值是%d\n",n);
? ? return n;
}
int avg(int score[N])
{
? ? int i;
? ? double a;
? ? a=total(score)/N;
? ? printf("平均分是%lf\n",a);
? ? return a;
}
void order(int score[N])
{
? ? int i,j;
? ? for(i=N;i>=0;i--)
? ? {
? ? ? ? for(j=0;j<i;j++)
? ? ? ? {
? ? ? ? ? ? if(score[j]<score[j+1])
? ? ? ? ? ? {
? ? ? ? ? ? ? ? int tmp=score[j];
? ? ? ? ? ? ? ? score[j]=score[j+1];
? ? ? ? ? ? ? ? score[j+1]=tmp;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? continue;
? ? ? ? }
? ? }
? ? for(i=0;i<=N;i++)
? ? {
? ? ? ? printf("%d,",score[i]);
? ? }
}
int main()
{
? ? int score[N]={67,98,75,63,82,79,81,91,66,84};
? ? total(score);
? ? max(score);
? ? min(score);
? ? avg(score);
? ? order(score);
? ? return 0;
}