c语言求和

菜鸟!!为啥求和求出来是这样的TAT

先获取数组长度,然后用for循环,从数组中获取值进行累加求和。

#include

#include

int main()

{

int n;

int val;

int * a;

int sun = 0, i;

printf("请输入数组的长度:");

scanf("%d", &n);

printf("\n");

a = (int *)malloc(n * sizeof(int));//为数组a动态分配内存

for(i = 0; i < n; i++)

{

printf("请输入数组的第%d个元素的值:", i+1);

scanf("%d", &val);

printf("\n");

a[i] = val;

}

for (i = 0; i < n; i++)

{

sun+=a[i];//sun+=a[i]相当于sun=sun+a[i];

}

printf("sun = %d\n",sun);

free(a);//释放a动态分配的内存

return 0;

}

扩展资料:

一个数组中的所有元素具有相同的数据类型(在C、C++、Java、pascal中都这样。但也并非所有涉及数组的地方都这样,比如在Visual Foxpro中的数组就并没这样的要求)。当然,当数据类型为 Variant 时,各个元素能够包含不同种类的数据(对象、字符串、数值等等)。可以声明任何基本数据类型的数组,包括用户自定义类型和对象变量。

如果要用户输入的是一个数组,一般是用一个循环,但是在输入前也需要固定数组的大小。

compact跟变长数组没有太大的关系,也应该用不到变长数组。因为一般的传数组到函数中就是传数组的地址和元素的个数的,那只是一个提示,不是要求。

参考资料来源:百度百科-数组

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-09-25

因为下面这句:

scanf("%f\n", &num);

%f在输入格式中是指接收一个浮点数,而num是int即整型数,把一个大类型的浮点数放入小类型整数变量中会发生数据溢出,导致变量为预料之外的值,所以输入1时,num变量中保存的并不是1,而是一个被截取的数值,所以计算结果非预想结果。

第2个回答  2016-09-25
用错格式符了,%f改为%d,还你的i变量没有初始化
第3个回答  2016-09-25
数据类型混杂了。sum,num是int型,可输入的%f浮点型。
要么把输入%f改成%d整型,
要么把int sum, num改成float sum,num
第4个回答  2016-09-25
#include <stdio.h>

int main(int argc,char *argv[]){
int i=0,num,sum=0;
while(i<10){
scanf("%d",&num);
sum=sum+num;
i++;
}
printf("是个数字的总和为%d\n",sum);
return 0;
}

追问

谢谢!!可以解释一下原理吗?为啥不取等就行了!

追答

i没初始化
明明写了算10个数的和,你写了8
int对应%d

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网