L1-017 到底有多二
思路
1.因为可能存在 ‘-’ 则用字符数组来存放整数,先判断是否有符号,确定倍数
2.再使用for循环来确定2的个数和数字的个数,再判断是否为偶数
3.注意点:还要进行四舍五入,如81.823
可以先将其扩大100倍再加0.5为 8182.8 (如果小数点后三位大于5,再加0.5则会进一位,这就是四舍五入)转化为int型为8182,然后再除100.0就可以保留两位小数了
源码
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[55],z=0,key=0;
float bei = 1.0,result;
int ou =1,x;
scanf("%s",a);
if(a[0]=='-'){
bei=1.5;
z=1;
}
for(;a[z]!='\0';z++){
if(a[z]=='2'){
key++;//2的个数
}
}
if(a[z-1]%2==0){
ou=2;
}
if(bei==1.5){
z-=1;
}
result = 1.0*key*bei*ou*100/z;
x=(int)(result*100+0.5);//四舍五入
printf("%.2f%%",x/100.0);
return 0;
}