ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

2025级SYUCT-ACM新生第五次训练 题解

2025级SYUCT-ACM新生第五次训练 题解

A. 排序1

直接冒泡即可,注意double t

#include<stdio.h>doublea[1010];intmain(){intn;scanf("%d",&n);for(inti=0;i<n;i++){scanf("%lf",&a[i]);}for(inti=0;i<n-1;i++){for(intj=0;j<n-1-i;j++){if(a[j]>a[j+1]){doublet=a[j];a[j]=a[j+1];a[j+1]=t;}}}for(inti=0;i<n;i++){printf("%.2lf ",a[i]);}printf("\n");return0;}

B.排序2

直接冒泡即可,注意用getchar()吃掉多余的空格和换行

#include<stdio.h>chara[1010];intmain(){intn;scanf("%d",&n);getchar();for(inti=0;i<n;i++){scanf("%c",&a[i]);getchar();}for(inti=0;i<n-1;i++){for(intj=0;j<n-1-i;j++){if(a[j]>a[j+1]){chart=a[j];a[j]=a[j+1];a[j+1]=t;}}}for(inti=0;i<n;i++){printf("%c ",a[i]);}printf("\n");return0;}

C. 排序3

直接冒泡即可,注意以EOFEOFEOF结尾的多组输入

#include<stdio.h>inta[1010];intmain(){intn;while(scanf("%d",&n)!=EOF){for(inti=0;i<n;i++){scanf("%d",&a[i]);}for(inti=0;i<n-1;i++){for(intj=0;j<n-1-i;j++){if(a[j]>a[j+1]){intt=a[j];a[j]=a[j+1];a[j+1]=t;}}}for(inti=0;i<n-1;i++){printf("%d ",a[i]);}printf("%d\n",a[n-1]);}return0;}

D. 排序4

双重forforfor循环遍历每两个数,将ai−aja_i - a_jai​−aj​和aj−aia_j - a_iaj​−ai​加入一个数组中,冒泡即可。

#include<stdio.h>inta[1010],b[10005];intmain(){intn;intm=0;scanf("%d",&n);for(inti=0;i<n;i++){scanf("%d",&a[i]);}for(inti=0;i<n-1;i++){for(intj=i+1;j<n;j++){b[m++]=a[i]-a[j];b[m++]=a[j]-a[i];}}for(inti=0;i<m-1;i++){for(intj=
返回列表