[英]C program to print right angle triangle
我正在嘗試使用 for 循環在 C 中編寫一個程序,該循環將 output 類似於此的模式:
1
2 3
4 5 6
7 8 9 10
如您所見,該模式是一個直角三角形,每一行的數字數量與每行中的第一個數字相同。 我是 C 的初學者,並選擇 go 關於解決問題以練習我對 for 循環的使用並逐步完成此操作,因此我選擇首先了解如何打印第一列。 到目前為止,這是我的代碼:
#include <stdio.h>
int main()
{
int n;
int p = 1;
printf("enter number of rows: ");
scanf("%d", &n);
for (int i= 1; i <= n; i += p++){
printf("%d\n", i);
}
return 0;
}
我發現每列的第一個數字在分解時增加了 1 例如( 1 + 1 = 2 、 2 + 2 = 4 、 4 + 3 = 7 )正如你所看到的每個數字我都加粗了構成第一列。 我的問題是,當我要求用戶輸入一個值來組成特定數量的行時,例如 5,for 語句只打印出 4 行,如下所示:
enter number of rows: 5
1
2
4
我猜這是由於語句 i <= n 但我如何指定行數而不中斷第一列的計算?
這里有一個三角形打印程序。
int ndigits(unsigned long long x)
{
int ndg = 0;
while(x)
{
ndg++;
x /= 10;
}
return ndg;
}
void triangle(int rows)
{
int count = 1;
int ndg = ndigits(rows * (rows + 1) /2);
for(int row = 1; row <= rows; row++)
{
for(int column = 1; column <= row; column++)
{
printf("%0*d ", ndg, count++);
}
printf("\n");
}
}
int main(void)
{
triangle(30);
}
function ndigits
計算數字的小數位數。 需要打印實三角形,因為所有數字必須具有相同的大小(有些將用零填充)。 否則三角形看起來不會像三角形。
rows * (rows + 1) /2
公式計算 1+2+3+4+5... 的結果...顯示三角形中的最大數字
三排三角形將看起來:
1
2 3
4 5 6
十行三角形:
01
02 03
04 05 06
07 08 09 10
11 12 13 14 15
16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 32 33 34 35 36
37 38 39 40 41 42 43 44 45
46 47 48 49 50 51 52 53 54 55
和 20 行:
001
002 003
004 005 006
007 008 009 010
011 012 013 014 015
016 017 018 019 020 021
022 023 024 025 026 027 028
029 030 031 032 033 034 035 036
037 038 039 040 041 042 043 044 045
046 047 048 049 050 051 052 053 054 055
056 057 058 059 060 061 062 063 064 065 066
067 068 069 070 071 072 073 074 075 076 077 078
079 080 081 082 083 084 085 086 087 088 089 090 091
092 093 094 095 096 097 098 099 100 101 102 103 104 105
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
您可以在這里自己嘗試: https://godbolt.org/z/7EWWso
您可以使用這個簡單的代碼:
#include <stdio.h>
int main(){
int count=0;
for (int i = 01; i < 11; ++i) {
for (int j = 01; j <=i; ++j) {
count+=01;
printf("%d ",count);
}
printf("\n");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.