有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。

2024-11-25 16:41:41
推荐回答(3个)
回答1:

#include

int main()

{

int a[11]={1,4,6,9,13,16,19,28,40,100};

int temp,i=0,j=0;

scanf("%d",&temp);

for(i=9;i>=0;i--)

{

if(temp

a[i+1] = a[i];

}else{

a[i+1] = temp;

break;

}

}

for(i=0;i<11;i++)

{

printf("%d\t",a[i]);

}

system("pause");

return 0;

}

扩展资料:

printf()用法:

1、printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。

格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。

要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。

2、printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。

printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。

其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。

回答2:

for(i=0;i<5;i++) // 循环,因为你的原数组是升序排列,他的目的是将输入的数,与数组的第一个开始一一比较大小
if(x break; // 如果上述判断成立,则直接跳出for循环,否则执行下一个循环,也就是说输入的数比当前数组中的数大,那么他需要和后面一个数组的数继续来做比较,一旦确认这个数比当前数小,就说明这个数应该插入在这个数组数的前面了
for(j=5;j>i;j--) //通过上面的循环,就能确定一个i,输入的数应该插入第i个数组数的前面,但是插入后,所有从i开始的数组数都应该往后面递推一个位数才可以留出一个位置来,该循环就是将第i个数组数后面的所有数组数都往后递推一位
a[j]=a[j-1]; //交换位置,他是从最后一位开始往前交换的
a[j]=x; //将交换多出来的位置赋值x
printf("Now array a:\n"); //屏幕输出Now array a:
for(i=0;i<6;i++) //循环输出数组至屏幕
printf("%4d",a[i]);
printf("\n"); // 输出回车
return 0;

回答3:

你这个程序其他都对,但好像插入点有点问题。
在for(j=5;j>i;j––)
a[j]=a[j-1]; 从后面开始,把所有数后移对吧?
但你后移到k的插入点的时候,应该
a(j-1)=k;把k得值赋予j-1啊,j-1才是空出来的位置,而不是a[j]。对吧?