嘿嘿
你的算法不好,因为“已知一组已经安排升序排列好的10个数”,所以根本不必重新排序,只需插入:
main()
{ int a[11]={1,3,5,8,9,11,16,17,20,25},i,n,temp;
scanf("%d",&n); for(i=0;i<10;i++) if(a[i]>=n) { temp=a[i]; a[i]=n; n=temp; } a[i]=n; for(i=0;i<11;i++) printf("%d ",a[i]);
}
小弟初学数组~不过类型题倒是见过:
main()
{int a[11]= {1,3,5,8,9,11,16,17,20,25};
int t1,t2,num,n,i,j;
scanf("%d",num);
n=a[9];
if(num>n)
a[10]=num;
else
{for(i=0,i<10;i++)
{if(a[i]>num)
{t1=a[i]; /*如果i的值大于num则把i的值赋予t1 */
a[i]=num; /*num的值赋予i*/
for(j=i+1;j<11;j++) /*这个for语句直到j不符合条件才结束,因为顺序以排好,这个for语句目的是把倒数字*/
{t2=a[j]; /*把j的值赋予t2*/
a[j]=t1; /*把上面t1的值赋予这里的j*/
t1=t2; /*把t2的值赋予t1以备下次循环的时候赋予a[i]*/
}
break;
}
}
}
for(i=0;i<11;i++)
printf("%5d",a[i]);
}
我感觉for(j=i+1;j<11;j++) 这个for语句最重要!不知道对不对~谢谢大家指教!
#include<stdio.h> main() { int a[5]={12,54,26,74}; int n,i,j,k; printf("\nenter n:"); scanf("%d",&n); for(i=0;i<3;i++) { for(j=i+1;j<4;j++) if(a[i]>a[j]) {k=a[i]; a[i]=a[j]; a[j]=k;} } for(i=0;i<4;i++) printf("%3d",a[i]); printf("\n"); a[4]=n; for(i=0;i<4;i++) { for(j=i+1;j<5;j++) if(a[i]>a[j]) {k=a[i]; a[i]=a[j]; a[j]=k;} } for(i=0;i<5;i++) printf("%3d",a[i]); }
楼上的。。我认为对啊,怎么他们的程序那么吓人??
还 有 a[4]=n;如果把 a[4]改成 a[5]或其他的饿就不行拉。。。。。。这是为什么啊 ???