|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main(){
int a[100],n,i,j,t;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=1;i<=n-1;i++){
for(j=1;j<=n-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",a[i]);
}
return 0;
}
这段代码是一个冒泡排序算法的实现,但是在输出有些问题。我发现了两个错误:
1. 在内层循环中,数组下标应该从0开始,而不是1。
2. 在输出时,数组元素之间缺少空格。
我对代码进行了修正,现在它应该正常工作了:
- #include <stdio.h>
- int main(){
- int a[100],n,i,j,t;
- scanf("%d",&n);
- for(i=0;i<n;i++){
- scanf("%d",&a[i]);
- }
- for(i=0;i<n-1;i++){
- for(j=0;j<n-i-1;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 ",a[i]);
- }
- printf("\n");
- return 0;
- }
复制代码
现在,这个代码会根据用户输入的数字n,接收n个整数并以降序冒泡排序。排序后,输出数组元素,元素之间有空格,并且在所有元素输出完后换行。
|
|