首页 > 代码库 > PAT甲题题解-1108. Finding Average (20)-字符串处理
PAT甲题题解-1108. Finding Average (20)-字符串处理
求给出数的平均数,当然有些是不符合格式的,要输出该数不是合法的。
这里我写了函数来判断是否符合题目要求的数字,有点麻烦。
#include <iostream> #include <cstdio> #include <algorithm> #include <string.h> using namespace std; const int maxn=105; bool islegal(char*str){ int len=strlen(str); int point=0,decimal=0; for(int i=0;i<len;i++){ //if(i==0 && str[i]==‘0‘&&len>1){ // if(str[1]!=‘.‘) // return false; //} if(str[i]==‘-‘ && i!=0) return false; else if(str[i]==‘-‘ && i==0) continue; if(str[i]==‘.‘ && i==0) return false; if(str[i]==‘.‘){ point++; if(point>=2) return false; } else if(str[i]<‘0‘ ||str[i]>‘9‘) return false; else if(str[i]>=‘0‘ && str[i]<=‘9‘ && point==1){ decimal++; if(decimal>=3) return false; } } return true; } int main() { int n; char str[maxn]; scanf("%d",&n); double sum=0.0; double a; int k=0; for(int i=0;i<n;i++){ scanf("%s",str); bool flag=false; if(islegal(str)){ a=atof(str); if(a>=-1000.0 && a<=1000.0) flag=true; } if(flag){ //printf("%lf\n",a); sum+=a; k++; } else{ printf("ERROR: %s is not a legal number\n",str); } } if(k==0){ printf("The average of 0 numbers is Undefined\n"); } else if(k==1){ printf("The average of %d number is %.2lf\n",k,sum); } else{ printf("The average of %d numbers is %.2lf\n",k,sum/k); } return 0; }
可以参考下面别人的题解,用到了sscanf和sprintf函数,就很方便:
http://www.liuchuo.net/archives/1924
PAT甲题题解-1108. Finding Average (20)-字符串处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。