找不到代码错误,不懂就问,本人菜鸡,求指点错误,轻喷

youla2 2019-11-27 09:43:30
题目如下

能试的数(1-100)大概都试过了,都没问题,作业平台说答案错误86。
代码是我化到最简了,不喜轻喷

#include<stdio.h>
#include<string.h>
void PD3(const char a[]);
void PD5(const char a[]);
void PD8(const char a[]);
void PD11(const char a[]);
char a[10001];
int flag=0,f3=0,f5=0,f8=0,f11=0;
int main()
{
scanf("%s",a);
PD3(a); PD5(a); PD8(a); PD11(a);
if(flag==1)
{printf("Yes\n");}
else
printf("No");
if(f3==1) printf("3 ");
if(f5==1) printf("5 ");
if(f8==1) printf("8 ");
if(f11==1) printf("11 ");
return 0;
}
void PD3(const char a[])
{
int temp=0,j;
for(j=0;a[j]!='\0';j++)
{temp+=a[j]-48; }
if(temp%3==0&&a[0]!='0')
{f3=1; flag=1; }
}
void PD5(const char a[])
{
int j;
for(j=0;a[j]!='\0';j++)
{;}
if(a[0]!='0'&&a[j-1]=='0'||a[j-1]=='5')
{f5=1; flag=1;}
}
void PD8(const char a[])
{
int sum=0,j,len;
for(j=0;a[j+3]!='\0';j++)
{;}
len=strlen(a);
if(len<=2)
{
if(len==1) {sum=a[j]-48;}
if(len==2) {sum=(a[j]-48)*10+a[j+1]-48;}
}
else
{sum=(a[j]-48)*100+(a[j+1]-48)*10+a[j+2]-48;}
if(sum%8==0&&a[0]!='0')
{f8=1; flag=1; }
}
void PD11(const char a[])
{
int j,sum1=0,sum2=0,sum;
for(j=0;a[j]!='\0';j++)
{
sum1+=a[j]-48; j++;
if(a[j]!='\0')
sum2+=a[j]-48;
}
sum=sum1-sum2;
if(sum%11==0&&a[0]!='0')
{f11=1; flag=1;}
}

...全文
45 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
youla2 2019-11-28
  • 打赏
  • 举报
回复
引用 2 楼 不闻窗外事 的回复:
for(j=0;a[j]!='\0';j++)
{temp+=a[j]-48; }
写错了,应该随着位的变化 等号右边乘以10的几次方
可能我没说清楚。。,temp求的是各位数的和,不是数本身
不闻窗外事 2019-11-28
  • 打赏
  • 举报
回复
for(j=0;a[j]!='\0';j++)
{temp+=a[j]-48; }
写错了,应该随着位的变化 等号右边乘以10的几次方
寻开心 2019-11-27
  • 打赏
  • 举报
回复
a=0 的时候呢

我觉得问题可能出在这里。 a=0的时候,它应该是3,5,8,11的倍数
从你的代码上看, 你输出很可能是NO

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧