问一下怎么做这个题?
【程序填空】---------------------------------------------------------功能:已有一个已经排好序的数组,今输入一个数...
【程序填空】
---------------------------------------------------------
功能:已有一个已经排好序的数组,今输入一个数,按照原来排序的规律将它插入到数组中。
-------------------------------------------------------*/
#include<stdio.h>
void main()
{
int i=0,j,length=0,number,sign=0,label=0;
int a[20]={2,3,4,5,6,8,13,34};
printf("please input one integer:");
scanf("%d",&number);
while (a[i]!='\0')//count length of the array
{
length++;
i++;
}
for (i=0;i<length;i++) //calculate sequence of the number
{
if (a[i]>=a[i+1])sign=1;
else if(a[i]<a[i+1]) sign=-1;
if (sign!=0) break;
}
// set the label for different inserting way
if ((sign==1 && number<=a[length-1]) || (sign==-1 && number>=a[length-1])||sign==0)
{
label=1;
}
else if ((sign==-1 && number<=a[0]) || (sign==1 && number>=a[0]))
{
label=-1;
}
/*******************SPACE******************/
if (label==1) a[i]=number;//different inserting way
else if (label==0)
{
for (i=0;i<length;i++)
{
if ((number<=a[i] && number>=a[i+1]) || (number>=a[i] && number<=a[i+1]))
{
for (j=length;j!=i;j--)
/*******************SPACE******************/
【?】
a[i+1]=number;
/*******************SPACE******************/
【?】
}
}
}
else
{
for (j=length;j!=0;j--)
a[j]=a[j-1];
/*******************SPACE******************/
【?】
}
for (i=0;i<=length;i++)//output the final array
{
printf("%d,",a[i]);
}
} 展开
---------------------------------------------------------
功能:已有一个已经排好序的数组,今输入一个数,按照原来排序的规律将它插入到数组中。
-------------------------------------------------------*/
#include<stdio.h>
void main()
{
int i=0,j,length=0,number,sign=0,label=0;
int a[20]={2,3,4,5,6,8,13,34};
printf("please input one integer:");
scanf("%d",&number);
while (a[i]!='\0')//count length of the array
{
length++;
i++;
}
for (i=0;i<length;i++) //calculate sequence of the number
{
if (a[i]>=a[i+1])sign=1;
else if(a[i]<a[i+1]) sign=-1;
if (sign!=0) break;
}
// set the label for different inserting way
if ((sign==1 && number<=a[length-1]) || (sign==-1 && number>=a[length-1])||sign==0)
{
label=1;
}
else if ((sign==-1 && number<=a[0]) || (sign==1 && number>=a[0]))
{
label=-1;
}
/*******************SPACE******************/
if (label==1) a[i]=number;//different inserting way
else if (label==0)
{
for (i=0;i<length;i++)
{
if ((number<=a[i] && number>=a[i+1]) || (number>=a[i] && number<=a[i+1]))
{
for (j=length;j!=i;j--)
/*******************SPACE******************/
【?】
a[i+1]=number;
/*******************SPACE******************/
【?】
}
}
}
else
{
for (j=length;j!=0;j--)
a[j]=a[j-1];
/*******************SPACE******************/
【?】
}
for (i=0;i<=length;i++)//output the final array
{
printf("%d,",a[i]);
}
} 展开
展开全部
3个[?]处填什么都不会全对,因为代码有错。将if (label==1) a[i]=number;一句改为if (label==1) a[length]=number;的话如下填就可以了:
?1: a[j]=a[j-1];
?2: break;
?3: a[0]=number;
不过这个出题者可能刚出道,while (a[i]!='\0'){...}和for (i=0;i<length;i++){...}两个循环写得实在不敢恭维;代码的算法设计也太繁琐……
?1: a[j]=a[j-1];
?2: break;
?3: a[0]=number;
不过这个出题者可能刚出道,while (a[i]!='\0'){...}和for (i=0;i<length;i++){...}两个循环写得实在不敢恭维;代码的算法设计也太繁琐……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询