#include "stdio.h"
#include "stdlib.h"
#define N 100
int main()
{
int a;
scanf("%d",&a);
int n[N] = { };
int i, j, temp;
for(i = 0; i < N; i++)
scanf ("%d", &n[i]);
for (i = 1; i <= a - 1; i++)
for (j = i + 1; j <= a - 1; j++)
if (n[j] > n[j + 1])
{
temp = n[j];
n[j] = n[j + 1];
n[j + 1] = temp;
}
for (i = 0; i < 10; i++)
printf("%-4d", n[i]);
return 0;
}
educoder第一关:相邻两数找最大
#include <stdio.h>
#include<stdlib.h>
#define N 100
int main ()
{
/********** Begin **********/
int a[N],n,i,j,t=0,flag;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d ",&a[i]);
}
for(i=0;i<n-1;i++)
{
flag=0;
for(j=0;j<n-i-1;j++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
flag=1;
}
else if(a[i]<a[i+1])
{
a[i]=a[i];
a[i+1]=a[i+1];
}
}
if(flag==1)
{
for(j=0;j<n;j++)
printf("%d ",a[j]);
}
if(flag==0)
{
for(j=0;j<n-1;j++)
printf("%d ",a[j-1]);
printf("%d",a[j+1]);
}
/********** End **********/
return 0;
}
第二关:冒泡排序
#include <stdio.h>
#include<stdlib.h>
#define N 100
int main ()
{
/********** Begin **********/
int a[N],n,i,j,k,t=0;
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-1-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(k=0;k<n;k++)
printf("%d ",a[k]);
printf("\n");
}
/********** End **********/
return 0;
}
12行应该是a,
for(i = 0; i < a; i++)
可以先把输入的数组打印出来看看。
两个for循环的下标应该从0开始,不然第1个数不参与比较了。
程序中错误的地方太多了,我给你重新修改了程序,调整了格式,如下所示:如有疑问,私信聊吧~
#include "stdio.h"
#include "stdlib.h"
//#define N 100
int main()
{
int N;
scanf("%d",&N);
int a[N];
int i, j, temp;
for(i = 0; i < N; i++)
scanf ("%d", &a[i]);
for (i = 0; i <= N - 1; i++)
{
for (j = i + 1; j <= N - 1; j++)
{
if (a[i] > a[j])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
for (i = 0; i < 10; i++)
printf("%-4d", a[i]);
return 0;
}
这段代码中有一个问题。在第14行的循环中,j 的值最大为 a-1,但是在第15行中,你试图访问 n[j+1],这可能会导致数组越界。你可以尝试将第14行的循环条件改为 j < a - 1。修改后:
#include "stdio.h"
#include "stdlib.h"
#define N 100
int main() {
int a;
scanf("%d",&a);
int n[N] = { };
int i, j, temp;
for(i = 0; i < N; i++)
scanf ("%d", &n[i]);
for (i = 1; i <= a - 1; i++)
for (j = i + 1; j < a - 1; j++)
if (n[j] > n[j + 1]) {
temp = n[j];
n[j] = n[j + 1];
n[j + 1] = temp;
}
for (i = 0; i < 10; i++)
printf("%-4d", n[i]);
return 0;
}