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

(很初学者的有关问题,初学C语言)想问几个简单的C有关问题.

2012-02-15 
(很菜鸟的问题,初学C语言)想问几个简单的C问题... 这几个小题怎么做,虽然听说很简单...师哥师姐们,帮帮忙

(很菜鸟的问题,初学C语言)想问几个简单的C问题...

这几个小题怎么做,虽然听说很简单...师哥师姐们,帮帮忙啊

1.   有   N   个人围成一圈参加游戏,游戏的规则是:
        N个人的编号分别为1、2、……、N,以编号为‘1’的人开始报数,报到   M   时该人跳出圈子,下一人继续报数。按此要求依次输出所有跳出圈子人员的编号。  
   
2.   已知一维数组   A   共有25个元素,值为:A(I)=I,现将此一维数组存入二维数组   B(5,5),存放次序为:  
        A(1)     A(2)     A(5)     A(10)     A(17)  
        A(4)     A(3)     A(6)     A(11)     A(18)  
        A(9)     A(8)     A(7)     A(12)     A(19)  
        A(16)   A(15)   A(14)   A(13)     A(20)  
        A(25)   A(24)   A(23)   A(22)     A(21)  
即:  
  B(1,1)=A(1)     B(1,2)=A(2)     B(1,3)=A(5)     B(1,4)=A(10)     B(1,5)=A(17)…  
   
3.   在屏幕上输出杨辉三角形的前   N   行:  
            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  
   
   
4.   魔术矩阵问题:魔术矩阵由一个n×n(n为奇数)的整数矩阵构成,矩阵中的整数
值是从1~n2   。   每一行、每一列和两个对角线上数值之和相等。例如下面n为5的
魔术矩阵,它的和是65:  
15   8   1   24   17  
16   14   7   5   23  
22   20   13   6   4  
3   21   19   12   10  
9   2   25   18   11  

 
先谢谢你们了!

[解决办法]
第一题:
struct test{
int num;
int flag;
};
static int N =20;
static int M =30;

int main()
{
struct test test1[N+1];
int j=1,i=1,k=0,none=0,line=0;
memset(test1,0,sizeof(test1));
for(i=1;i <=N;i++)
{
test1[i].num=i;
test1[i].flag=1;
}
j=1;
i=0;
while(1)
{
none=0;
if(i++> =N)i=1;
if(test1[i].flag)
{
if(j++==M&&(j=1))
{
printf( "%d ",test1[i].num);
if(++line%10==0)printf( "\n ");
test1[i].flag=0;
for(k=1;k <=N;k++)
if(test1[k].flag){none=1;break;}
if(!none){printf( "\n ");return 0;}
}

}
}
}

第二题:
#define line 5



int main()
{
int a[line*line],b[line][line];
int i=0,j=0,k=0,m=0;
for(i=0;i <line*line;i++)
a[i]=i;
memset(b,0,sizeof(b));
for(i=0;i <line;i++)
{
for(j=0,k=i;j <=i;j++)
{
b[j][k]=a[m++];
}
for(k=i-1,j=i;k> =0;k--)
{
b[j][k]=a[m++];
}
}
for(i=0;i <line;i++)
{
for(j=0;j <line;j++)
printf( "%d ",b[i][j]);
printf( "\n ");
}
}


第三题:
#define N 10
int main()
{
int i=0,j=0,k=0,m=0,n=0;
int linenum=10,buf1[N+1],buf2[N+1];
memset(buf1,0,sizeof(buf1));
memset(buf2,0,sizeof(buf2));
buf1[1]=1;
for(i=1;i <N;i++)
{
for(j=1;j <=i;j++)
{
printf( "%d ",buf2[j]=buf1[j-1]+buf1[j]);
}
memset(buf1,0,sizeof(buf1));
memcpy(buf1,buf2,sizeof(buf1));
memset(buf2,0,sizeof(buf2));
printf( "\n ");
}
}

热点排行