| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1760 人关注过本帖, 3 人收藏
标题:下课老师出了这么个题,怎么都想不通,希望大家帮忙
只看楼主 加入收藏
liuyuling
Rank: 1
等 级:新手上路
帖 子:10
专家分:5
注 册:2009-10-14
结帖率:100%
收藏(3)
已结贴  问题点数:20 回复次数:20 
下课老师出了这么个题,怎么都想不通,希望大家帮忙
    我是刚学习C语言不久,学习循环的时候,老师最后留这么个问题让大家想,就是在屏幕上输出这个东西 :“ 1  2  3  4  
                                                                                                     12 13 14 5
                                                                                                     11 16 15 6
                                                                                                     10 9  8  7
   我就感觉直接用输出把他们写出来最方便了,但是要循环就不知道了,这个就发蒙了。大家有什么好方法呢?   
搜索更多相关主题的帖子: 下课 老师 
2009-10-14 19:58
changyilin
Rank: 2
等 级:论坛游民
帖 子:18
专家分:20
注 册:2009-9-4
收藏
得分:0 
查查以前的帖子,有比这个难的多的,用二维数组做得
2009-10-14 21:09
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
就是让你找这个数组前后之间的规律啊
2009-10-14 21:12
LEED
Rank: 2
等 级:论坛游民
帖 子:75
专家分:43
注 册:2009-8-26
收藏
得分:0 
我觉的要用二位数组来做。。。
但琢磨了半个小时了。。还没弄清思路。。
望高手解答一哈。。
2009-10-14 21:13
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:5 
#include <stdio.h>  
#include <stdlib.h>  
#define N 4  
int a[N][N],num;  
 
int main()  
{  
int i=-1,j=-1,start=0,end=N;  
for(;end-start>0;++start,--end)  
   {  
    for(++i,++j;j<end;a[i][j++]=++num);
    for(--j,++i;i<end;a[i++][j]=++num);   
    for(--i,--j;j>=start;a[i][j--]=++num);  
    for(++j,--i;i>start;a[i--][j]=++num);  
   }  
 for(i=0;i<N;++i)
    {
     for(j=0;j<N;++j)
       printf("%4d",a[i][j]);
     printf("\n");
    }
system("pause");  
return 0;  
}
2009-10-14 21:20
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:8 
看看我的方法,试试还能不能更简单点。
·
程序代码:
#define MAX 4 
int main(void) 
{ 
 int x=1,n=MAX,m,k,i,j,a[MAX][MAX]; 
 j=m=-1;i=k=0; 
 while(1) 
   { 
    for(m=0;m<n;m++)a[i][j+=x]=++k;  
    if(!--n)break;  
    for(m=0;m<n;m++)a[i+=x][j]=++k; 
    x*=-1; 
   } 
 
 
 for(i=0;i<MAX;i++) 
   { 
    for(j=0;j<MAX;j++) 
      printf("%5d",a[i][j]); 
    printf("\n\n\n"); 
   } 
 
 return 0; 
}

努力—前进—变老—退休—入土
2009-10-14 22:06
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 6楼 UserYuH
有~~

我就是真命天子,顺我者生,逆我者死!
2009-10-14 22:15
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
BlueGuy 发来看看。

努力—前进—变老—退休—入土
2009-10-14 22:27
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:4 
#include <stdio.h>
#define min(a,b) (((a) < (b)) ? (a) : (b))
#define N 4
 
int main()
{     
    for (int i = 0; i < N; ++i, puts(""))
        for (int j = 0; j < N; ++j)
        {
            int c = min(min(i, N-1-i), min(j, N-1-j)),
                d = N-1-c, q = c*(N-c) << 2, s = 0;
            if (i == c) s = q+j-c+1;
            else if (j == d) s = q+d+i-c*2+1;
            else if (i == d) s = q+2*d+N-j-c*3;
            else if (j == c) s = q+3*d+N-i-c*4;
            printf("%3d", s);
        }
        return 0;
}  

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-10-14 22:50
yutianshangu
Rank: 2
等 级:论坛游民
帖 子:25
专家分:73
注 册:2008-10-12
收藏
得分:0 
没有一个能看懂的啊。
2009-10-14 23:01
快速回复:下课老师出了这么个题,怎么都想不通,希望大家帮忙
数据加载中...
 
   



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

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