解题思路:num为要插入的值,当nums[i] && num < nums[i+1]时,num要放在中间的位置,从nums[i+1]个元素到最后一个元素都向后移一位,当num大于数组最后一个元素,则num要放在最后,当num小于数组第一个元素,则numnum要放在第一位,数组中所有元素都向后移一位
注意事项:
这是升序的代码,降序同理
参考代码:
//已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
int result,num,i,count = 9 - 1,j;
int nums[100];
int a = 9;
for(i = 0;i < a;i++)//循环录入数组元素
{
result = scanf("%d",&nums[i]);
while(result != 1)//当用户的输入不为数字类型
{
scanf("%*s");//清空缓冲区
result = scanf("%d",&nums[i]);//重新赋值
}
}
scanf("%d",&num);//录入num
for(i = 0;i < a;i++)
{
if(num == nums[i] || num > nums[i] && num < nums[i+1] )
{//如果用户输入的数字等于数组里的某个元素或者num>nums[i]并且小于nums[i+1]
while(count > i)//当num>i是停止后移
{
nums[count+1] = nums[count];
count--;//数组中原来的所有元素都往后移一位
}
nums[i+1] = num;
break;
}
if(num > nums[a-1] )//用户输入的值最大,放到数组最后面
{
nums[a] = num;
break;
}
if(num < nums[0])//用户输入的值最小,放在第一位
{
while(count >= 0)//数组中原来的所有元素都往后移一位
{
nums[count+1] = nums[count];
count--;
}
nums[0] = num;//用户输入的数字放在第一位
break;
}
}
a++;
for(i = 0;i < a;i++)
{
printf("%d\n",nums[i]);
}
2,指针
int result,num,i,count = 9 - 1,j;
int nums[100];
int a = 9;
int *p = nums;
for(i = 0;i < a;i++)//循环录入数组元素
{
result = scanf("%d",p+i);
while(result != 1)
{
scanf("%*s");
result = scanf("%d",p+i);
}
}
scanf("%d",&num);//录入num
for(i = 0;i < a;i++)
{
if(num == *(p+i) || num > *(p+i) && num < *(p+i+1) )
{//如果用户输入的数字等于数组里的某个元素或者num>nums[i]并且小于nums[i+1]
while(count > i)//当num>i是停止后移
{
//nums[count+1] = nums[count];
*(p+count+1) = *(p+count);
count--;//数组中原来的所有元素都往后移一位
}
//nums[i+1] = num;
*(p+i+1) = num;
break;
}
if(num > /*nums[a-1]*/ *(p+a-1) )//用户输入的值最大,放到数组最后面
{
//nums[a] = num;
*(p+a) = num;
break;
}
if(num < /*nums[0]*/ *p)//用户输入的值最小,放在第一位
{
while(count >= 0)//数组中原来的所有元素都往后移一位
{
//nums[count+1] = nums[count];
*(p+count+1) = *(p+count);
count--;
}
//nums[0] = num;//用户输入的数字放在第一位
*p = num;
break;
}
}
a++;
for(i = 0;i < a;i++)
{
printf("%d\n",*(p+i));
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复