运行时为什么会直接跳过d=getchar();执行下一条语句?
题目描述回文数:即反转后与本身相等的数,请编写一个程序求出区间内的回文数
PS:注意是开区间还是闭区间
输入
第一行为一个整数N,表示下面有N组测试数据
每组测试数据格式为[a,b]{a<=x<=b}或者(a,b){a<x<b}
输出
对于每组测试数据,输出该区间内有多少回文数
样例输入
2
[111,111]
(111,111)
样例输出
1
0
这道题我完全没有思路,不会输入[111,111]
(111,111)
在同学的指导下勉强写了一下,可是完全不对,运行时不知道为什么直接跳过了d=getchar();以下是我写的程序,大家帮忙看看,提点意见或者思路吧,谢谢!
#include<stdio.h>
#include<string.h>
int main()
{
int a,b,g,i=0,sum=0,p,sune=0,s=0;//a和b是例子里的111和111,sum是用来记录比较了多少数组sum[]中的元素,sune是用来记录回文数个数的,s是用来控制输入的组数的//
char d,k,min[500]={1,2};
scanf("%d",&g);//输入组数//
for(s=0;s<g;s++)
{
d=getchar();//输入“[”或者“(” 的//
scanf("%d,%d",&a,&b);
k=getchar();//输入“[”或者“(” 的,与上面的对应//
p=a;
if(d=='[')//判断是闭区间还是开区间//
{
while(a<=b)
{
while(p>0)
{
min[i]=p%10;
p=p/10;
i++;
}//将整数a分解后依次存入数组min中//
for(i=0;i<strlen(min);i++)
{
if(min[i]==min[strlen(min)-i])
sum++;
if(2*sum>=strlen(min))
sune++;
}//判断是否为回文数//
a++;
}
printf("%d",sune);
}
if(d=='(')
{
p++;
while(a<b)
{
while(a>0)
{
min[i]=p%10;
p=p/10;
i++;
}//将整数a分解后依次存入数组min中//
for(i=0;i<strlen(min);i++)
{
if(min[i]==min[strlen(min)-i])
sum++;
if(2*sum>=strlen(min))
sune++;
}//判断是否为回文数//
a++;
}
printf("%d",sune);
}
}
return 0;
}