任意给定n个整数,求这n个整数序列的和、最小值和最大值。
输入格式:
第一行为一个整数n(0
输出格式:
只有一行,为三个空格分隔的,依次代表整数序列的和、最大值和最小值。
#include
int main ()
{ int n=0;
int i,s ,j;
scanf("%d",&n);
int arr[n-1];//
if (n<=1)
{scanf("%d",&s);
printf("%d %d %d",s,s,s);}
else
{ for (i=0;i<=(n-1);i++)
{
scanf("%d",&s);
arr[i]=s;
}
int sum=0;
for (i=0;i<=(n-1);i++)
{sum+=arr[i];
}
for(i=0;i<=(n-1);i++)
{for (j=0;j<=(n-j-1);j++)
{ int temp=0;
if (arr[j]>arr[j+1])
{temp =arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printf("%d %d %d\n",sum,arr[n-1],arr[0]);}
return 0 ;}
试了很多次测试数据都能达到要求,但是PTA上一直是四十分
,不知道遗漏了什么
采用了冒泡排序
非常感谢
有几个错误
帮你改好了,在注解里,有不会的可以问
#include<stdio.h>
int main ()
{
int n=0;
int i,s ,j;
scanf("%d",&n);
int arr[n];//int arr[n-1]改成 int arr[n]
/*if (n<=1)
{
scanf("%d",&s);
//printf("%d %d %d",s,s,s);
}*/
//else
//输入完成再排序
for (i=0; i<=(n-1); i++)
{
scanf("%d",&s);
arr[i]=s;
}
//计算 sum 没问题
int sum=0;
for (i=0; i<=(n-1); i++)
{
sum+=arr[i];
}
//排序,小到大
for(i=0; i<(n-1); i++)
{
for (j=0; j<(n-i-1); j++)//j<=(n-j-1)这里改成 j<(n-i-1)
{
int temp=0;
if (arr[j]>arr[j+1])
{
temp =arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printf("%d %d %d\n",sum,arr[0],arr[n-1]);
return 0 ;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!pta上面的提示是什么,注意输入输出格式以及类型问题。