| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1312 人关注过本帖
标题:为什么变量的值会被覆盖掉, 定义时用static 也不能阻止
只看楼主 加入收藏
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:6 
为什么变量的值会被覆盖掉, 定义时用static 也不能阻止
#include <stdio.h>
#define N 5


double fun(int w[][N])
{
    int i, j;
    static double s=0, k=0;

    for(i=0;i<N;i++)
    {
        if((i=0) || (i=4))
            for(j=0;j<N;j++)
            {
                s+=w[i][j];
                k++;
            }
        else
            for(j=0;j<N;j+4)
            {
                s+=w[i][j];
                k++;
            }
    }
    s=s/k;
    return s;
}


void main()
{
    int a[N][N]={0, 1, 2, 7, 9, 1, 9, 7, 4, 5, 2, 3, 8, 3, 1, 4, 5, 6, 8, 2, 5, 9, 1, 4, 1};
    int i, j;
    double s;
    printf("*************the array************\n");
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
            printf("%4d", a[i][j]);
            printf("\n");
    }
    s=fun(a);
    printf("*************the result***********\n");
    printf("the sum is :%lf", s);
    getch();
}


为什么k和s的值会被覆盖掉, 定义是用static 也不能阻止  结果应该是等于3.375的   不过他偏偏就等于4
搜索更多相关主题的帖子: include double return 
2015-08-27 00:49
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:5 
if((i=0) || (i=4))
非你本意吧
=  ==
2015-08-27 00:57
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
收藏
得分:0 
回复 2楼 jklqwe111
我睡着了都被你点醒了   明白了


不要不要的。。。
2015-08-27 01:25
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
收藏
得分:0 
回复 2楼 jklqwe111
啊哦



回复早了     还是不行哦

不要不要的。。。
2015-08-27 01:31
李掌柜
Rank: 6Rank: 6
等 级:侠之大者
帖 子:94
专家分:406
注 册:2015-6-18
收藏
得分:5 
楼主想让代码实现什么功能?看代码好像是求数组的合,可看自定义函数又像是求数组的平均值,,

照片是可以做成小游戏的,快来私聊我吧!
2015-08-27 01:52
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
收藏
得分:0 
回复 5楼 李掌柜
一个数字矩形  求外围数字的和 再就平均值哦。。。例如这个
1 2 3 4 5
2 3 5 4 6
4 6 3 8 9
6 4 7 4 7
3 5 4 7 6


外围
1 2 3 4 5
2       6
4       9
6       7
3 5 4 7 6


不要不要的。。。
2015-08-27 01:56
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:10 
for(j=0;j<N;j+4)
            {
                s+=w[i][j];
                k++;
            }

j+4  没有改变j的值,造成死循环。
这个循环只是计算了首尾的值,有些浪费,直接计算就行,

s+=w[i][0];
s+=w[i][N-1];
k+=2;

另外,数据类型的选用也没有效率,s,k应使用整形,最后返回平均值时再转换。

return (double)s/k;

英语还要好好学学,平均数是average,而不是sum。
2015-08-27 07:06
快速回复:为什么变量的值会被覆盖掉, 定义时用static 也不能阻止
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030531 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved