10年江苏省计算机二级(春)一道C语言编程题,找不出自己哪里编错了
发布网友
发布时间:2022-04-26 17:53
我来回答
共2个回答
热心网友
时间:2023-10-19 05:06
首先你的输入格式与要求不符!
其次
else if (y%1000/100==y%100/10&&y%100/10==y%10&&huiwen(y/1000))
{ a[i][0]=k; a[i][1]=y;i++;}
这段代码有问题吧,什么意思?追问输入格式这个是没有按照要求- -|| 想先看看能不能运行出来所以没管细节
这段代码我想表达的是:如果整数y的最后三位数相等并且去掉这最后三位数后整数y是回文数,那么把满足要求的k和y值存放到a数组中
追答
回文判断程序写错了
优化后的完整代码
int findnum(int n1,int n2,long a[][2])
{
int k,y,i=0;
for(k=n1;k<=n2;k++)
{
y=k*k+k+17;
if ((y%1000)%111==0 && huiwen(y/1000) )
{
a[i][0]=k;
a[i][1]=y;
i++;
}
}
return(i);
}
int huiwen(int n)
{
int sum=0,nn=n;//定义一个nn记录原n
while(n)
{
sum=sum*10+n%10;
n=n/10; //这里n变化了
}
if(sum==nn) //与原值比较
return(1);
else
return(0);
}
void main()
{
int n1,n2,i,num;
long a[20][2];
printf("Input n1 and n2:");
scanf("%d%d",&n1,&n2);
num=findnum(n1,n2,a);
printf(" k number\n");
for(i=0;i<num;i++)
printf("%d%10d\n",a[i][0],a[i][1]);
}
热心网友
时间:2023-10-19 05:07
没深入看,你的huiwen(int n)函数,sum不会等于n的,返回值一直是0,是不是这里错了追问是的!写错了QAQ 应该再加个中间量temp把n赋给temp的