首先,先用我随身携带的"CPU"给你计算一下~
要想对称,当前有5位数字并且要求是"第一个",那么肯定最高位9不能变,次高位5不能变,低两位能变吗???显然不能,因为高位9和次高位5不能变,要对称,所以低两位也不能变,因此只需将"对称中心"8加1得到9~最后答案就是"95959"~
关于你的代码,只有一个很小的错误,那就是起始值"95859"已经是对称数字,所以你只需将95859加1,改为95860,即把for语句改为:
for(i=95860;;i++)
{
...
}
即可
作为程序设计人员,要勤动手勤动脑~不要随便张口问问题~祝你成功~
麻烦补充问题 插入后数组a是不是要丢一个数字 或者存在另一个数组中好吧
我为要插入的数在数组里留了位置的 数组是排好序的
#include
void insert(int *p,int *p2,int num)
{
while(p!=p2&&num<*p)
{p++;}
if(p==p2)
{
*p=num;
}
else
{
while(p2!=p)
{
*p2=*(p2-1);
p2--;
}
*p2=num;
}
}
void main()
{
int a[10]={15,13,12,11,9,6,5,4,3};
int num;
int i=0;
printf("num:");
scanf("%d",&num);
insert(a,&a[9],num);
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}
有点复杂,慢慢想哈~