麻烦各位高手帮我详解一下这个C程序各行的意思.谢谢了!!

2024-12-19 11:47:15
推荐回答(6个)
回答1:

/************************************************************************/
/* 输入一个数字,按大小顺序插入数组并输出 */
/************************************************************************/
#include
void main()
{
int a[6] = {1,3,6,7,9}; //原数组
int i,j,x; //申明变量,i,j用于循环,x用于输入
scanf("%d",&x); //输入数字。。。
for(i=0;i<5;i++) //循环 目的是找到比输入数字大的位置,就是要把这个数字插在哪个位置上面
if(x for(j=5;j>i;j--) //再一次循环,这次是把所有比输入大的数字往后移一位,好空出一个位置来放输入的数字
a[j]=a[j-1]; //把数组中比输入数字大的往后移位
a[j]=x; //插入输入的数字
for(i=0;i<6;i++) //循环打印
printf("%4d",a[i]);
printf("\n");
}

回答2:

#include
void main()
{
int a[6] = {1,3,6,7,9};
int i,j,x;
scanf("%d",&x);
for(i=0;i<5;i++)
{
if(x break;//如果输入的数x小于a[i] 那么break
for(j=5;j>i;j--) // 循环不用说了吧
{
a[j]=a[j-1]; //如果a[j] ==a[j-1] a[j] = x;
a[j]=x;
}
}
for(i=0;i<6;i++)//同样 循环6次输出a[0]-a[5]
{
printf("%4d",a[i]);
printf("\n");//换行
}
}

也就是说输入的数如果大于等于a中的元素,就把后面的元素值赋值给前面的,并且把后面的值用x赋值
然后输出a中所有的数。 有很多{}少了。应该是我改了之后这样儿

回答3:

这是一个 插入排序 IF 包括if 及前面是 逐个比较 找出 满足条件的 i 然后记录这个位置 之后是 吧找出的i的位置用 输入的 X替换 只是采用反着输出而已

#include
void main()
{
int a[6] = {1,3,6,7,9};
int i,j,x;
scanf("%d",&x);
for(i=0;i<5;i++)
if(x for(j=5;j>i;j--) //总共是a[0]到a[i-1],反着从a[5]向前输出将i及i后面都向后挪了一个位置,数组元素变成7个了
a[j]=a[j-1]; //将数组前一个元素挪到后一个
a[j]=x; //插入x
for(i=0;i<6;i++) //逐个输出
printf("%4d",a[i]);
printf("\n");
}

回答4:

#include
void main()
{
int a[6] = {1,3,6,7,9};
int i,j,x;
scanf("%d",&x);
for(i=0;i<5;i++)
if(x for(j=5;j>i;j--)
a[j]=a[j-1]; ///次循环数据移动
a[j]=x; //最后将x值赋给a【0】 这是再循环外 j变小了
for(i=0;i<6;i++) //循环打印a中数据
printf("%4d",a[i]);
printf("\n");
}

数组a中有若干数据
如果你输入得数据小于a中任意数据 就打印a中的数据...
否侧 将你输入的数据存放在数组a的第一个位置 前面的数据后移一位 最后数据被覆盖
最后打印出来...

回答5:

#include
void main()
{
int a[6] = {1,3,6,7,9};
int i,j,x;
scanf("%d",&x);
for(i=0;i<5;i++)
if(x//如果x for(j=5;j>i;j--)
a[j]=a[j-1];//这个相当于数据转移。每个数往后挪一位
a[j]=x;
for(i=0;i<6;i++)
printf("%4d",a[i]);
printf("\n");
}

回答6:

数组a是按从小到大的顺序排列的,这个程序就是将你输入的数字插入到数组a 中之后数组还是按从小到大的顺序排列