首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

自由面试:小弟我来面试你来答!

2013-01-01 
自由面试:我来面试你来答!!!根据图形所给出的规律及语言描述提示用纯C(*.c)编写代码实现其功能。要求:(四

自由面试:我来面试你来答!!!
根据图形所给出的规律及语言描述提示用纯C(*.c)编写代码实现其功能。

要求:("四要")
1、要有良好的编程风格.
2、要有必要的文字说明.
3、要有较经典的算法.
4、要用精简的代码完成.

【1】


Please input a number:10

    1    2    6    7   15   16   28   29   45   46

    3    5    8   14   17   27   30   44   47   64

    4    9   13   18   26   31   43   48   63   65

   10   12   19   25   32   42   49   62   66   79

   11   20   24   33   41   50   61   67   78   80

   21   23   34   40   51   60   68   77   81   90

   22   35   39   52   59   69   76   82   89   91

   36   38   53   58   70   75   83   88   92   97

   37   54   57   71   74   84   87   93   96   98

   55   56   72   73   85   86   94   95   99  100


【2】

Input n(0~50):10
   82   81   80   79   78   77   76   75   74   73

   83   50   49   48   47   46   45   44   43   72

   84   51   26   25   24   23   22   21   42   71

   85   52   27   10    9    8    7   20   41   70

   86   53   28   11    2    1    6   19   40   69

   87   54   29   12    3    4    5   18   39   68

   88   55   30   13   14   15   16   17   38   67


   89   56   31   32   33   34   35   36   37   66

   90   57   58   59   60   61   62   63   64   65

   91   92   93   94   95   96   97   98   99  100


【3】

Input n(0~50):10
    1    2    3    4    5    6    7    8    9   10

   36   37   38   39   40   41   42   43   44   11

   35   64   65   66   67   68   69   70   45   12

   34   63   84   85   86   87   88   71   46   13

   33   62   83   96   97   98   89   72   47   14

   32   61   82   95  100   99   90   73   48   15

   31   60   81   94   93   92   91   74   49   16

   30   59   80   79   78   77   76   75   50   17

   29   58   57   56   55   54   53   52   51   18

   28   27   26   25   24   23   22   21   20   19


【4】

杨辉三角:
                                   1
                                1     1
                             1     2     1
                          1     3     3     1
                       1     4     6     4     1


                    1     5    10    10     5     1
                 1     6    15    20    15     6     1
              1     7    21    35    35    21     7     1
           1     8    28    56    70    56    28     8     1
        1     9    36    84   126   126    84    36     9     1
     1    10    45   120   210   252   210   120    45    10     1


[解决办法]
收藏了,下去好好看看
[解决办法]
有意思!!!!!
[解决办法]
练手用正好,有空自己写几个发上来。
[解决办法]
该回复于2010-12-03 10:31:07被版主删除
[解决办法]
那个年历……1752年9月要处理么XD
[解决办法]
有意思
[解决办法]
等下做一下。
[解决办法]
mark  慢慢解决
[解决办法]
该回复于2010-12-03 13:35:38被版主删除
[解决办法]
jing dian 
[解决办法]
强!!!呵呵。
[解决办法]
mark,收藏,练练手!
[解决办法]
该回复于2010-12-03 10:31:07被版主删除
[解决办法]
【1】

#include <stdio.h>
#define MAX_LENGTH 10
int main()
{
int a[MAX_LENGTH][MAX_LENGTH];
int i=1,j=0,k=1,f=0;
memset(a,0,sizeof(int)*MAX_LENGTH*MAX_LENGTH);
a[0][0]=k;

while (k<MAX_LENGTH*MAX_LENGTH)
{
while (i!=f) a[--i][++j]=++k; //left and down
if (j!=1&&j<MAX_LENGTH-1) a[i][++j]=++k; //right
else if (j==MAX_LENGTH-1)


{
a[++i][j]=++k;//down
++f;
}
while (j!=f) a[++i][--j]=++k; //right and down
if (i<MAX_LENGTH-1) a[++i][j]=++k;//down
else 
{
a[i][++j]=++k;//right
++f;
}
}
//show
for (int m=0;m<MAX_LENGTH;++m)
{
for (int n=0;n<MAX_LENGTH;++n)
{
printf("%d\t",a[m][n]);
}
//printf("\n");
}
return 0;
}


[解决办法]
真强啊,慢慢写啊
[解决办法]
该回复于2010-12-03 10:31:07被版主删除
[解决办法]
【3】

#include <stdio.h>
#define MAX_LENGTH 50
int a[MAX_LENGTH][MAX_LENGTH];
int main()
{
int n,i,j,k=0;
printf("Input n(0~50):");
scanf("%d",&n);
memset(a,0,sizeof(a));
k=a[i=0][j=0]=1;
while (k<n*n)
{
while (j+1<n &&!a[i][j+1]) a[i][++j]=++k; //left
while (i+1<n &&!a[i+1][j]) a[++i][j]=++k; //down
while (j-1>=0&&!a[i][j-1]) a[i][--j]=++k; //right
while (i-1>=0&&!a[i-1][j]) a[--i][j]=++k; //up
}
//show
for (i=0;i<n;++i)
 {
 for (j=0;j<n;++j)
{
 printf("%5d",a[i][j]);
 }
 printf("\n");
 }
return 0;
}

【2】类似
[解决办法]
该回复于2010-12-02 15:54:09被版主删除
[解决办法]
留名 练手
[解决办法]
该回复于2010-12-03 10:17:06被版主删除
[解决办法]
题目3的。。不知道还能不能更优化点

#include<stdio.h>

void main()
{
int a[10][10],k,m,n,ab,s;
k=100;
ab=9;
s=0;
while(k>=1)
{

for(m=ab,n=ab;m>=s;m--,k--)
{
a[n][m]=k;
}
for(m=ab-1,n=s;m>=s;m--,k--)
{
a[m][n]=k;
}
for(m=s+1,n=s;m<=ab;m++,k--)
{
a[n][m]=k;
}
s++;
for(m=s,n=ab;m<=ab-1;m++,k--)
{
a[m][n]=k;
}
ab--;

}
for(m=0;m<10;m++)
{
for(n=0;n<10;n++)
{
printf("%-4d",a[m][n]);
}
printf("\n");
}

[解决办法]
该回复于2010-12-03 10:17:07被版主删除
[解决办法]
该回复于2010-12-03 11:49:21被版主删除
[解决办法]
lian xi
[解决办法]
求题目4和题目9的算法
[解决办法]
不错的题目
------解决方案--------------------


虽然说废话是让人讨厌的,
但是,遇到好贴不顶是无法忍受的。
[解决办法]

引用:
【10】

C/C++ code

Input number:5000
pow(2,5000)=141246703213942603683520966701614733366889617518454111681368808585711816984270751255808912631671152637335603208431366082764203838069979338335971185……


给LZ捧个场:

#include <stdio.h>
#define    N    10000
int main(int argc, char **argv) 
{
    int data[ N ] = { 1 };
    int digit, i, index,  carry;
    int tmp;
    
    for ( i = 2, digit = 0; i <= 1000; i++ )
    {
        for ( index = 0, carry = 0; index <= digit; index++ )
        {
            tmp = data[ index ] * i + carry;
            data[ index ] = tmp % 10000;
            carry = tmp / 10000;
        }
        while ( carry )
        {
            data[ ++digit] = carry % 10000;
            carry /= 10000;
        }
    }
    printf( "%d", data[ digit ] );
    for ( i = digit - 1; i >= 0; i-- )
    {
        printf( "%04d", data[ i ] ); // 控制数组格式!
    }
    return 0;
}

[解决办法]
不好意思,贴错了,上面的是计算1000!的
[解决办法]
这个必须顶啊-----------------------------------
[解决办法]
不错不错

热点排行