/*************************
题意:
判断数字是否合法
************************/
/***********************
解题思路:
除了样例中的例子,注意以下几个:
“5.”是被允许的
“-.”是不允许的。
“-”是不允许的
“.”是不允许的
即要注意没有数字的情况。
*************************/
/***********************
笔记:
每当你用i = s.substr()时
后面一定不要用i来做循环变量
*********************/
#include<iostream>
#include<stdio.h>
#include<string>
#include<vector>
#include<queue>
#include<stdlib.h>
#include<algorithm>
#include<string.h>
#include<stack>
#include<map>
#include<set>
#include<unordered_map>
using namespace std;
#define M 100005
#define INF 0x7ffffff
int main(){
int n = 0, m, i;
double sum=0, k = 0;
string s;
int pn, p ;
double fnum;
cin>>m;
int numn;
while(m--){
cin>>s;
pn = 0;
numn = 0;
for(i = 0;i < s.size();i++){
if(s[i] == '-'){
if(i !=0 )
break;
}
else if(s[i] == '.'){
if(pn == 1 || (s.size()-1-i) > 2 || i==0 )
break;
else{
pn = 1;
}
}
else if(!(s[i]>='0' &&s[i]<='9'))
break;
else numn++;
}
if(i != s.size() || numn == 0){
printf("ERROR: %s is not a legal number\n",s.c_str());
}
else{
fnum = atof(s.c_str());
if(fnum>1000 || fnum < -1000)
printf("ERROR: %s is not a legal number\n",s.c_str());
else{
n++;
sum += fnum;
}
}
}
if(n == 0)
printf("The average of 0 numbers is Undefined\n");
else if(n == 1)
printf("The average of %d number is %.2lf\n", n, sum);
else
printf("The average of %d numbers is %.2lf\n", n, sum/n);
return 0;
}
1108. Finding Average (20) 非法数字判断
原创
©著作权归作者所有:来自51CTO博客作者breakDawn的原创作品,请联系作者获取转载授权,否则将追究法律责任

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
PAT 甲级 1108 Finding Average
1108 Finding Average (20 point(s))The basic task is simple: given N real numbers, you are supposed to calculate their avera
PAT甲级 Finding Average 1108 #include c代码 -
1108 Finding Average (20 分| 字符串,附详细注释,逻辑分析)
写在前面实现思路字符数组存储输入数字通过sscanf、sprintf 处理读取字符串cstdio头文件
1108 Finding Average 字符串 #include 字符数组 -
1108. IP 地址无效化
文章目录0 效果1 题目2 思路3 代码0 效果1 题目2 思路考察string和char数组的操作。3 代
leetcode string c语言 指针 ipad -
Leetcode 1108. IP 地址无效化
给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。所谓无效化 IP 地址,其实
tcp/ip 网络协议 网络 ipad i++