| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 748 人关注过本帖
标题:为什么在for中定义x不能正确进行,而非得在循环外
只看楼主 加入收藏
taoyuandudu
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2015-3-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
为什么在for中定义x不能正确进行,而非得在循环外
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num[20][20];
    int m,n;
    scanf("%d %d",&m,&n);
    int i,j;
    for(i = 0;i < m;i++){
        for(j = 0;j < n;j++){
            scanf("%d",&num[i][j]);

        }
    }
    int flag = 0;
    int x  =0;
    for(i = 0;i < m;i++){
        //int x  =0;            //为什么在for中定义x不能正确进行,而非得在循环外
        for(j = 0;j < n;j++){
            x = num[i][j];
            if((i < m-1) && ( i > 0) && (j > 0) && (j < n-1)){
                if((x > num[i-1][j]) && (x > num[i+1][j]) && (x > num[i][j-1]) && (x > num[i][j+1])){
                    printf("%d %d %d\n",x,i+1,j+1);
                    flag = 1;
                }
            }
        }
    }
    if(flag == 0)
        printf("None %d %d",m,n);
   // printf("Hello world!\n");
    return 0;
}
//为什么在for中定义了x后不能正确进行
/**输入在第1行中给出矩阵A的行数M和列数N(3<=M,N<=20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。

输出格式:

每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;
若同行有超过1个局部极大值,则该行按列号递增输出。
若没有局部极大值,则输出“None 总行数 总列数”。**/
搜索更多相关主题的帖子: include 
2015-06-04 23:29
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
你得告诉别人什么叫“不能正确进行”?
既然是和别人讲话,就应该说别人能听得懂的话。
2015-06-05 08:43
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:4 
代码出现在循环内 和循环外  获取的是截然不同的2种结果

放在最外层的循环之外  不参与循环  只是初始化而已  而放在循环内部则参与体内循环

DO IT YOURSELF !
2015-06-05 08:45
情.难言ゝ
Rank: 3Rank: 3
来 自:安徽安庆
等 级:论坛游侠
威 望:1
帖 子:74
专家分:137
注 册:2013-9-8
收藏
得分:7 
放在循环中 int x; 就会被执行多次,就相当于 int x;  int x; 这样的。
C语言中一旦定义了一个变量,它的地址就确定了,再次定义就相当于改变它的地址,这样是不允许的

树叶的离去,是风的追求、还是树的不挽留???
2015-06-05 09:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
回复 4楼 情.难言ゝ
不一定  看编译器心情了

DO IT YOURSELF !
2015-06-05 09:20
幻想乡流浪者
Rank: 2
来 自:种花家
等 级:论坛游民
帖 子:27
专家分:21
注 册:2015-6-6
收藏
得分:7 
int x  =0;
    for(i = 0;i < m;i++){
        //int x  =0;            //为什么在for中定义x不能正确进行,而非得在循环外
        for(j = 0;j < n;j++){
            x = num[j];
            if((i < m-1) && ( i > 0) && (j > 0) && (j < n-1)){
                if((x > num[j]) && (x > num[j]) && (x > num[j-1]) && (x > num[j+1])){
                    printf("%d %d %d\n",x,i+1,j+1);
                    flag = 1;
                }
            }
        }
    }
每一次进行for循环的时候,都要执行int x=0;
2015-06-07 11:16
你欠我人情
Rank: 2
等 级:论坛游民
威 望:1
帖 子:46
专家分:52
注 册:2015-6-5
收藏
得分:1 
同意不能进行多次定义

我是小白我是小白我是小白我是小白我是小白我是小白
2015-06-07 11:21
taoyuandudu
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2015-3-12
收藏
得分:0 
谢谢各位了,没想到重复定义也会出现这种问题
2015-06-10 23:40
rolimi
Rank: 4
等 级:业余侠客
威 望:1
帖 子:43
专家分:232
注 册:2015-6-10
收藏
得分:0 
我的可以正常通过编译。。

[ 本帖最后由 rolimi 于 2015-6-11 10:35 编辑 ]

呆呆的逗比程序猿
2015-06-11 10:34
快速回复:为什么在for中定义x不能正确进行,而非得在循环外
数据加载中...
 
   



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

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