题目分析
一直本真电脑累我不累的思想 反正就是看是不是17的倍数那就干脆除17看有没有余好了
#include<stdio.h> int main() { int i,sum; char str[200]; while(scanf("%s",str)&&str[0]!='0') //百度的ACM写法 { sum=0; for(i=0;str[i]!='\0';i++) { sum=sum*10+str[i]-'0';//转成整形 sum=sum%17; } printf("%s\n",sum?"0":"1"); //3目运算 如果为0就选0不是就是后者 } return 0; }
0.0分
7 人评分
#include<stdio.h> int main() { int n=1,i,j,a[10],b[10],c[10],d[10]; for(i=0;i<n;i++) { scanf("%d",&a[i]); n++; if(a[i]==0) n--; } for(i=0;i<n-1;i++) { b[i]=a[i]/10; c[i]=a[i]%10; d[i]=b[i]-5*c[i]; } for(i=0;i<n-1;i++) { if(a[i]%17==0&&d[i]%17==0) printf("1\n"); else printf("0\n"); } return 0; } 大佬能帮忙看看哪有问题么?运行结果是对的啊,万分感激
sum=sum*10+str[i]-'0';你的sum定义了整形数据;这样处理不会产生溢出么
laolin2333 2017-11-29 18:52:31 |
sum只是两位数,不会溢出的,帖主的做法就跟我们自己除一个数一样
char n[100]; for(int i=0;i<10;i++){ scanf("%s",n); long long len,d=0; len=strlen(n); for(int i=0;i<len;i++){ d=d+(n[i]-'0')*pow(10,len-i-1); } 我在这里得到的 d 仍然不是要得到的? 和你代码里的 sum 有啥区别呀?
# include <stdio.h> int main (void) { int i , sum ; char a[301]; scanf ("%s" , a); do{ for (i = 0 , sum = 0 ; a[0] != '0' && a[i] != '\0' ; i++ ) { sum = sum * 10 + a[i] - '0' ; } if(sum == 0) break; i = sum%10 * 5; if ((sum / 10 - i)%17 == 0) printf ("1\n"); else printf ("0\n"); scanf ("%s" , a); }while (a[0] != '0'); return 0; } 这个程序哪里有问题吗?
laolin2333 2017-11-29 18:56:58 |
for里面的sum爆炸了
刘自铭 2018-06-12 22:36:38 |
你试过那个最长的数没有,我和你一样,我估计是a[i]装不下那么大的数
刘自铭 2018-06-12 22:37:18 |
所以我看大佬都好像在用字符