c语言数组求和

数组求和中有什么要注意的吗为什么我输入几个很小的数s(也就是和)为什么很大啊甚至超出了整形的范围#include<stdio.h>voidmain(){FILE*fp;i... 数组求和中有什么要注意的吗 为什么我输入几个很小的数

s (也就是和)为什么很大啊 甚至超出了整形的范围

#include<stdio.h>
void main()
{FILE * fp;int a[5];int i=0;int s=0;float ave;int m[5];
printf("please input the number:");
scanf("%d",&a[1]);
for(i=0;i<1;i++)
{s=s+a[i];}
printf("s=%d\n",s);
ave=s/5;
for(i=0;i<5;i++)
{if (a[i]>ave)
m[i]=a[i];}
printf("%d",m[i]);
fp=fopen("c:\\high.dat","w+");
{fscanf(fp,"%d\n",m[i]);}}
问题的原型是这样的,谢谢。
#include<stdio.h>
void main()
{FILE * fp;int a[5];int i=0;int s=0;float ave;int m[5];
printf("please input the number:");
scanf("%d",&a[5]);
for(i=0;i<5;i++)
{s=s+a[i];}
printf("s=%d\n",s);
ave=s/5;
for(i=0;i<5;i++)
{if (a[i]>ave)
m[i]=a[i];}
printf("%d",m[i]);
fp=fopen("c:\\high.dat","w+");
{fscanf(fp,"%d\n",m[i]);}}
展开
 我来答
热血的鸽子
推荐于2017-12-16 · TA获得超过115个赞
知道答主
回答量:69
采纳率:0%
帮助的人:101万
展开全部
scanf("%d",&a[1]);
输入的值将被加入到数组第二个元素。
而你后面的语句却是:
for(i=0;i<1;i++)
{s=s+a[i];}

其中a[0] 就是个空值.相加当然产生个错误值。

改成a[5]更错了, a[5]数组长度5 ,索引是0..4 , a[5]越界了.

记住基础的原则:在局部域定义的变量必须手工初始化。
养成好习惯,谢谢。
益子揭羽
2020-01-05 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:967万
展开全部
C语言的静态数组是编译期确定长度,也就是它的长度必需是整数常数、展开为整数的宏或enum、const常量整数这几种情况,不能是变量。如果期望一个数组的长度在运行期确定,则需要用C语言标准库的malloc函数,那个叫动态存储
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仁伦中婉
2020-05-09 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:34%
帮助的人:2038万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pbbh7
2017-12-26 · 超过11用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:33.3万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式