| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 500 人关注过本帖, 2 人收藏
标题:求教两个题目,求解答
只看楼主 加入收藏
tp19920527
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2011-2-26
结帖率:100%
收藏(2)
已结贴  问题点数:20 回复次数:9 
求教两个题目,求解答
① 一个数如果恰好等于它的因子之和,这个数就称为“完数“。列入,6的因子为1,2,3,而6=1+2+3,一次6是完数。编程序找出1000之内所有完数,并按下面格式输出其因子:
6 its factors are 1,2,3
② 输出魔方阵.所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线上之和均相等。例如三界魔方阵为:
8  1  6
3  5  7
4  9  2
要求输出1~n^2(就是n的平方)的自然数构成的魔方阵.

本人新手,请尽量引用较少的函数...
搜索更多相关主题的帖子: 对角线 自然数 
2011-03-06 22:10
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:20 
#include <stdio.h>
#define SIZE 5  //定义幻方阶数,这个数只能是奇数
int main()
{
    int x, y, i, sqSize, hSize;
    int sqMap[SIZE][SIZE];
    sqSize = SIZE * SIZE;
    hSize  = SIZE / 2;
    //计算1至SIZE * SIZE的数的位置并记录
    for ( i = 0; i < sqSize; i++)
    {
        x = hSize + 1 + i + i / SIZE;
        y = hSize     + i - i / SIZE;
        sqMap[y % SIZE][x % SIZE] = i + 1;
    }
    //以下是输出
    for (y = 0; y < SIZE; y++)
    {
        for (x = 0; x < SIZE; x++)
            printf("%4d", sqMap[y][x]);
        puts("");
    }
    return 0;
}
魔方阵

勤能补拙,熟能生巧!
2011-03-06 22:13
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:0 
美琴写的

勤能补拙,熟能生巧!
2011-03-06 22:13
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

void f(int j)
{
int sum=0,i,a,k=0;
int *p;
p=(int*)malloc(sizeof(int)*(j/2));
for(i=1;i<(j/2)+1;++i)
{
if(j%i==0)
{
p[k]=i;
k++;
}
a=k;
}
if(a!=0)
{
for(k=0;k<a;++k)
{
sum+=p[k];
}
if(sum==j)
{
for(k=0;k<a-1;++k)
printf("%d+",p[k]);
printf("%d=%d\n",p[k],j);
}
}
free(p);
}

void main()
{
int j,n;
printf("该程序用来寻找完数,\n请确定要寻找的范围1~n,请输入n:\t");
scanf("%d",&n);
for(j=1;j<n+1;++j)
f(j);
}


勤能补拙,熟能生巧!
2011-03-06 22:20
tp19920527
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2011-2-26
收藏
得分:0 
回复 3楼 huangapple
幻方数为4也可以吧 。。
2011-03-06 22:21
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:0 
回复 5楼 tp19920527
不清楚,

勤能补拙,熟能生巧!
2011-03-06 22:22
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
学习且收藏啦!!!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-06 22:23
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
回复 5楼 tp19920527
只能是奇数阶吧!
2011-03-07 10:25
dyq1991
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-11-14
收藏
得分:0 
回文  ......
  
#include<stdio.h>
void main()
{
    int i,n,m,sum,o,x;
    int k[100];
    for(x=2;x<1000;x++)
    {
        sum=0;
        o=0;
        n=x;
        for(m=1,i=0;m<n;m++)
        {
            if(n%m==0)
            {
                k[i]=m,o=o+1;
                sum=sum+m;
                i++;
            }
        }
        if(sum==x)
        {
            printf("%4d its factors are",x);
            for(i=0;i<o;i++)
            {
                if(i<o-1)
                    printf("%4d",k[i]);
                else
                    printf("%4d",k[i]);
            }
            printf("\n");
        }
    }
}
2011-03-07 11:03
dyq1991
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-11-14
收藏
得分:0 
回复 4楼 huangapple
受教了!!!
.....p=(int*)malloc(sizeof(int)*(j/2));
这个是什么意思啊?是数据结构里的吗??  有什么用啊??
...for(i=1;i<(j/2)+1;++i)
++i 可以改成i++不?

[ 本帖最后由 dyq1991 于 2011-3-7 11:39 编辑 ]
2011-03-07 11:21
快速回复:求教两个题目,求解答
数据加载中...
 
   



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

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