| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1540 人关注过本帖
标题:【Dev-C++】中【函数原型】是否无法 定义【变长二维数组】(附【源代码】)
只看楼主 加入收藏
了无此生
Rank: 3Rank: 3
来 自:粤地潮州
等 级:论坛游侠
威 望:3
帖 子:82
专家分:121
注 册:2018-11-14
结帖率:100%
收藏
已结贴  问题点数:40 回复次数:2 
【Dev-C++】中【函数原型】是否无法 定义【变长二维数组】(附【源代码】)
我用Dev-C++写这个程序时,发现编译出错,而使用学校的服务器则可以编译运行
求大佬们指点一下
程序代码:
#include <stdio.h>

void create_magic_square(int n, char magic_square[n][n]);            //这个程序在 Dev-C++ 上编译错误
void print_magic_square(int n, char magic_square[n][n]);

int main(void)
{    
    int n;
    printf("This is program creates a magic square of a specified size.\n");
    printf("The size must be an odd number between 1 and 99.\n");
    printf("Enter size of magic square: ");
    
    scanf("%d", &n);
    
    char a[n][n];                //变长数组无法直接 a[i][j] = {0}; 
    
    create_magic_square(n, a);
    
    print_magic_square(n, a);
    
    return 0;

 } 

 

 void create_magic_square(int n, char magic_square[n][n])

 {
     int num = 1, i, j;
     
     for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            magic_square[i][j] = 0;                //清零,为后面替换做准备; 
    
    i = 0, j = n / 2;                        //开始的地方; 
     
    while (num <= n * n) {                        //当 num < n * n 时, 循环下去;  
        if (magic_square[i][j] == 0) {                //当数组元素未被填入非零数字时替换; 
            magic_square[i][j] = num++;
            i = (i - 1 + n) % n, j = (j + 1) % n;        //当要用函数替换这个语句时,发现一个函数无法返回两个值,所以最后放弃用函数; 
        }
        else {                            //当数组元素已被替换时下跑到前一个元素的下面,并继续执行斜向上替换直至结束; 
            i = (i + 2) % n, j = (j - 1 + n) % n; 
            magic_square[i][j] = num++;
            i = (i - 1 + n) % n, j = (j + 1) % n;
        }
    }

 }

 

 void print_magic_square (int n, char magic_square[n][n])

 {
     for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++)
            printf("%5d", magic_square[i][j]);
        putchar('\n');
    }
}
搜索更多相关主题的帖子: C++ 函数 void int num 
2019-01-12 01:45
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:20 
char a[n][n]; CPP应该无问题
void create_magic_square(int n, char magic_square[n][n]); 传数组首元素地址和维数就可以
void create_magic_square(int n, char *magic_square);
2019-01-12 05:07
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:20 
有一部分编译器不支持变长数组

DO IT YOURSELF !
2019-01-12 11:18
快速回复:【Dev-C++】中【函数原型】是否无法 定义【变长二维数组】(附【源代码 ...
数据加载中...
 
   



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

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