解题思路
按照题上说的方案,个位数字去掉,再从余下的数中减去个位数的5倍,,来做的。
做完看了别人的题解,发现别人的方法更简单。
想了想还是发出来,题上方法的代码实现,记录一下。
参考代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> void jian(char a[],int x)//参数X为字符串下标,实现高位借 1 { if(a[x]>'0') a[x]--; else { a[x]='9'; jian(a,x-1);//更高位减一 } } main() { char a[102]; int num,len,b; scanf("%s",&a); while(a[0]!='0') { for(len=strlen(a)-1;len>7;len--)// 长度 len - 1 为数组下标,7 是任意的,小于int的长度就行 { b = (a[len]-'0') * 5;//末位数字 乘 5 a[len]='\0';//末位改为结束符 if(b>=10)// 末位数乘 5 大于 10,先处理十位 { if( (a[len-2]-'0') < b/10)//十位不够减 向高位借 1 { jian(a,len-3); a[len-2]+=10; } a[len-2]=a[len-2]-b/10;//十位相减 b=b%10;//分离个位 } if( (a[len-1]-'0') < b)//个位不够减 向高位借 1 { jian(a,len-2); a[len-1]+=10; } a[len-1]=a[len-1]-b;//个位相减 } num=atoi(a);//字符串转换为 int if( num%17 == 0) printf("1\n"); else printf("0\n"); scanf("%s",&a); } }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:737 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:524 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:489 |
简单的a+b (C语言代码)浏览:587 |
C语言程序设计教程(第三版)课后习题7.3 (C++代码)浏览:483 |
C语言程序设计教程(第三版)课后习题7.5 (C++代码)浏览:1460 |
字符串的修改 (C++代码)浏览:3032 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:481 |
【亲和数】 (C语言代码)浏览:517 |
统计立方数 (C语言代码)浏览:732 |