#include <stdio.h>
int main()
{
int a[7] = {2, 5, 12, 32, 44, 57};
int b = 20;
int i;
int j;
int length;
length = sizeof(a) / sizeof(int);
printf("插入前的数组:");
for(i=0; i<length; i++){
printf("%-4d", a[i]);
}
printf("\n");
//插入的相关操作
if(b>a[5]){
a[6] = b;
}else{
for(i=0; i<length; i++){
if(a[i]<b){
continue;
}else{
for(j=5; j>=i; j--){
a[j+1] = a[j];
}
a[j+1] = b;
}
break;
}
}
printf("插入后的数组:");
for(i=0; i<7; i++){
printf("%-4d", a[i]);
}
return 0;
}
学习到:
- 编码思想
- 考虑到插入输与数组的两种关系
第一种
1数组的数值全都小于插入数
2直接把数插到最后的位置
第二种
1数组的数值有大于有小于(全小于也适用)
2(遍历)找到数值大于插入数的位置,记录该位置
3(循环移动)把后面的数往后移动(包括当前大于插入值的数)
4把插入数插到记录的位置
5结束
- 循环,if()else()和continue,break的混合使用
for(i=0; i<length; i++){
if(a[i]<b){
continue;
}else{
for(j=5; j>=i; j--){
a[j+1] = a[j];
}
a[j+1] = b;
}
break;
}
虽然可以省略if() continue那块,但是这样些结构更清晰,完整
3. 求数组的长度
length = sizeof(数组名) / sizeof(数组类型\数组元素);