有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。
int main()
{
int a[6] = {1,3,6,7,9};
int i,j,x,t;
printf("insert data:");
scanf("%d",&x);
for(i=0;i<5;i++)
if(x<a[i])
break;
for(j=5;j>i;j--)
a[j]=a[j-1];
a[j]=x;
printf("Now array a:\n");
for(i=0;i<6;i++)
printf("%4d",a[i]);
printf("\n");
return 0;
}
我是一个新手,刚学到数组,里面有个题是这样的,从第9行起是什么意思啊,谁会的麻烦帮忙写下从第9行起的注释吧。谢谢。 展开
#include<stdio.h>
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]){
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("<格式化字符串>",<参量表>)。
其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。
if(x<a[i]) // 判断,条件是如果输入的数小于,当前循环的那个数
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;
在for(j=5;j>i;j––)
a[j]=a[j-1]; 从后面开始,把所有数后移对吧?
但你后移到k的插入点的时候,应该
a(j-1)=k;把k得值赋予j-1啊,j-1才是空出来的位置,而不是a[j]。对吧?