|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
void main()
{
int i,j,a[10],t;
printf("请输入10个数字:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<10;j++)
{
if(a[j]>a[j+1])
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(j=0;j<10;j++)
{
printf("%d\n",a[j]);
}
getchar();
getchar();
}
顺序排列是对的,但是后面会出现奇怪的乱码
求帮助!!!!
本帖最后由 jackz007 于 2021-3-15 14:07 编辑
- for(j=0;j<10;j++)
- {
- if(a[j]>a[j+1]) // j = 9 时,a[j + 1] = a[10] 下标越界
- t=a[j];
- a[j]=a[j+1]; // j = 9 时,a[j + 1] = a[10] 下标越界
- a[j+1]=t; // j = 9 时,a[j + 1] = a[10] 下标越界
复制代码
下面是我修改的代码,谨供楼主参考
- #include<stdio.h>
- int main(void)
- {
- int i , j , a[10] , t ;
- printf("请输入10个数字 : ") ;
- for(i = 0 ; i < 10 ; i ++) scanf("%d" , & a[i]) ;
- for(i = 0 ; i < 9 ; i ++){
- for(j = i + 1 ; j < 10 ; j ++) {
- if(a[i] > a[j]) {
- t = a[j] ;
- a[j] = a[i] ;
- a[i] = t ;
- }
- }
- }
- printf("%d" , a[0]) ;
- for(i = 1 ; i < 10 ; i ++) printf(" , %d" , a[i]) ;
- printf("\n") ;
- }
复制代码
编译、运行实况:
- D:\0002.Exercise\C>g++ -o x x.c
- D:\0002.Exercise\C>x
- 请输入10个数字 : 2 4 6 8 10 1 3 5 7 9
- 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10
- D:\0002.Exercise\C>
复制代码
|
|