PAT甲题题解-1108. Finding Average (20)-字符串处理
Posted 辰曦~文若
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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函数,就很方便:
以上是关于PAT甲题题解-1108. Finding Average (20)-字符串处理的主要内容,如果未能解决你的问题,请参考以下文章
pat 1108 Finding Average(20 分)
PAT 甲级 1108 Finding Average (20分)
PAT甲题题解-1075. PAT Judge (25)-排序
PAT甲题题解-1070. Mooncake (25)-排序,大水题