L1-017 到底有多二
题目:
知识点for me:
1、计算res时要先把num强制转换成浮点型,否则两个整形相除会自动转换成整形保存。最开始没加(float),结果res一直是0.00000.
2、输出百分号:%%
3、已经好几次忘记把不是int型的数字-‘0’后再使用了。
上代码:
#include <iostream> using namespace std; int main() { string s; cin>>s; int num=0; int len; float res; //char c=s[0]; //bool b=(s[0]=='-'); for(int i=0;i<s.length();i++) { if(s[i]-'0'==2) { num++; } } if(s[0]=='-') { len=s.length()-1; if((s[len]-'0')%2==0){ res=(float)num/len*1.5*2*100; }else{ res=(float)num/len*1.5*100; } }else{ len=s.length(); if((s[len-1]-'0')%2==0){ res=(float)num/len*2*100; }else{ res=(float)num/len*100; } } printf("%0.2f%%",res); return 0; }