1054. 求平均值 (20)



本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位。当你计算平均值的时候,不能把那些非法的数据算在内。

输入格式:

输入第一行给出正整数N(<=100)。随后一行给出N个正整数,数字间以一个空格分隔。

输出格式:

对每个非法输入,在一行中输出“ERROR: X is not a legal number”,其中X是输入。最后在一行中输出结果:“The average of K numbers is Y”,其中K是合法输入的个数,Y是它们的平均值,精确到小数点后2位。如果平均值无法计算,则用“Undefined”替换Y。如果K为1,则输出“The average of 1 number is Y”。
输入样例1:

7
5 -3.2 aaa 9999 2.3.4 7.123 2.35

输出样例1:

ERROR: aaa is not a legal number
ERROR: 9999 is not a legal number
ERROR: 2.3.4 is not a legal number
ERROR: 7.123 is not a legal number
The average of 3 numbers is 1.38

输入样例2:

2
aaa -9999

输出样例2:

ERROR: aaa is not a legal number
ERROR: -9999 is not a legal number

The average of 0 numbers is Undefined

本题比较简单,但是有两个坑,一个是输出-0.00这样的数字(测试数据未检测这一点),二是出现1 numbers这样的语法错误。

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>//isNum判断一段字符是个数字
int isNum(const char* str)
{int result = 0;int i = 0;int dotCnt = 0;double val = 0.0;int acuCnt = 0;for (i = 0; i < strlen(str); i++) {result = (str[i]>='A' && str[i]<='Z') || (str[i]>='a' && str[i]<='z');if (result) { //如果存在字母,则不是数字return 0;}if (str[i]=='-' && i!=0) {  //如果非首位置出现‘-’,则不是数字return 0;}if (str[i] == '.') {  	dotCnt++;acuCnt = strlen(str) - i - 1;}}if (dotCnt > 1) {  //如果‘.’出现两次以上,则不是数字return 0;}if (atof(str)>1000 || atof(str)<-1000) {  //如果大于设定范围,则为非法数字return 0;}if (acuCnt > 2) { //如果小数点后精确数字位数>2,则是非法数字return 0;}return 1;
}int main()
{char str[100] = {'\0'};int N;int i;double sum = 0.0;int vldNumCnt = 0;double average = 0.0;scanf("%d", &N);for (i = 0; i < N; i++) {scanf("%s", str);if (isNum(str)) {vldNumCnt++;sum += atof(str);} else {printf("ERROR: %s is not a legal number\n", str);}}if (vldNumCnt == 0) {printf("The average of 0 numbers is Undefined\n");} else {average = sum / vldNumCnt;if (-0.005<average && average<0) { //防止输出-0.00printf("The average of %d %s is 0.00\n", vldNumCnt, vldNumCnt==1 ? "number":"numbers"); //防止输出1numbers} else {printf("The average of %d %s is %.2lf\n", vldNumCnt, vldNumCnt==1 ? "number":"numbers", average);}}return 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最大子段和c(c语言实现)

1&#xff0c;题目 2&#xff0c;各种算法 暴力解决&#xff0c;就是所有的情况都遍历一遍&#xff0c;然后说&#xff0c;我找到最牛逼的啦 int MaxSubseqSum1(int A[], int N, int* pidxStart, int* pidxEnd) { int sum A[0], tempSum 0;int i, j, k;*pidxStart 0, *pid…

sql语法,未完待续

MS SQLSEVER 是结构化查询语言&#xff0c;标准化查询语言&#xff0c;面向自然语言&#xff0c;编程语言。 做为编程语言&#xff0c;对编程却没卵用&#xff0c;是辅助查询用的。它没类库。 做为编程语言肯定有语法。 变量 declare i int set i 1 print i–消息 select i --…

2021-07-14

pat甲级1097 我还用数组下标从1到n的方式遍历链表&#xff0c;真菜。 csdn上有的博客的题解对输入排序了&#xff0c;有的没排序。我还是通过参考别人的代码过了。 下面代码的思路是一个数组&#xff0c;通过节点的标记值来分离留下的和删除的&#xff0c;我的想法是两个数组分…

1007. Maximum Subsequence Sum (25)

Sample Input: 10 -10 1 2 3 4 -5 -23 3 7 -21 Sample Output: 10 1 4 错误代码如下&#xff1a; #include <stdio.h>int MaxSubseqSum4(int A[], int N, int* pstart, int* pend) {int i 0;int tempStart; //记录最大子段和位置int thisSum 0, sum 0;tempStart …

关于 ASP.NET MVC 中的视图生成

在 ASP.NET MVC 中&#xff0c;我们将前端的呈现划分为三个独立的部分来实现&#xff0c;Controller 用来控制用户的操作&#xff0c;View 用来控制呈现的内容&#xff0c;Model 用来表示处理的数据。 从控制器到视图 通常&#xff0c;在 Controller 中&#xff0c;我们定义多个…

2021-07-21

leetcode113 看了很多别人的题解&#xff0c;还是感觉没太懂&#xff0c;主要是因为dfs和bfs没彻底会用&#xff0c;还是得找专门的题练练。 得早睡早起呀&#xff0c;假期学习真就靠自律呀。 *** Definition for a binary tree node.* struct TreeNode {* int val;* …

实验项目 3-4:一元多项式的乘法与加法运算

代码如下&#xff1a; /*************************************************************************> File Name: AddPoly.c> Author: YueBo> Mail: yuebowhu163.com> Created Time: 2016年12月17日 星期六 13时00分35秒***************************************…

SQL自定义完整性

自定义完整性。&#xff08;事务&#xff09; 事务的四个特性&#xff1a; 原子性 : 事务中SQL语句是一个整体, 不可分离,要么都执行、要么都不执行 一致性 : 事务前后数据保持一致 隔离性 : 事务中不允许其他事务介入 永久性 : 事务执行之后对数据表的修改是永久的 Expectatio…

伪类和伪元素

选择第一个子元素&#xff1a;first-child li:first-child{text-decoration: underline;}li:last-child{color: red;}p:first-child{font-style: italic;} <p>xiaoren</p><ul><li>Insert Key</li><li>Turn Key<strong>clockwise<…

T-SQL存储过程

存储过程。即T-SQL里的方法。类似封装的思想。 基本语法如下&#xff1a; create proc 方法名 name 默认值可不写&#xff0c;传入的参数 数据类型 , p变量名 数据类型 output (返回值) asSql代码 go--调用上面方法 declare variable 和p一样的类型 exec 方法名 传值 , var…

Extjs4开发中的一些问题

1. 子frame刷新的问题 一般在jsp里面&#xff0c;要实现界面跳转&#xff0c;有很多方法&#xff0c;最典型的就是window.location.href"href",但是在嵌套有iframe框架的页面布局&#xff0c;使用上述语句&#xff0c;只会使iframe本身实现跳转&#xff0c;如果遇到…

TSQL索引与视图

创建视图 简化sql 代码&#xff0c;还有&#xff0c;给予权限&#xff08;只能查指定的列&#xff09; create view 视图名 as sql代码&#xff0c;不要有同名列&#xff08;只能一句sql代码&#xff09; go select * from 视图名 &#xff08;最好不要用视图做更改操作&#…

jacob 实现Office Word文件格式转换

关于jacob用法&#xff0c;百度一下就会发现几乎都是复制2004年一个代码&#xff0c;那段代码实现的是从一个目录读取所有doc文件&#xff0c;然后把它转html格式。 为了便习学习和使用&#xff0c;我把代码看懂后精简了一下&#xff0c;得出不少新结论&#xff0c;拿出来和大家…

2021-07-22

leetcode547 第一次做这种题&#xff0c;有点生&#xff0c;借鉴 class Solution { public:void dfs(vector<vector<int>>& isConnected,vector<int>&isvisited,int i){for(int j0;j!isConnected.size();j){if(isConnected[i][j]1&&isvisit…

树的同构

输入样例1&#xff08;对应图1&#xff09;&#xff1a;8A 1 2B 3 4C 5 -D - -E 6 -G 7 -F - -H - -8G - 4B 7 6F - -A 5 1H - -C 0 -D - -E 2 -输出样例1:Yes输入样例2&#xff08;对应图2&#xff09;&#xff1a;8B 5 7F - -A 0 3C 6 -H - -D - -G 4 -E 1 -8D 6 -B 5 -E - -…

.Net 中的封装知识点

c # 中的封装 1&#xff0c;类与对象 生活中现有对象&#xff0c;然后人们先对其归类。 而程序中&#xff0c;先有类&#xff0c;再有对象。有了这些类&#xff0c;才能生成实际的对象&#xff0c;即类的实例化。&#xff08;类名new 一个对象&#xff09; 对象是从类里那东西的…

[家里蹲大学数学杂志]第236期钟玉泉复变函数论前六章第二组习题参考解答

第一章 复数与复变函数 1将复数 $$\bex \frac{(\cos5\varphii\sin 5\varphi)^2}{(\cos3\varphi-i\sin 3\varphi)^3} \eex$$ 化为指数形式. 解答: 由 Euler 公式, $$\bex \mbox{原式}\frac{(e^{i5\varphi})^2}{(e^{-i3\varphi})^3} e^{i[10\varphi-(-9\varphi)]}e^{19\varphi…