想问为什么下面的代码无法输出呢
#include <stdio.h>
int main()
{
int a[]={1,2,3,5,6,7,8,9,10};
int i,num,k,temp,t;
scanf("%d",&num);
for(i=0;i<9;i++)
{
if(num>a[8])
{
k=9;
}
if(num<a[0])
{
k=0;
}
if((num>a[i]&&num<a[i+1])||(num==a[i]))
{
k=i;
}
else break;
}
for(t=9;t>k+1;t--)
{
a[t]=a[t-1];
}
a[t+1]=num;
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
return 0;
}
除了第14行和第18行后面的中文分号要修改,还需要数组a要定义下数组长度再赋值,以及修改下寻找位置与移动元素的代码。
修改如下:
参考链接:
#include <stdio.h>
int main()
{
// https://blog.csdn.net/wanghao19920907/article/details/51787927
int a[10]={1,2,3,5,6,7,8,9,10};
int i,num,k,temp,t;
scanf("%d",&num);
for(i=0;i<9;i++)
{
if(num>=a[8]) // 大于等于a[8],包含和最后一个元素相等的情况
{
k=9;
}
if(num<=a[0]) // 小于等于a[0],包含和第一个元素相同的情况
{
k=0;
}
// 当输入的数大于等于当前元素,以及小于等于后面元素的位置
// 则元素的插入位置为后一个元素的下标位置
if((num>=a[i]&&num<=a[i+1]))
{
k=i+1;
}
}
//printf("k=%d\n",k);
if(k==9){ // 如果插入位置为数组最后一个下标位置,则直接赋值即可
a[k] = num;
}else{ //其他情况,先将插入位置起始到后面的元素后移一个位置,再插入输入的数
for(i=9;i>k;i--){
a[i]=a[i-1];
}
a[k] =num;
}
// for(t=9;t>k+1;t--)
// {
// a[t]=a[t-1];
// }
// a[t+1]=num;
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
14和18行你用的中文的分号,应该用英文分号