在一个排好序的数组中添加一个数使它按原来的顺序输出 运行结果有有关问题 大神帮帮小弟我
在一个排好序的数组中添加一个数使它按原来的顺序输出 运行结果有问题 大神帮帮我
#include<stdio.h>
void add(int num[5]);
int main()
{
int num[5]={2 , 4 , 6 , 8 , 9} , i ;
add (num);
for(i=0;i<6;i++)
printf("%d",num[i]);
}
void add(int num[5])
{
int i , j , a ,k ;
printf( "输入要插入的数=\n" ) ;
scanf( "%d" , &a );
for(i=0;i<5;i++)
{
if(a<num[i])
break;
}
for(j=5;j>=i+1;j--)
{ k=j-1;
num[j]=num[k];
} num[i]=a;} 但是运行结果最后一个数总是5
------解决思路----------------------
数组越界。
你的数组只有 5 个位置,再插入一个数就不够用了。
------解决思路----------------------
#include<stdio.h>
void add(int num[6]);
int main()
{
int i;
int num[6]={2 , 4 , 6 , 8 , 9};
add (num);
for(i=0;i<6;i++)
{
printf("%d",num[i]);
}
return 0;
}
void add(int num[6])
{
int i , j , a ,k ;
printf( "输入要插入的数=\n" ) ;
scanf_s( "%d" , &a );
for(i=0;i<5;i++)
{
if(a<num[i])
break;
}
for(j=5;j>=i+1;j--)
{ k=j-1;
num[j]=num[k];
}
num[i]=a;
}
// 但是运行结果最后一个数总是5
------解决思路----------------------
没有啊,可以正常运行,插入数后重新排列好
#include<stdio.h>
void add(int num[5]);
int main()
{
int num[5]={2 , 4 , 6 , 8 , 9} , i ;
add (num);
for(i=0;i<6;i++)
printf("%d",num[i]);
}
void add(int num[5])
{
int i , j , a ,k ;
printf( "输入要插入的数=\n" ) ;
scanf( "%d" , &a );
for(i=0;i<5;i++)
{
if(a<num[i])
break;
}
for(j=5;j>=i+1;j--)
{ k=j-1;
num[j]=num[k];
} num[i]=a;} 但是运行结果最后一个数总是5
------解决思路----------------------
数组越界。
你的数组只有 5 个位置,再插入一个数就不够用了。
------解决思路----------------------
#include<stdio.h>
void add(int num[6]);
int main()
{
int i;
int num[6]={2 , 4 , 6 , 8 , 9};
add (num);
for(i=0;i<6;i++)
{
printf("%d",num[i]);
}
return 0;
}
void add(int num[6])
{
int i , j , a ,k ;
printf( "输入要插入的数=\n" ) ;
scanf_s( "%d" , &a );
for(i=0;i<5;i++)
{
if(a<num[i])
break;
}
for(j=5;j>=i+1;j--)
{ k=j-1;
num[j]=num[k];
}
num[i]=a;
}
// 但是运行结果最后一个数总是5
------解决思路----------------------
没有啊,可以正常运行,插入数后重新排列好