日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C算法编程题(四)上三角

發布時間:2025/6/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C算法编程题(四)上三角 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

  上一篇《C算法編程題(三)畫表格》

  上幾篇說的都是根據要求輸出一些字符、圖案等,今天就再說一個“上三角”,有點類似于第二篇說的正螺旋,輸出的字符少了,但是邏輯稍微復雜了點。

程序描述

  方陣的主對角線之上稱為“上三角”。
?? ?請你設計一個用于填充n階方陣的上三角區域的程序。填充的規則是:使用1,2,3….的自然數列,從左上角開始,按照順時針方向螺旋填充。
?? ?例如:當n=3時,輸出:
?? ?1 2 3
?? ?6 4
?? ?5
?? ?當n=4時,輸出:
?? ?1? 2 3 4
?? ?9 10 5
?? ?8? 6
?? ?7
?? ?當n=5時,輸出:
?? ?? 1? 2? 3? 4? 5
?? ? 12 13 14? 6
?? ? 11 15? 7
?? ? 10? 8
?? ?? 9

?? ?程序運行時,要求用戶輸入整數n(3~20)
?? ?程序輸出:方陣的上三角部分。
?? ?要求格式:每個數據寬度為4,右對齊。

程序實現

 ? 上三角和正螺旋的圖形很相似,不同的是上三角輸出的圖形是從對角線斜過來的。

  接下來,我們看看能不能從上三角圖形中找些規律,有規律、把思路理清了,我們才能更容易用程序來實現所需功能。

  首先我們會發現,輸出的上三角和我們輸入的行有關,如果輸入5行,那就15個數,也就是輸入N行,就輸出N*(N+1)/2個數;其次和正螺旋一樣都是依次遞增的,從上三角圖形我們可以看到,遞增分為三個方向;左->右、右上->左下、下->上。

  先貼下代碼:

1 for(j=1;j<=N*(N+1)/2;low++,hi--) 2 { 3 for(i=low;i<hi-low;i++) 4 a[low][i]=j++; 5 for(i=low+1;i<hi-low;i++) 6 a[i][hi-i-1]=j++; 7 for(i=(hi-low)-2;i>low;i--) 8 a[i][low]=j++; 9 }

  a表示的是輸出的二維數組,N表示輸入的行數,hi表示的是列的個數,初始化和N一樣,N*(N+1)/2表示的就是上三角的個數,low表示的圈數,這三個for循環的意思就是上面說的三個方向,語句很簡單主要是怎么利用參數來表示輸出數組的下標。

  話不言多,大家慢慢體會,如果有更好的實現方法,歡迎交流。。。

?

  完整代碼:

1 #include "stdio.h" 2 #include "string.h" 3 #include "stdlib.h" 4 5 int main() 6 { 7 int low,i,j,hi,N; 8 int a[80][80]; 9 while(scanf("%d",&N)) 10 { 11 if(N==0) 12 break; 13 low=0; 14 hi=N; 15 for(j=1;j<=N*(N+1)/2;low++,hi--) 16 { 17 for(i=low;i<hi-low;i++) 18 a[low][i]=j++; 19 for(i=low+1;i<hi-low;i++) 20 a[i][hi-i-1]=j++; 21 for(i=(hi-low)-2;i>low;i--) 22 a[i][low]=j++; 23 } 24 for(i=0;i<N;i++) 25 { 26 for(j=0;j<N-i;j++) 27 printf("%4d ",a[i][j]); 28 printf("\n"); 29 } 30 } 31 return 0; 32 } View Code

  運行結果:

?

轉載于:https://www.cnblogs.com/xishuai/p/3406992.html

總結

以上是生活随笔為你收集整理的C算法编程题(四)上三角的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。