印出直角三角形
由簡單到難的難度分別為以下四種
第一種直角三角形
@
@@
@@@
<方法一>
#include <stdio.h>
int main(void) {
int i, j;
int number;
scanf("%d", &number);
for(i = 1; i <= number; i++){
for(j = 1; j <= i; j++){
printf("@");
}
printf("\n");
}
return 0;
}
第二種直角三角形
@@@
@@
@
<方法一>
#include <stdio.h>
int main(void) {
int i, j;
int number;
scanf("%d", &number);
for(i = 1; i <= number; i++){
for(j = i; j <= number; j++){
printf("@");
}
printf("\n");
}
return 0;
}
<方法二>
#include <stdio.h>
int main(void) {
int i , j; //counter
int number;
scanf("%d", &number);
for(i = n; i >= 1; i--){
for(j = 1; j <= i; j++){
printf("@");
}
printf("\n");
}
return 0;
}
<方法三> 函數
// 多行成直角三角形
void print_triangle(int row) // row 是行數
{
int i;
for (i=row; i>=1; i--) print_line(i);
}
// 多字成行
void print_line(int L) // L 是一行的長度
{
int i;
for (i=1; i<=L; i++) printf("@");
printf("\n");
}
int main(void) {
int number;
scanf("%d", &number);
print_triangle(number);
return 0;
}
// URL: http://www.csie.ntnu.edu.tw/~u91029/AlgorithmDesign.html#1
第三種直角三角形
@
@@
@@@
<方法一>
#include <stdio.h>
int main(void) {
int i, j;
int number;
scanf("%d", &number);
for(i = 1; i <= number; i++){
for(j = number; j >= 1; j--){
if(j > i) printf(" ");
else printf("@");
}
printf("\n");
}
return 0;
}
第四種直角三角形
@@@
@@
@
#include <stdio.h>
int main(void) {
int i, j;
int number;
scanf("%d", &number);
for(i = 1; i <= number; i++){
for(j = 1; j <= number; j++){
if(j >= i) printf("@");
else printf(" ");
}
printf("\n");
}
return 0;
}
想法: 如圖
進階版:菱形(Diamond)
*
***
*****
***
*
<方法一>
#include <stdio.h>
int main(void) {
int i, j; // counter
int number; // size
scanf("%d", &number);
/* the upper half : big isosceles triangle */
for(i = 1; i <= number; i++){
for(j = i + 1; j <= number; j++){
printf(" ");
}
for(j = 1; j <= 2 * i - 1; j++){
printf("*");
}
printf("\n");
}
/* the lower hakf : small isosceles triangle */
for(i = number -1; i >= 1; i--){
for(j = number; j > i; j--){
printf(" ");
}
for(j = 1; j <= 2 * i - 1; j++){
printf("*");
}
printf("\n");
}
return 0;
}
<方法二>
#include <stdio.h>
int main(void) {
int a; // size of diamond
int b, c, d, e, f;
scanf("%d", &a);
f = (a+1)/2;
for (b = 1; b <= f; b++) {
for (d = f - b ; d > 0; d--) { printf(" "); }
for (e = 1; e<= 2 * b - 1; e++) { printf("*"); }
printf("\n"); }
for(b = f - 1; b > 0; b--) {
for(d = f - b; d > 0;d--) { printf(" "); }
for(e = 1; e <= 2 * b - 1; e++) { printf("*"); }
printf("\n"); }
}
補充:特殊菱形
*
* *
* * *
* *
*
#include <stdio.h>
int main(void) {
int i, j;
int number;
scanf("%d", &number);
for(i = 1; i <= number; i++){
for(j = number; j > i; j--)
printf(" ");
for(j = 1; j <= 2 * i - 1; j++){
if(j % 2 == 1) printf("*");
else printf(" ");
}
printf("\n");
}
for(i = number - 1; i >= 1; i--){
for(j = number; j > i; j--)
printf(" ");
for(j = 1; j <= 2 * i - 1; j++){
if(j % 2 == 1) printf("*");
else printf(" ");
}
printf("\n");
}
return 0;
}
以上CODE皆為自己想的內容,如有更好的方式歡迎告訴我~!