关于【一维数组】输入10个整数,求平均值中的知识点|数组|float double浮点数|

int main()
{
		float arr1[10];//定义float浮点数类型,因为后面求平均值可能会有小数,如果不想保留小数用int即可
	    float he = 0;  //float通常是单精度浮点数,占用 4 个字节(32 位)的内存空间。它可以表示大约 6 到 7 位有效数字。
		float pingjunzhi;//double是双精度浮点数,占用 8 个字节(64 位)的内存空间。它可以表示大约 15 到 16 位有效数字,精度比float更高。
		printf("请输入 10 个数字,用空格分隔:");//如果需要更高的精度,特别是在科学计算、金融计算等对精度要求严格的领域,应该使用double。如,计算高精度的物理模型或进行精确的财务计算时,double可以提供更准确的结果。

		
		for (int i = 0; i < 10; i++)
		{
			if (scanf("%f", &arr1[i]) != 1)//如果用户输入的不是有效的整数,scanf可能无法正确读取数据,并且可能会导致后续计算出现错误。可以在scanf之后检查输入是否成功
			{
				printf("输入错误,请重新输入一个整数。\n");//也就是说输入的值符合scanf其中的格式说明符就会返回1不一样就会返回0
				i--;
			}
		}
		for (int a = 0; a < 10; a++)
		{
			he = he + arr1[a];
		}   
		if (he == 0) //如果用户没有输入任何数字或者输入的数字都为 0,那么计算平均值时会出现除零错误。添加一个判断来避免这种情况
		{
			printf("无法计算平均值,因为输入的数字都为 0 或者没有输入数字。\n");
		}
		else
		{
			pingjunzhi = he / 10;
			printf("%.1f", pingjunzhi);
		}
	return 0;
}

一、功能概述

这段代码的主要功能是接收用户输入的十个数字,计算这些数字的总和,并求出平均值,最后将平均值保留一位小数输出。

二、代码结构分析

  1. 数组定义

    • float arr1[10];定义了一个包含十个浮点数的数组,用于存储用户输入的数字。选择float类型是考虑到平均值可能包含小数,如果不需要小数精度,可以使用int类型。
    • float he = 0;float pingjunzhi;分别用于存储数字总和和平均值,选择float类型可以表示一定精度的小数结果。
  2. 输入部分

    • 通过printf("请输入 10 个数字,用空格分隔:");提示用户输入十个数字。
    • 使用for循环和scanf函数接收用户输入,并对输入进行有效性检查。如果scanf的返回值不等于 1,表示输入不是有效的浮点数,会提示用户 “输入错误,请重新输入一个整数。” 并通过i--让循环重新处理当前下标,确保输入正确。
  3. 计算部分

    • 另一个for循环遍历数组,将每个数字累加到he变量中,得到数字总和。
  4. 判断与输出部分

    • 首先检查总和he是否为 0,如果是,则提示 “无法计算平均值,因为输入的数字都为 0 或者没有输入数字。”
    • 如果he不为 0,则计算平均值pingjunzhi = he / 10;,并使用printf("%.1f", pingjunzhi);输出平均值,保留一位小数。

三、注意事项与改进方向

  1. 输入验证可以进一步加强,例如检查输入是否超出float类型的取值范围。
  2. 可以考虑添加错误处理机制,以应对可能出现的意外情况,如输入流错误等。
  3. 如果需要更高的精度,可以考虑使用double类型来存储总和和平均值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值