请问一下这两题题怎么写

1.任意输入n个整数,按降序排序后输出,需要结束时,先按回车,再按Ctrl+z,再回车 如 3 43 5 7 输出 43 7 5 3 2.数列s=1+2/3*4+3/4*5……n/(n+1)(n+2) 输入正整数n≥2 如 输入2 输出1.167

供参考:

//1.
#include<stdio.h>

int main()
{
   int i,j,t,n=0,a[256];
   while(scanf("%d",&a[n])!=EOF)n++;
   for(i=0;i<n-1;i++)
       for(j=0;j<n-1-i;j++)
           if(a[j]<a[j+1]){
              t=a[j];a[j]=a[j+1];a[j+1]=t;
           }
   for(i=0;i<n;i++)printf("%d%c",a[i],i==n-1?'\n':' ');
   
   return 0;
}




//2.

#include<stdio.h>
int main()
{
  int n,i=2;
  double s=1.0;
  scanf("%d",&n);
  while(n-- > 1)
  {     s+=1.0*i/(i*i+3*i+2);
        i++;
  }
  printf("%.3lf\n",s);
  
  return 0;
}

 

 第一题:用数组+sort函数就可以。

int cmp1(int a,int b)
{
    return b>a;
}
 
int array[5] = {3,100,45,2,0};
sort(a,a+5,cmp1);

第二题: 用for循环就可以。

double n,sum=0;
int m;
cin>>m;
for(n=1;n<=m;n++)
{
    if(n==1){
         sum+=1;
    }
    else
        sum+=n/(n+1);
}
cout<<sum<<endl;

 

先按回车,再按Ctrl+z,再回车====为啥要搞这么啰嗦的要求

#include <stdio.h>
void main(){
   int num[100],n,i,j,k;
   scanf("%d",&n);
   for(i=0; i<n; i++) {
       scanf("%d",&num[i]); 
   }
   
   for(i=0;i<n-1;i++){
      for(j=0;j<n-1-i;j++){
        if(num[j]<num[j+1]){
           k=num[j];
           num[j]=num[j+1];
           num[j+1]=k;
      }
     }
        for(i=0;i<n;i++)
        printf("%5d",num[i]);     
    
  }
}

 

// 第二题代码
#include<stdio.h>
main()
{
int i,n;
double s=1;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
s=s+i/(i+1)*(i+2);
}
printf("%lf\n",s);
}

 

结束一下弄的这么麻烦。。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632