| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 324 人关注过本帖
标题:打印幻方(c语言程序设计现代方法的习题)多次试验无果
取消只看楼主 加入收藏
love51606
Rank: 1
等 级:新手上路
帖 子:13
专家分:4
注 册:2012-12-17
结帖率:66.67%
收藏
已结贴  问题点数:5 回复次数:1 
打印幻方(c语言程序设计现代方法的习题)多次试验无果
程序代码:
#include <stdio.h>
#include<string.h>
void create_magic_square(int n,int magic_square[99][99]);
void print_magic_square(int n,int magic_square[99][99]);
int main(void)
{
    int n;
    int magic_square[99][99]={0};
    printf("Please enter a number for you want to display the magic:");
    scanf("%d",n);
    create_magic_square(n,magic_square);
    print_magic_square(n,magic_square);
    return 0;
}
void create_magic_square(int n,int magic_square[99][99])
{
    magic_square[0][(n-1)/2]=1;
    int    row =0,col=(n-1)/2;
    for(int k=2;k<=n*n;k++)                        //±éàú,àà¼ó
    {
        while(1)
        {
            row--;                            //DDÏòéÏòÆ,áDÏòóòòÆ
            col++;
            while(1)
            {
                if(row<0)                     //èç1ûDDD¡óú0,Ñ-»·DD
                {
                    row +=n;
                    continue;
                }
                if(col>=n)                     //èç1ûáD3¬1y·¶Î§,Ñ-»·áD
                {
                    col -=n;
                    continue;
                }
                if(col<0)                       //èç1ûáDD¡óú0
                {
                    col +=n;
                    continue;
                }
                if(magic_square[row][col]!=0)                //ÅD¶ÏêÇ·ñòѾ-ìî3ä
                {
                    row+=2;
                    col-=1;
                    if(row>n)                       
                    {
                        row-=n;
                        continue;
                    }
                    if(col<n)
                    {
                        col+=n;
                        continue;
                    }
                    continue;
                }
                break;
            }
            magic_square[row][col]=k;
            break;
        }
    }
}

void print_magic_square(int n,int magic_square[99][99])
{
        for(int i=0;i<n;i++)
    {
            for(int j=0;j<n;j++)
            {
                printf("%.2d",magic_square[i][j]);
                printf("   ");
            }
            printf("\n");
    }
}
图片附件: 游客没有浏览图片的权限,请 登录注册


本意是要打印一个幻方,由于采用的是VC++6.0编译器不支持变长数组,于是题目要求把数组定义成magic_square[99][99],我尝试用以上代码编译发现可以通过,但在输出n阶之后,程序不能运行.报内存不能为写.
   另外为什么题目要求把数组定义为字符型.求指教..
搜索更多相关主题的帖子: 打印 c语言程序 
2013-01-11 15:12
love51606
Rank: 1
等 级:新手上路
帖 子:13
专家分:4
注 册:2012-12-17
收藏
得分:0 
由于自己的不小心,漏了一个取值符号'&'导致没法找开内存,所以报错.
 但是对于题目中的定义数组采用char不能实现目的..
 求指教...
2013-01-11 16:06
快速回复:打印幻方(c语言程序设计现代方法的习题)多次试验无果
数据加载中...
 
   



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

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