1 条题解
-
0
/* 数字替换问题: 检查数字N的各个数位上的数,如果是4,则改成8, 全部检查完重新输出N */ //思路一:数位拆分法(仅使用一级知识点完成,显然过程非常复杂) #include <iostream> using namespace std; int main(){ int n,t,x; cin >> n; //先获取数字n的位数,存入变量x中 x=0; t=n; while(t){ x++; t/=10; } //通过数位拆分,逐个获取数位上的数字进行检查及更换 for(int i=x;i>=1;i--){ //将数位上的数字获取,并存入t if(i==1) t=n/1%10; else if(i==2) t=n/10%10; else if(i==3) t=n/100%10; else if(i==4) t=n/1000%10; else if(i==5) t=n/10000%10; else if(i==6) t=n/100000%10; else if(i==7) t=n/1000000%10; else if(i==8) t=n/10000000%10; else if(i==9) t=n/100000000%10; //检查及替换 if(t==4) cout << 8; else cout << t; } return 0; } // 以上思路,使用二级知识点pow()可以简化一部分,如下 #include <iostream> #include <cmath> using namespace std; int main(){ int n,t,x; cin >> n; //先获取数字n的位数,存入变量x中 x=0; t=n; while(t){ x++; t/=10; } //通过数位拆分,逐个获取数位上的数字进行检查及更换 for(int i=x;i>=1;i--){ //将数位上的数字获取,并存入t t=n/int(pow(10,i-1))%10; //应用pow(a,b)进行10的i-1次方的计算,注意要使用int()进行转换为整数,否则有语法错误 //检查及替换 if(t==4) cout << 8; else cout << t; } return 0; } //思路二:字符输入法(此方法很少见,仅使用一级知识点,但确实绝佳精妙) #include <iostream> using namespace std; int main(){ char n; //注意采用字符来接收数字,实现一个字符一个字符的输入 while(cin >> n){ if(n=='4') cout << 8; else cout << n; } return 0; } //思路三:字符串遍历法(使用三级知识点,和上述字符法类似) #include <iostream> #include <string> using namespace std; int main(){ string s; int len; cin >> s; len=s.size(); for(int i=0;i<len;i++){ if(s[i]=='4') cout << 8; else cout << s[i]; } return 0; }
信息
- ID
- 1261
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 44
- 已通过
- 9
- 上传者