大哥能不能格式化好一点再贴上来,程序主要功能也说明一下嘛,这样大家也好分析,弄了半天如下:
int main()
{
long int s;
int long fun(long s);
printf("please enter a number:");
scanf("%ld,&s");
s=fun(s);
return s;
}
int long fun(long s)
{
int i,j,t,n,temp,a[10];
if(s)
{
t=s%10; //获取最低位,不知道具体功能是什么,这里是尝试去分析
if(!(t%2))//是偶数执行
a[i++]=t; //偶数则放到数组,这里就有问题了,i是未初始化的,执行a[i++]不知道放到哪里去了
s=s/10;
} //就算前面i初始化了i=0;到这里之后,i不是等于1就是0,如果s的个位是偶数就是1,奇数时为0,因为前面代码执行一次,前提s不等于0,这个只执行一次貌似违背楼主的意图吧,把if(s)改while(s)就可以提取s里面所有偶数位放到a数组了,不知道楼主是不是这个意思,后面不分析了
for(n=0;n for(j=n+1;j if(a[j]>a[n])
{
temp=a[n];a[n]=a[j];a[j]=temp;
}
s=0;
for(n=0;n s=s*10+a[n];
return s;
}
这个地方错了哦~~
scanf("%ld,&s");
双引号 " 跑到后面去了~~要放到逗号 , 前面~~
就像这样~~
scanf("%ld",&s);
很简单,你的fun函数中声明的变量i,j,t, n, temp,a[10],都没赋初值
then,在 if( !(t%2) )这个if语句中,a[i++], i++使得这个a数组越界了
then, error appears