任意给定n个整数,求这n个整数序列的和、最小值和最大值。

任意给定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上一直是四十分
,不知道遗漏了什么
采用了冒泡排序

非常感谢

有几个错误

  1. 第6行,int arr[n-1]; 应该改成 int arr[n];
  2. 第23行 {for (j=0;j<=(n-j-1);j++) 这个j<=(n-j-1) 应该改成 j<=(n-i-1)
  3. 上面两个改了后看下,题目说输出是3个空格,也可以改改, 注意第9行和32行同时改

帮你改好了,在注解里,有不会的可以问

img

#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 ;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

pta上面的提示是什么,注意输入输出格式以及类型问题。