实在是找不到哪里有问题了

youla2 2019-11-27 05:29:42
这是题目




#include<stdio.h>
#include<string.h>
void PD3(char a[]);
void PD5(char a[]);
void PD8(char a[]);
void PD11(char a[]);
char a[10001];
int flag=0,f3=0,f5=0,f8=0,f11=0;
int main()
{
scanf("%s",a);
PD3(a);
PD8(a);
PD5(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(char a[])
{
int temp=0,sum=0,j;
for(j=0;a[j]!='\0';j++)
{
temp+=a[j]-48;
}
if(temp/100000==0)
{
sum+=temp/10000+(temp/1000)%10+(temp/100)%10+(temp/10)%10+temp%10;

}
if(temp/10000==0)
{
sum+=temp/1000+(temp/100)%10+(temp/10)%10+temp%10;

}
if(temp/1000==0)
{
sum+=temp/100+(temp/10)%10+temp%10;

}
if(temp/100==0)
{
sum+=temp/10+temp%10;

}
if(sum%3==0&&temp!=0)
{
f3=1;
flag=1;
}
}

void PD5(char a[])
{
int temp=0,j;
for(j=0;a[j]!='\0';j++)
{
temp+=a[j]-48;
}
//printf("%d %d\n",j,temp);
if(temp!=0&&a[j-1]=='0'||a[j-1]=='5')
{
f5=1;
flag=1;
}
}

void PD8(char a[])
{
int temp=0,sum=0,j,i;
for(j=0;a[j]!='\0';j++)
{
temp+=a[j]-48;
}
for(j=0;a[j+3]!='\0';j++)
{
;
}
if(a[j+1]=='\0')
{
sum=a[j]-48;
}
else if(a[j+2]=='\0')
{
i=10;
for(;a[j]!='\0';j++)
{
sum+=(a[j]-48)*i;
i/=10;
}
}
else if(a[j+3]=='\0')
{
i=100;
for(;a[j]!='\0';j++)
{
sum+=(a[j]-48)*i;
i/=10;
}
}
if(sum%8==0&&temp!=0)
{
f8=1;
flag=1;
}


}

void PD11(char a[])
{
int len,sum=0,j,temp=0;
len=strlen(a);
for(j=0;a[j]!='\0';j++)
{
temp+=a[j]-48;
}
if(len%2==0)
{
for(j=0;a[j]!='\0';j=j+2)
{
sum+=a[j]-a[j+1];
}

}
if(len%2!=0)
{
for(j=0;a[j+1]!='\0';j=j+2)
{
sum+=a[j]-a[j+1];
}
sum+=a[j]-48;
}
if(sum%11==0&&temp!=0)
{
f11=1;
flag=1;
}
}


...全文
72 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
youla2 2019-11-27
  • 打赏
  • 举报
回复
引用 17 楼 SuperDay 的回复:
明明简单的程序,几行十几行的程序,你非要写几十行,并且还要让我们帮你查找哪里的错误,你是怕我们太闲吗?
好吧,小弟不才,不打扰大佬了
铖邑 2019-11-27
  • 打赏
  • 举报
回复
明明简单的程序,几行十几行的程序,你非要写几十行,并且还要让我们帮你查找哪里的错误,你是怕我们太闲吗?
youla2 2019-11-27
  • 打赏
  • 举报
回复
引用 14 楼 SuperDay 的回复:
[quote=引用 7 楼 youla2的回复:][quote=引用 6 楼 SuperDay 的回复:]PD3只要temp能被3整除就可以了 PD8只要最低三个位(就是个位十位百位)能被8整除就可以了,因为1000能被8整除啊
我也确实是这么做的 [/quote] 你错了,整除5或者8都不需要累加你那个temp[/quote] 其实是找不到错的地方,防一手什么0000这种情况,我也很无奈
youla2 2019-11-27
  • 打赏
  • 举报
回复
引用 13 楼 SuperDay 的回复:
[quote=引用 7 楼 youla2的回复:][quote=引用 6 楼 SuperDay 的回复:]PD3只要temp能被3整除就可以了 PD8只要最低三个位(就是个位十位百位)能被8整除就可以了,因为1000能被8整除啊
我也确实是这么做的 [/quote] 不需要除以100000,这样的数值,int足够处理,直接temp % 3[/quote] 我除100000是为了求temp各个位数的和,先把各个位数先求出来,网上好像说3的倍数是将各个位数和求出来,得到的数再求一次位数和,再%3
铖邑 2019-11-27
  • 打赏
  • 举报
回复
引用 7 楼 youla2的回复:
[quote=引用 6 楼 SuperDay 的回复:]PD3只要temp能被3整除就可以了 PD8只要最低三个位(就是个位十位百位)能被8整除就可以了,因为1000能被8整除啊
我也确实是这么做的 [/quote] 你错了,整除5或者8都不需要累加你那个temp
铖邑 2019-11-27
  • 打赏
  • 举报
回复
引用 7 楼 youla2的回复:
[quote=引用 6 楼 SuperDay 的回复:]PD3只要temp能被3整除就可以了 PD8只要最低三个位(就是个位十位百位)能被8整除就可以了,因为1000能被8整除啊
我也确实是这么做的 [/quote] 不需要除以100000,这样的数值,int足够处理,直接temp % 3
youla2 2019-11-27
  • 打赏
  • 举报
回复
引用 9 楼 SuperDay 的回复:
PD5更简单了,最后一位5或者0 PD11隔位累加,然后二者相差是11的倍数
大佬说的这些我都搞了,甚至连数字前有00的情况都考虑了,可就是不对
youla2 2019-11-27
  • 打赏
  • 举报
回复
引用 9 楼 SuperDay 的回复:
PD5更简单了,最后一位5或者0 PD11隔位累加,然后二者相差是11的倍数
我的思路和大佬是一样的,我自己试的数也是没错的,可是一放平台上就答案错误,我枯了
youla2 2019-11-27
  • 打赏
  • 举报
回复
引用 6 楼 SuperDay 的回复:
PD3只要temp能被3整除就可以了 PD8只要最低三个位(就是个位十位百位)能被8整除就可以了,因为1000能被8整除啊
Pd3我网上找的方法就是要两次位数相加的
铖邑 2019-11-27
  • 打赏
  • 举报
回复
PD5更简单了,最后一位5或者0 PD11隔位累加,然后二者相差是11的倍数
youla2 2019-11-27
  • 打赏
  • 举报
回复
引用 6 楼 SuperDay 的回复:
PD3只要temp能被3整除就可以了 PD8只要最低三个位(就是个位十位百位)能被8整除就可以了,因为1000能被8整除啊
Pd8还考虑到只有两位数的特殊情况
youla2 2019-11-27
  • 打赏
  • 举报
回复
引用 6 楼 SuperDay 的回复:
PD3只要temp能被3整除就可以了 PD8只要最低三个位(就是个位十位百位)能被8整除就可以了,因为1000能被8整除啊
我也确实是这么做的
铖邑 2019-11-27
  • 打赏
  • 举报
回复
PD3只要temp能被3整除就可以了 PD8只要最低三个位(就是个位十位百位)能被8整除就可以了,因为1000能被8整除啊
youla2 2019-11-27
  • 打赏
  • 举报
回复
引用 2 楼 SuperDay 的回复:
这程序写的,谁有办法看啊?明明很简单的题目,程序写的那么复杂
或者大佬有什么更好的方案吗
youla2 2019-11-27
  • 打赏
  • 举报
回复
引用 2 楼 SuperDay 的回复:
这程序写的,谁有办法看啊?明明很简单的题目,程序写的那么复杂
好像是判断8的倍数出了点问题
youla2 2019-11-27
  • 打赏
  • 举报
回复
引用 2 楼 SuperDay 的回复:
这程序写的,谁有办法看啊?明明很简单的题目,程序写的那么复杂
实在是想不到别的办法搞定10的10000次方范围的数
铖邑 2019-11-27
  • 打赏
  • 举报
回复
这程序写的,谁有办法看啊?明明很简单的题目,程序写的那么复杂
youla2 2019-11-27
  • 打赏
  • 举报
回复
求大神解答zsbd

33,321

社区成员

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

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