用C语言计算一个数组内的所有数的平均值

#include <stdio.h>
int main (void)
{
int a[10]={10},d;
int s;
for(s=0;s<10;s++)
d+=a[s];
printf("%f",d/10);
return 0;
}为什么得不到正确的值,求老师指点
最后的是%i

printf("%f",d/10)这行代码的输出控制有误,因为d定义的是int型,d/10还是int型,应该使用%d,而不是%f,%f是单精度浮点型数据。

格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。不同类型的数据用不同的格式字符。 

格式字符有d,o,x,u,c,s,f,e,g等。 

1.%d整型输出,%ld长整型输出,

2.%o以八进制数形式输出整数,

3.%x以十六进制数形式输出整数,

4.%u以十进制数输出unsigned型数据(无符号数)。

5.%c用来输出一个字符,

改过之后运行结果:

扩展资料:

需要说明的是:

1、一个C语言源程序可以由一个或多个源文件组成。

2、每个源文件可由一个或多个函数组成。

3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。

4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。

5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。

6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

参考资料:

百度百科-c语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-02
#include <stdio.h>
int main (void)
{
int a[10]={10},d=0;  //第一 你的d没有初始化 所以值是不确定垄断
int s;
for(s=0;s<10;s++)
d+=a[s];

printf("%f",(float)d/10);   //第二这里没有转换两个int除出来是个整数用%f输出是错误的
return 0;
}
1.000000Press any key to continue

本回答被网友采纳
第2个回答  2016-08-10
d没有赋初值;a中只有a[0]==10,a[1]~a[9]都是垃圾数;平均值的算法d/10也不对,应该是d/10.0才对。这样的错误,你能得到什么平均值?追问

为什么我的书会这么写,虽然我试了好几次都不行

追答

前面说错了一个:“a中只有a[0]==10,a[1]~a[9]都是垃圾数”应该是“a中只有a[0]==10,a[1]~a[9]都是0”。代码改成

int main (void)
{
    int a[10]={10},d=0;
    int s;
    for(s=0;s<10;s++)
        d+=a[s];
    printf("%f",d/10.0);
    return 0;
}

输出就有平均值1.000000了。若将a[10]={10}改成a[10]={10,9,8,7,6,5,4,3,2,1}则输出就是5.500000了。

本回答被提问者和网友采纳
第3个回答  2016-08-10
首先,你的d没有初始化,应该写成d=0,建议d声明为double。第二,printf那句,d/10,两个int相除还是int,需要强转(double)d/10就没有问题了,当然最好是把d声明为double,就不用强转了
相似回答