精华内容
下载资源
问答
  • 当你计算平均值的时候,不能把那些非法的数据算在内。 输入格式: 输入第一行给出正整数N(<=100)。随后一行给出N个实数,数字间以一个空格分隔。 输出格式: 对每个非法输入,在一行中输出“ERROR...

    题目

    本题的基本要求非常简单:给定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

    实现思路:相比较不合法的情况来说,合法的情况比较少一些,因此,总结合法的情况,然后取反比较简单。1.第一位只能是负号和数字0-9,如果是负号,后面不能只有0(即-0),如果是0,则后面或者没有元素(即0)或者跟小数点;2.从第二位开始,后面的元素只能是小数点或者数字0-9;3.只能有一个小数点;4.小数点只能在最后3位(即两位小数以内,经试验,最后一个测试点不通过是因为题目认为123.合法)。

    1.编写判断是否有效函数,有效则返回1,无效则返回0;

    2.定义字符数组临时存放输入数据,定义计数和总和变量;

    3.逐个输入,并判断是否有效,无效则输出,有效则计数(利用c自带的转换函数atof将字符串变为数字);

    4.输出。

    代码如下:

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    int checkValid(char *s)
    {
      int flag=1;
      double temp=0;
      if(!(s[0]>='0'&&s[0]<='9'||s[0]=='-'))//第一位只能是负号或者数字
      {
        flag=0;
      }
      else if(s[0]=='0')
      {
        if(s[1]!='.'&&s[1]!='\0')//如果第一位为0,则后面只能为空或者小数点
        {
          flag=0;
        }
      }
      else if(s[0]=='-')//如果第一位为负,后面只能为1-9或者0.
      {
        if(!(s[1]>'0'&&s[1]<='9'||(s[1]=='0'&&s[2]=='.')))
        {
          flag=0;
        }
      }
      int dWZ=-1,cnt=0;//记录小数点位置和数量
      for(int i=1;i<strlen(s);i++)//从第二位向后
      {
        if(!(s[i]<='9'&&s[i]>='0'||s[i]=='.'))
        {
          flag=0;
          break;
        }
        if(s[i]=='.')
        {
          cnt++;
          dWZ=i;
        }
      }
      //小数点多于1个,或者不在后3位
      if(cnt>1||(cnt==1&&dWZ!=strlen(s)-3&&dWZ!=strlen(s)-2&&dWZ!=strlen(s)-1))
      {
        flag=0;
      }
      if(flag==1)//如果是数字,则验证范围
      {
        temp=atof(s);
        if(temp>1000||temp<-1000)
        {
          flag=0;
        }
      }
      return flag;
    }
    
    int main()
    {
      int iNum=0;
      scanf("%d",&iNum);
      double fSum=0;
      char temp[100]={0};
      int iCnt=0;
      for(int i=0;i<iNum;i++)
      {
        scanf("%s",&temp);
        if(checkValid(temp))
        {
          iCnt++;
          fSum+=atof(temp);
        }
        else
        {
          printf("ERROR: %s is not a legal number\n",temp);
        }
      }
      if(iCnt==0)
      {
        printf("The average of 0 numbers is Undefined");
      }
      else if(iCnt==1)
      {
        printf("The average of 1 number is %.2lf",fSum);
      }
      else
      {
        printf("The average of %d numbers is %.2lf",iCnt,fSum/iCnt);
      }
      return 0;
    }

    错误分析:

    1.最后一个测试点不过是因为认定123.这样的形式合法,所以小数点位置判断加了一条就通过了。

    展开全文
  • 当你计算平均值的时候,不能把那些非法的数据算在内。 输入格式: 输入第一行给出正整数N(≤100)。随后一行给出N个实数,数字间以一个空格分隔。 输出格式: 对每个非法输入,在一行中输出ERRO...

    本题的基本要求非常简单:给定 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
    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
    	int N = 0;
    	scanf("%d",&N);
    	char str[100] = {};	//原始字符串
    	char dest[100] = {}; //保留两位小数的字符串
    	double num = 0;
    	int flag = 0;		//记录数字是否非法
    	double Y = 0;		
    	int K = 0;		
    	for(int i = 0 ; i < N ; i++)
    	{
    		flag = 0;
    		scanf("%s",str);
    		sscanf(str,"%lf",&num);
    		sprintf(dest,"%.2f",num);
    		for(int i = 0 ;'\0' != str[i];i++)
    		{
    			if(str[i] != dest[i])
    			{
    				flag = 1;
    				break;
    			}
    		}
    		if(1 == flag || num < -1000 || num > 1000)
    			printf("ERROR: %s is not a legal number\n",str);
    		else
    		{
    			Y += num;
    			K++;
    		}
    	}
    	if(0 == K)
    		printf("The average of 0 numbers is Undefined\n");
    	else if(1 == K)
    		printf("The average of 1 number is %.2f\n",Y);
    	else
    		printf("The average of %d numbers is %.2lf\n",K,Y/K);
    	return 0;
    }
    

     

    展开全文
  • 使用可变参数,实现函数,函数参数的平均值代码实现(环境:Visual studio 2017) //使用可变参数,实现函数,函数参数的平均值。 #include #include #include<stdarg.h>int ave(int n, ...) { va_list arg; ...

    使用可变参数,实现函数,求函数参数的平均值。


    代码实现(环境:Visual studio 2017)

    //使用可变参数,实现函数,求函数参数的最大值。
    #include<stdio.h>
    #include<windows.h>
    #include<stdarg.h>
    
    int max(int n, ...)
    {
        va_list arg;
        va_start(arg, n);
        int max = 0;
        for (int i = 0; i < n; i++)
        {
            if (va_arg(arg, int) > max)
            {
                max = va_arg(arg, int);
            }
        }
        return max;
        va_end(arg);
    }
    
    int main()
    {
        int num = 3;
        int a = 10;
        int b = 20;
        int c = 30;
        int d = 40;
        printf("%d , %d             平均值为:  %d\n", a, b, max(2, a, b));
        printf("%d , %d , %d        平均值为:  %d\n", a, b, c, max(3, a, b, c));
        printf("%d , %d , %d , %d   平均值为:  %d\n", a, b, c, d, max(4, a, b, c, d));
        system("pause");
        return 0;
    }
    展开全文
  • 问题:从键盘手动输入三个整数,计算后输出三个数的平均值! 代码1: #include <stdio.h> int main() { int a , b , c , d; printf("请输入三个整数:"); scanf("%d%d%d", &a , &b , &c); d = (a + b +...

    问题:从键盘手动输入三个整数,计算后输出三个数的平均值!

    代码1:

    #include <stdio.h>
    int main()
    {
    int a , b , c , d;
    printf("请输入三个整数:");
    scanf("%d%d%d", &a , &b , &c);
    d = (a + b + c)/3;
    printf("这三个数的平均值为:%d \n", d); 
    }
    

    代码2:

    #include <stdio.h>
    int main()
    {
    double a , b , c;
    scanf("%lf%lf%lf", &a , &b , &c);
    printf("%.3f",(a+b+c)/3);
     } 
    

    还有什么好的方法评论区留言大家一起学习哦!

    展开全文
  • C语言A20—4*3矩阵每列的平均值,并输出原矩阵和平均值 题目:一个4*3矩阵各行元素的平均值;将原矩阵和的平均值全部输出。 参考代码: #include <stdio.h> int main() { int a[4][3],num[4] = {};/...
  • Ⅰ、使用continue输入要求值和的平均值: ①、//代码摘下直接可以运行 #include<stdio.h> int main() { int i,n,count=0,sum=0; for(i=1;i<=4;i++) { printf(“Please input the %d number of n!\n”,i...
  • 在之前的文章《生信(五)awk求取某一列的平均值》中,笔者曾经给出过C语言求取某列平均值的代码,但是最近回顾时发现,这段代码至少有几点不足: 利用 fgetc 函数来读取文件,现在看来效率不高。 如果文件最后没有...
  • 描述:n个数的平均数。输入:输入数据有2行,第一行为n,第二行是n个数。输出:输出n个数中的平均数,结果保留小数点2位。样例输入:5-1 2.1 3 4 -5.8样例输出:0.46考点:基本知识注意:数组一旦被创建长度就不能被修改...
  • 代码设计思路: 先定义一个数组a,利用for循环逐个输入数据...再定义一个数组b用于存放数组a中每个元素与平均值的差值的绝对值,找出数组b中最小的元素,并记录其下标,输出数组a中该元素。 以下是程序代码: ...
  • C语言 · 整数平均值

    2016-12-29 21:42:00
    编写函数,包含n个元素整数数组中元素的平均值。要求在函数内部使用指针操纵数组元素,其中n个整数从键盘输入,输出为其平均值。 样例输入: (输入格式说明:5为输入数据个数,3 4 0 0 2 是以空格隔开5个...
  • 编程实现三个整数的平均值,其中定义一个函数avg, 三个整型数均值, 要求有返回值。main函数负责读取数据和输出结果。 【输入形式】 三个整数,空格分隔。 【输出形式】 输出平均值,保留两位小数。 【样例输入...
  • 1.求平均数 2.求标准差 3.求方差 可以用函数实现,也可以不用 **下面是更改后的代码: #include #include double FANG_01(float c,float a[100],int b); //函数声明 void main() { float...
  • 此题解决思路为:使用可变参数列表,若干个参数的平均值,所以我们每次调用va_arg把它值累加在sum变量里,最后让函数返回sum/n即可求得若干个参数的平均值。 具体代码如下: #include &lt;stdio.h&...
  • 两个数的平均值 基本思想:将两个数进行按位与和按位异或之后右移一位结果相加,最后结果就是两个数的平均值 具体实现代码如下: #define _CRT_SECURE_NO_WARNINGS 1 #include&lt;stdio.h&gt; #...
  • 【解题思路一】:传统的求平均值的方式就是利用(a+b)/2,但是在计算机中32位操作系统下,int占用4个字节,无符号时范围为(-2147483648~2147483647)。所以当a+b的值溢出越界时就会出现错误。 【参考代码】: #...
  • 不使用(a+b)/2这种方式,两个数的平均值 思想:(a+b)/2就是a和b加起来整除一个2,整除2回联想到算术右移一位相当于整除2,所以就可以变成(a+b)>>1 代码如下所示: #include<stdio.h> int main() { ...
  • 函数功能使出数组周边元素的平均值并作为函数值返回给主函数中s。 2 、温馨提示 C试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助C语言学者打...
  • 3.链表中所有元素的平均值代码可以正常运行,代码下附有运行界面 代码区 #include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 //定义最大数量; typedef int ElemType; typedef struct ...
  • C语言求方差

    2021-05-01 00:49:17
    完成函数fun功能,计算n个数据(不多于100个数据)的平均值E及其方差D。 代码核心循环条件嵌套: 代码段: #include <stdio.h> void fun(double a[100], int n, double result[2]); int main(void) { int i...
  • 不使用(a+b)/2这种方式,两个数的平均值。 使用位运算符,加深对不同位运算符功能理解。 代码如下: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int average1...
  • //不使用(a + b) / 2这种方式,两个数的平均值   解题思路:  1&gt; 先判断是奇数还是偶数;  2&gt; 将a,b之和右移一位;  3&gt; 按double型输出。  源代码: #include&lt;stdio....
  • 将学生数据存在文件stu.c后,读取时候读到第一个平均的值老是为1 #include #include #define SIZE 3 struct Student { int num; char name[20]; char sex[2]; int score[5]; float aver; }stu[SIZE];...
  • 然后计算这些输入值的总和及其平均值(不对0计数)。当输入为0时,表明程序结束。将平均值以浮点数显示。 ; margin-right:0pt">2.编写程序,产生10个随机加法问题,加数是两个1到15...
  • 编写函数fun,实现功能:出数组周边数值的平均值,并作为函数值返回给主函数中S。例如若a数组中值为: 则返回主函数s值为3.375. 代码实现: #include<stdio.h> #include<conio.h> #include&...
  • c语言求整数均值

    千次阅读 2020-08-30 15:57:58
    整数均值:输入四个整数,计算并输出这些整数和与平均值,其中平均值精确到小数点后一位。试编写相应程序。 问题代码: #include<stdio.h> #include<conio.h> int main (){ int a,b,c,d,sum; ...
  • 利用C语言可以实现对数组各种操作,如输入数组元素,输出数组元素、数组元素平均值、输出数组元素最大值、输出数组元素最小值、查找某数值元素是否存在、给数组元素排序等功能。本压缩文件中是上述功能对应...
  • 【1】题目一:A乘以B 1.实验代码 include&lt;stdio.h&gt; int main() { int A,B; scanf("%d %d",&...第三步:输入变量a,b的值 3.&lt;1&gt;遇到困难 开始没明白什...
  • Ⅰ、数组之间简单运算(求平均,求和): ①、//代码摘下直接可以运行 //数组初始化 #include<stdio.h> #define N 4 //数组在输入之前一定要保证已经定义化(即数组长度是常量,不能是变量),否则会...

空空如也

空空如也

1 2 3 4 5 6
收藏数 119
精华内容 47
关键字:

c语言求平均值的代码

c语言 订阅