问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一个c语言题目,程序怎么写,完全没有思路

发布网友 发布时间:2023-09-03 00:55

我来回答

3个回答

热心网友 时间:2024-12-01 19:57

开一个NxN二维数组(足够大),往里面顺时针螺旋式填数,然后把数组中的数打印出来就完成了。
顺时针螺旋式填数的办法:顺时针边界行走。数组先填全0,定义边界宽度为所输入的数,然后从0行0列开始,向右按增加列号依次填数,直到到达边界(比如输入5,边界就是4),然后固定列号不变,按行增加填数,到达列边界再固定行号减小列号填数,再按减小行号填数...,如果遇到边界已经填数(不为0),则由行列填写转换。如此直到填完。

热心网友 时间:2024-12-01 19:57

#include <stdio.h>
#include <stdlib.h>

int main()
{
    for (;;) {
        int i,start,l,r,N,*metrix;

        printf("input N:");
        scanf("%d",&N);
        
        /*alloc memory*/
        metrix = (int *)malloc(N*N*sizeof(int));

        start = 1;

        /*asign in circle*/
        for (i = 0;i < (N+1)/2; i++) {
            int left,top,right,bottom,x,y;
            left = i;
            top = i;
            right = N - i - 1;
            bottom = N- i -1;

            /*top*/
            for (x=left;x<=right;x++) {
                metrix[top*N+x]=start++;
            }

            /*right*/
            for (y=top+1;y<bottom;y++) {
                metrix[y*N+right]=start++;
            }

            /*bottom*/
            for (x=right;x>left;x--) {
                metrix[bottom*N+x]=start++;
            }

            /*left*/
            for (y=bottom;y>top;y--) {
                metrix[y*N+left]=start++;
            }
        }
        
        /*printf*/
        for (l = 0;l < N;l++) {
            for (r =0 ;r < N;r++) {
                printf("%4d ",metrix[l*N+r]);
            }
            printf("\n");
        }
        printf("\n");

        free(metrix);
    }
    return 0;
}

大致是先计算多少圏,然后一圏一圏模拟

热心网友 时间:2024-12-01 19:58

C++版的,用比较普通的方法模拟了一下。。四个方向不同走一遍即可。

#include <iostream>
using namespace std;
int ans[100][100];
int main() {
  int n=5;
  int num=1;
  int x=0,y=0;
  int j=0;
  cin>>n;
  for(int i=n-1;i>=0;i=i-2)
  {
    cout<<i<<endl;
    for(j=0;j<i;j++)
    {
      ans[x][y+j]=num;
      num++;
    }
    y=y+i;
    for(j=0;j<i;j++)
    {
      ans[x+j][y]=num;
      num++;
    }
    x=x+i;
    for(int j=0;j<i;j++)
    {
      ans[x][y-j]=num;
      num++;
    }
    y=y-i;
    for(int j=0;j<i;j++)
    {
      ans[x-j][y]=num;
      num++;
    }
    x=x-j;
    x++;y++;//向里递进一层
  }
  if(n%2!=0)//奇数层中心特判
    ans[n/2][n/2]=num;
  for(int i=0;i<n;i++)
  {
    cout<<endl;
    for(int j=0;j<n;j++)
      cout<<ans[i][j]<<" ";
  }
  return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我在电脑上面下的电影在手机上面不显示? 为什么视频在手机里放不出来在电脑里放得出来? 求问bb霜什么牌‍子‍好 BB霜哪个牌子的比较好啊? 我用很多BB霜都过敏脱皮,该用哪个牌子的才能不过敏?拜托了各位 谢谢... 没有去继续教育会计证会不会被吊销? 会计证连续几年未继续教育会被吊销 我想请问,能不能从视频里抓出一段声音,然后保存,变成手机铃声的那种格式... 高中地理知识如何描述地貌特征 中国地理第一讲:自然地理之河流 佰草集面膜孕妇能用吗 求80级男弹药刷图加点,物理流,用步枪介绍要详细 关于离别的伤感难过个性签名唯美2018 dnf弹药110级走魔法还是物理dnf弹药100级技能加点 好听洋气的女宝宝乳名推荐 dnf65手游弹药物攻魔攻都要点满吗 DNF60版本弹药刷图加点dnf60版本弹药是物理还是魔法 安徽滁州中考满分多少2023 弹药怎么加点? 在职研究生入学条件有哪些? 路由器5g和非5g什么区别 一只马一个坑猜四字成语 鄞州职教中心录取分数线 宁波鄞州中考200多分能进职教中心吗 ? 木莫_猜一个成语 二战英国3.7英寸MK1无后坐力炮 图猜成语52 毕业档案被退回学校了,怎么办 ...股票怎么样?上能电气股吧票同花顺?上能电气2021年分红日? ...2021年目标价?300827上能电气财报?上能电气2021什么时候分红?_百度... 求C语言程序的简单解题思路 工作中需要具备哪些能力? 简单的西红柿炒虾仁的做法 节食减肥引起低血糖 怎么恢复 现代国防的基本特征是什么 在这迟到了冬天的年纪是什么歌? 夏至未至所有歌曲名称介绍 爱普生me350和爱普生me330有什么不同,哪个性价比高? 我想买台打印机,要能打印照片,推荐几个性价比高的 4000k和6500k的灯光哪个更适合看书? 6500k色温的显示器护眼吗? 怎么用手机话费开QQ会员,我的是苹果手机 西柚能减肥吗 百度百科词条中的内链是由百度平台自动抓取还是由词条创建者设置... 牙齿不好,看牙医会不会很恐怖 看牙科,有的人喜欢,有的人不喜欢 win7删除c盘无用文件 天机六件宝物是什么 2022年下半年教师资格证考试报名时间 番茄鸡蛋炒虾仁的做法