小小贝勒爷
2019-05-05 20:56
#include <stdio.h>
int sum_exam(int arr[])
{
int i,sum;
sum = 0;
for(i=0;i<10;i++)
{
sum = sum + arr[i];
}
return sum;
}
int max_exam(int arr[])
{
int i,max;
int index;
max = arr[0];
for(i=1;i<9;i++)
{
if(max < arr[i])
{
max = arr[i];
index = i;
}
}
return arr[index];
}
int min_exam(int arr[])
{
int i,min,index;
min = arr[0];
for(i=0;i<9;i++)
{
if(min > arr[i])
{
min = arr[i];
index = i;
}
}
return arr[index];
}
double ave_exam(int arr[])
{
int i,sum;
sum = 0;
for(i=0;i<10;i++)
{
sum = sum + arr[i];
}
return sum/10;
}
int sort_exam(int arr[])
{
int i,j,temp;
printf("\n************排序前*************\n");
for(i=0;i<10;i++)
{
if(i != 9)
printf("%d, ", arr[i]);
else
printf("%d", arr[i]);
}
for(i=8;i>=0;i--)
{
for(j=0;j<=i;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
printf("\n************排序后*************\n");
for(i=0; i<10;i++)
{
if(i != 9)
printf("%d, ",arr[i]);
else
printf("%d",arr[i]);
}
return 0;
}
int main()
{
int score[]={67,98,75,63,82,79,81,91,66,84};
printf("%d\n",sum_exam(score));
printf("%d\n",max_exam(score));
printf("%d\n",min_exam(score));
printf("%f\n",ave_exam(score));
printf("%d\n",sort_exam(score));
return 0;
}
请求大神看看:如图,输出结果红框内为什么不是78.6而是78.000和最后为什么输出980了?
输出f保留到 小数点后一位用 %.1f
否则 会输出本身精度值
那个哦就是个 返回值会放在C语言编译器约定的位置(比如栈顶或者A寄存器),调用者是不管被调函数的执行情况的,他只会在你函数返回时,去该位置取返回值,你没有放该值,那么就是该位置的当前值了,当前值是啥就很难确定具体是什么了,但一定有。。。你最后的输出就是调用了 需要返回值 其他几个调用都返回了输出值 ,最后一个调用的返回值是存在的 值不确定
你要把sum的类型该成浮点(float)型;
而且因为你的sum = sum + arr[i](也就是总分这里)所以前面数组也要定义成浮点型才可以。
最后你的printf的格式也要改成浮点型的,我是用精确两位数来写的%.2f
然后我觉得你这个程序太麻烦了,你可以参考一下我的;
#include <stdio.h>
int main()
{
float score[] = { 67,98,75,63,82,79,81,91,66,84 };
int a = 9;
int b = 1;
int c;
int buf;
float sum = 0;
float average_score;
for (a = 0; a < 10; a++)
{
sum = sum + score[a];
}
average_score = sum / 10;
printf("aggregate score:%.2f\n", sum);//总分
printf("average score: %.2f\n", average_score);//平均数
while (b)
{
b = 0;
for(c = 0; c < a; c++)
{
if (score[c] < score[c + 1])
{
buf = score[c];
score[c] = score[c + 1];
score[c + 1] = buf;
b = 1;
}
}
a--;
}
printf("highest score: %.2f\n", score[0]);//最高分
printf("lowst score: %.2f\n", score[9]);//最低分
for (a = 0; a < 10; a++)
{
printf("%.2f\t", score[a]);//成绩降序排序
}
getchar();//我是用VS编译器编的所以要加这个getchar
return 0;
}
然后这道题我建议你学习一下冒泡法,这种方法能很简单的写出来.
我也是才开始接触c语言的,一起加油吧!
sum类型申明为float 或者 double,改成%.2f就可以了
C语言入门
926028 学习 · 20793 问题
相似问题