1. 程式人生 > >輸出任意階層的螺旋陣列(c語言)

輸出任意階層的螺旋陣列(c語言)

/*
*   根據輸入的 m n 顯示螺旋陣列
*   @author 李政 <[email protected]>
*/

#include<stdio.h>

#define N 20

//行:m  列:n
void matrx(int a[][N],int m,int n)
{
    int d,x=0,y=0;

    int right,left,up,down;
    // d是螺旋陣列的值 [1,m*n]
    for( d = 1; d <= m*n; d++)
    {
        a[x][y]=d;
        //判斷任意方向是否可以移動
// 當 y<n-1 且 右邊的數 = 0 時 可以向右移動 right = y < n-1 && a[x][y+1] == 0; // 當 y>0  且 左邊的數 = 0 時 可以向左移動 left = y > 0 && a[x][y-1] ==0; // 上下方向同理 down = x < m-1 && a[x+1][y] ==0; up = x > 0 && a[x-1][y] ==0; if
(right) { //當可以向右時 如果可以向上移動時 要先向上移動 if(up) x--; //否則向右移動 else y++; } else if(left) { //當可以向左時 如果可以向下先向下移動 if(down) x++; else //否則向左移動
y--; } else if(down) { //當可以向下時 如果可以向右先向右移動 if(right) y++; //否則向下移動 else x++; } else if(up) { //當可以向上時 如果可以向左先向左移動 if(left) y--; //否則向上移動 else x--; } } } //列印陣列 void output(int a[][N],int m, int n) { int i,j; for( i = 0; i < m; i++) { for( j = 0; j < n; j++) printf("%4d",a[i][j]); printf("\n"); } } void main() { int a[N][N] = {0}; int m,n; printf("please input num:"); scanf("%d%d",&m,&n); matrx(a,m,n); output(a,m,n); }

相關推薦

輸出任意階層螺旋陣列c語言

/* * 根據輸入的 m n 顯示螺旋陣列 * @author 李政 <[email protected]> */ #include<stdio.h> #define N 20 //行:m 列:n void ma

演算法4-7:KMP演算法中的模式串移動陣列c語言

題目描述 字串的子串定位稱為模式匹配,模式匹配可以有多種方法。簡單的演算法可以使用兩重巢狀迴圈,時間複雜度為母串與子串長度的乘積。而KMP演算法相對來說在時間複雜度上要好得多,為母串與子串長度的和。但其算符比較難以理解。 在KMP演算法中,使用到了一個next陣列。這個陣列就是在比較

列印一年內任意月份的日曆C語言

題目要求:2007年1月1日為星期一,編寫一個函式,輸出2007年任意月份的日曆 這道題我是個人的做法,有個別地方可能有些繞。 #include<stdio.h> int main() { int month,WEEKDAY,count,month_days,width;

陣列C語言

陣列:一組具有相同型別資料的集合。 1、 一維陣列的建立 一維陣列的定義方式:type_t  arr_name[ count ];                                    //type_t 陣列元素的型別                

靜態二維陣列和動態二維陣列C語言

1、理解什麼是靜態二維陣列和動態二維陣列 靜態二維陣列:可以理解為程式中如下定義的陣列(定義一個3行4列的靜態二維陣列) int [3][4] = {{1,1,1,1}, {2,2,2,2}, {

7-5 表格輸出 C語言

本題要求編寫程式,按照規定格式輸出表格。 輸入格式: 本題目沒有輸入。 輸出格式: 要求嚴格按照給出的格式輸出下列表格: ------------------------------------ Province Area(km2) Pop.(10K) ------

對二維陣列使用指標進行操作的探索C語言

1 /* 2 Name: 對二維陣列使用指標進行操作的探索 3 Copyright: 4 Author: lingr7 5 Date: 01/12/18 11:55 6 Description: 7 */ 8 #include<stdi

將若干字串按字母順序由小到大輸出C語言

#include <stdio.h> #include <stdlib.h> #include<string.h> int main(){ void sort(char *name[],int n); void print(char *name[],i

輸出成績不及格的學生的學號及成績C語言

#include <stdio.h> #include <stdlib.h> int main(){ float score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}}; float *search(float

任意位數的水仙花數C語言

這是我第一次寫部落格,作為一個計算機專業的大一學生,聽說部落格記錄學習過程是一種不錯的做法,我便來嘗試了,很新奇,希望能堅持下去。 迴歸正題,當時學迴圈時以為水仙花數就是一個各位數字立方和等於它本身的三位數,但實際任意位數都可求水仙花數,此處貼下我的程式碼。 #include<st

字串、陣列、指標總結C語言

一、字串常量 位於一對雙引號中的任意字元,如果字串文字中間沒有間隔或間隔是空格符,ANSI C會將它串起來。例如 char str[50]="hello" "wo" "you!";  和   char st[50]="wo,nihao!";  &nbs

C語言二維陣列按行分別排序

//傳遞“指標陣列”方法#include <stdio.h> //排序函式,分別對每一行的元素進行排序 void sort(int *a[],int row,int col) { int i,j,k,temp; for(i=0; i<row; i++) {

OpenCVC語言:繪製矩形輪廓框,並輸出座標

直接上程式碼 Contour = contours[i]; Rect CRect; CRect = boundingRect(Contour); rectangle(srcImg, CRect, cv::Scalar(0, 0, 255)); /*CRect.tl();

LeetCode 26. 刪除排序陣列中的重複項 Remove Duplicates from Sorted ArrayC語言

題目描述: 給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 示例 1: 給定陣列 nums = [1,1,2], 函式應該返

C語言簡單明瞭的 陣列模擬棧+ C++陣列模擬棧

C語言資料結構中的很多東西都能夠通過陣列和連結串列來實現,所以熟練陣列和連結串列是很有必要的。 棧的特點就是先進後出,如圖輸出。 #include <iostream> #inclu

LeetCode 34. 在排序陣列中查詢元素的第一個和最後一個位置 Find First and Last Position of Element in Sorted ArrayC語言

題目描述: 給定一個按照升序排列的整數陣列 nums,和一個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。 你的演算法時間複雜度必須是 O(log n) 級別。 如果陣列中不存在目標值,返回 [-1, -1]。 示例 1: 輸入: nums = [

LeetCode 33. 搜尋旋轉排序陣列 Search in Rotated Sorted ArrayC語言

題目描述: 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7] 可能變為[4,5,6,7,0,1,2] )。 搜尋一個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 -1 。 你可以假設陣列中不存在重複的元素。 你

LeetCode 59. 螺旋矩陣 II Spiral Matrix IIC語言

題目描述: 給定一個正整數 n,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。 示例: 輸入: 3 輸出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 題目解答: 方法1:遍歷

LeetCode 54. 螺旋矩陣 Spiral MatrixC語言

題目描述: 給定一個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。 示例 1: 輸入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 輸出: [1,2,3,6,9,8,7,4,5]

C語言順序逆序輸出整數的每一位並列印整數位數

問題描述:輸入一個整數,順序逆序輸出輸出整數的每一位,並輸出整數的位數。 實現:本程式碼用的都是最基本的C語言知識,適合初學者 #include<stdio.h> int main() { int count = 0; int a,i; int temp; print