C语言 急急急!!!!
Description求整数a~b之间,含有某个特定数字k的数值之和sum。假定a、b、k都是整数,且a<=b,0<=k<10。b-a<100000,sum在int类型的...
Description
求整数a~b之间,含有某个特定数字k的数值之和sum。假定a、b、k都是整数,且a<=b,0<=k<10。b-a<100000,sum在int类型的表示范围之内。
Input
输入为多行。第一行M表示有M组输入。之后有M行,每一行含有3个值:a,b,k,分别表示数据的范围和特定的数字。
Output
输出为多行,每一行对应于每一组输入的结果sum。
Sample Input
2
1 100 3
-10 10 2
Sample Output
792
0
HINT
注意对负数的处理。
#include <stdio.h>
int main()
{
int M,i,a,b,k,sum,j,e;
scanf("%d",&M);
for(i=0; i<M; i++)
{
scanf("%d %d %d",&a,&b,&k);
sum=0;
if(k!=0)
{
for(j=a; j<=b; j++)
{
if(j>0)
{
for(e=10; e<=j*10; e=e*10)
{
if(j%e==k||j/e==k)
{
sum += j;
break;
}
}
}
else if(j<0)
{
for(e=10; e<=(-j)*10; e=e*10)
{
if((-j)%e==k||(-j)/e==k)
{
sum += j;
break;
}
}
}
}
printf("%d\n",sum);
}
else
{
for(j=a; j<=b; j++)
{
if(j>0)
{
for(e=10; e<=j*10; e=e*10)
{
if(j%e==k)
{
sum += j;
break;
}
}
}
else if(j<0)
{
for(e=10; e<=(-j)*10; e=e*10)
{
if((-j)%e==k)
{
sum += j;
break;
}
}
}
}
printf("%d\n",sum);
}
}
}
为啥错误60%,怎么改? 展开
求整数a~b之间,含有某个特定数字k的数值之和sum。假定a、b、k都是整数,且a<=b,0<=k<10。b-a<100000,sum在int类型的表示范围之内。
Input
输入为多行。第一行M表示有M组输入。之后有M行,每一行含有3个值:a,b,k,分别表示数据的范围和特定的数字。
Output
输出为多行,每一行对应于每一组输入的结果sum。
Sample Input
2
1 100 3
-10 10 2
Sample Output
792
0
HINT
注意对负数的处理。
#include <stdio.h>
int main()
{
int M,i,a,b,k,sum,j,e;
scanf("%d",&M);
for(i=0; i<M; i++)
{
scanf("%d %d %d",&a,&b,&k);
sum=0;
if(k!=0)
{
for(j=a; j<=b; j++)
{
if(j>0)
{
for(e=10; e<=j*10; e=e*10)
{
if(j%e==k||j/e==k)
{
sum += j;
break;
}
}
}
else if(j<0)
{
for(e=10; e<=(-j)*10; e=e*10)
{
if((-j)%e==k||(-j)/e==k)
{
sum += j;
break;
}
}
}
}
printf("%d\n",sum);
}
else
{
for(j=a; j<=b; j++)
{
if(j>0)
{
for(e=10; e<=j*10; e=e*10)
{
if(j%e==k)
{
sum += j;
break;
}
}
}
else if(j<0)
{
for(e=10; e<=(-j)*10; e=e*10)
{
if((-j)%e==k)
{
sum += j;
break;
}
}
}
}
printf("%d\n",sum);
}
}
}
为啥错误60%,怎么改? 展开
1个回答
推荐于2016-03-14
展开全部
看看是不是你想要的:
#include <stdio.h>
main()
{
int M,a,b,k,i,j,sum,temp;
// int n; //注释部分为打印所有数据
printf("input line number:");
scanf("%d",&M);
for(i=0;i<M;i++)
{
scanf("%d %d %d",&a,&b,&k);
sum=0;
// n=0;
for(j=a; j<=b; j++)
{
temp = j>0?j:-j;
// if(temp==0&&k==0)
// {
// n++;
// printf("%d\t",j);
// if(n>=10)
// {
// n = 0;
// printf("\n");
// }
// }
// else
// {
while(temp > 0)
{
if(temp%10 == k)
{
sum += j;
// n++;
// printf("%d\t",j);
// if(n>=10)
// {
// n = 0;
// printf("\n");
// }
break;
}
temp /= 10;
}
}
// }
printf("sum:%d\n",sum);
}
while(1); //停留在打印界面用
}
#include <stdio.h>
main()
{
int M,a,b,k,i,j,sum,temp;
// int n; //注释部分为打印所有数据
printf("input line number:");
scanf("%d",&M);
for(i=0;i<M;i++)
{
scanf("%d %d %d",&a,&b,&k);
sum=0;
// n=0;
for(j=a; j<=b; j++)
{
temp = j>0?j:-j;
// if(temp==0&&k==0)
// {
// n++;
// printf("%d\t",j);
// if(n>=10)
// {
// n = 0;
// printf("\n");
// }
// }
// else
// {
while(temp > 0)
{
if(temp%10 == k)
{
sum += j;
// n++;
// printf("%d\t",j);
// if(n>=10)
// {
// n = 0;
// printf("\n");
// }
break;
}
temp /= 10;
}
}
// }
printf("sum:%d\n",sum);
}
while(1); //停留在打印界面用
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询