自由面试:我来面试你来答!!!
根据图形所给出的规律及语言描述提示用纯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的算法
[解决办法]
不错的题目
------解决方案--------------------
虽然说废话是让人讨厌的,
但是,遇到好贴不顶是无法忍受的。
[解决办法]
给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!的
[解决办法]
这个必须顶啊-----------------------------------
[解决办法]
不错不错