c语言的一个问题,麻烦大家帮我看看

来源:百度知道 编辑:UC知道 时间:2024/05/18 07:09:24
#include <stdio.h>
#include <math.h>
#include <string.h>

void main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++)
{
p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j])
{
p=j;q=a[j];
}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d ",a[i]);
} /*按顺序排列输出*/
printf("\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>a[i])
{
for(s=9;s>=i;s--) a[s+1]=a[s];
break;
}
a[i]=n;
for(i=0;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
}

最开始定义a[11]={127,3,6,28,54,68,87,105,162,18};的时候,如果写成
a[11]={127,3,6,28,54,68,87,105,162,18,0

是的。在初始不够的情况下,不够的数自动默认为0.
比如a[11]={1},
就相当于
a[11]={1,0,0...0}
当你输入一个数,赋值给这个位置的时候,他相当于把0给顶替了。
记住。赋值不够的情况下,系统自动默认后面的数为0,如果是字符就是默认为\0

会。
是这样的:你定义a[n],为m(m<n,只能是按顺序的前m项)个变量赋初值,那么,后面的n-m项都是0(即缺省的是0)

那后面重新输入的数 是什么意思啊.11个数没输完就补零了反正

貌似 a[11]={127,3,6,28,54,68,87,105,162,18}; 这个只有10 个!我没弄清楚你的问题, 但是我知道 0 是绝对不能省略滴!