| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 631 人关注过本帖
标题:为什么?不兼容还是我本来就弄错了?
只看楼主 加入收藏
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
为什么?不兼容还是我本来就弄错了?
程序代码:
#include <stdio.h>
int main()
{

 
    int N;
    scanf("%d",&N);
    int i,j;
    int a[N];
    printf("Please input numbers:\n");
    for(i = 0;i < N; i++)
        scanf("%d",&a[i]);
    for(j = 0;j < N; j++)
    {
        for(i = 0;i < N-j-1; i++)
        {
            if(a[i] > a[j])
            {
                a[i] ^= a[i+1];
                a[i+1] ^= a[i];
                a[i] ^= a[i+1];
            }
        }
    }
    printf("The sorted numbers :\n");
    for(i = 0;i < N; i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}

    int N;
    scanf("%d",&N);
    int i,j;
    int a[N];
代码中这个地方。我在Linux下写的,用gcc编译的,没什么提示错误。
现在放假。我在VS2010下写的。一大堆错误。提示就是这个地方错了!!!
求助!!!为什么???这样不能得到数组么???

[ 本帖最后由 执笔画江山 于 2015-4-4 21:40 编辑 ]
2015-04-04 21:39
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:10 
变长数组需要支持c99标准的编译器
vs报错就是告诉你不支持这种写法
用传统的malloc吧

Only the Code Tells the Truth             K.I.S.S
2015-04-04 21:55
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:10 
c99以后的编译器才支持变长数组,你可以把n定义为const型并初始化或定义成宏

一片落叶掉进了回忆的流年。
2015-04-04 22:03
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:0 
回复 2楼 longwu9t
谢了  瞬间明白  
那就没问题了  我还以为弄错了呢

malloc 动态分配,不太想用

授人以鱼,不如授人以渔
2015-04-04 22:11
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:0 
回复 3楼 诸葛欧阳
3KU  懂了  
还以为自己弄错了呢  编译器的问题
我还是malloc吧  但是真不想用malloc

授人以鱼,不如授人以渔
2015-04-04 22:12
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define SWAP(a, b) ((a) ^= (b), (b) ^= (a), (a) ^= (b))

int main(void) {
    int i, j, N, *a;

    if(scanf("%d", &N) != 1) exit(EXIT_FAILURE);

    if(!(a = malloc(N * sizeof(int)))) exit(EXIT_FAILURE);

    puts("Please input numbers:");

    for(i = 0; i < N; i++)
        if(scanf("%d", a + i) != 1) exit(EXIT_FAILURE);

    for(j = 0; j < N; j++)
        for(i = 0; i < N - j - 1; i++)
            if(a[i] > a[i + 1])
                SWAP(a[i], a[i + 1]);

    puts("The sorted numbers:");

    for(i = 0; i < N; i++)
        printf("%d%c", a[i], i == N - 1 ? '\n' : ' ');

    free(a);
    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-04-04 22:24
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
楼主所写的冒泡排序是错误的
所以补充了上面的代码

Only the Code Tells the Truth             K.I.S.S
2015-04-04 22:25
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:0 
回复 7楼 longwu9t
错的?哥们 你运行了么?我想知道 哪错了 你指点下

授人以鱼,不如授人以渔
2015-04-04 22:54
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 8楼 执笔画江山
图片附件: 游客没有浏览图片的权限,请 登录注册

你的代码  简单测试了一下 你看图 结果是错的

错在哪一句代码上呢???
你跟我写的对比一下 看看

Only the Code Tells the Truth             K.I.S.S
2015-04-04 23:27
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:0 
看到了  我贴的时候 把测试代码贴过来了  
a[i] > a[i+1]
很感谢。但是希望你说出是什么地方错了。不要给我写代码了。

授人以鱼,不如授人以渔
2015-04-04 23:45
快速回复:为什么?不兼容还是我本来就弄错了?
数据加载中...
 
   



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

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