数列排序 请各位大神看看有什么问题?

梦屿~千寻 2019-01-14 03:35:22
#include <stdio.h>
int main()
{
int n,i,j;
scanf("%d",&n);
int a[n],temp;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n+1;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
...全文
264 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
梦屿~千寻 2019-01-26
  • 打赏
  • 举报
回复
引用 1 楼 lin5161678的回复:
遇到什么问题说清楚
编译错误贴错误提示
运行错误贴运行截图

代码要用[c o d e = c] [ / c o d e ] 去掉空格包起来
请问怎么用代码要用[c o d e = c] [ / c o d e ] 去掉空格包起来?
香蜜凉凉 2019-01-17
  • 打赏
  • 举报
回复
你这个是数组输入几个元素,最后让数组按从小到大的顺序输出,
罗良彬 2019-01-17
  • 打赏
  • 举报
回复
12行似乎错了
应该是for(int j=i+1;j<n;j++)
自信男孩 2019-01-14
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n,i,j;

scanf("%d", &n);
//int a[n],temp;
int temp;
int *a = (int *)malloc(sizeof(int) * n);
if (!a)
return -1;

for(i=0;i<n;i++) {
scanf("%d",&a[i]);
}

for(i=0;i<n;i++)
{
//for(j=i+1;j<n+1;j++)
for(j=i+1;j < n; j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
putchar(10);
free(a);
return 0;
}


参考一下吧

C语言不支持动态数组,那么可以考虑malloc/free来动态申请空间。
另外,注意数组越界的问题。即排序的第二层循环里,注意j的循环最大值。
qzylala 2019-01-14
  • 打赏
  • 举报
回复
感觉没问题,选择排序。就是老一点的不支持动态数组。 还有建议输出加个换行或者 \t 什么的。
lin5161678 2019-01-14
  • 打赏
  • 举报
回复
遇到什么问题说清楚
编译错误贴错误提示
运行错误贴运行截图

代码要用[c o d e = c] [ / c o d e ] 去掉空格包起来

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧