C 练习实例23
题目:打印出如下图案(菱形)。
* *** ***** ******* ***** *** *
程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
程序源代码:
实例
// Created by www.facesoho.com on 15/11/9.
// Copyright © 2015年 小鸟启蒙. All rights reserved.
//
#include <stdio.h>
int main()
{
int i,j,k;
for(i=0;i<=3;i++) {
for(j=0;j<=2-i;j++) {
printf(" ");
}
for(k=0;k<=2*i;k++) {
printf("*");
}
printf("\n");
}
for(i=0;i<=2;i++) {
for(j=0;j<=i;j++) {
printf(" ");
}
for(k=0;k<=4-2*i;k++) {
printf("*");
}
printf("\n");
}
}
以上实例输出结果为:
* *** ***** ******* ***** *** *

文人墨客
参考方法:
#include<stdio.h> int main(void) { int i,j,k; for(i = 0;i <= 3; i++) { for(j = 1;j <= 3 - i; j++) printf(" "); for(k = 1; k <= 2*i+1; k++) printf("*"); printf("\n"); } for(i = 1; i <= 3; i++) { for(j = 1; j <= i; j++) printf(" "); for(k = 1; k <= 7-2*i; k++) printf("*"); printf("\n"); } return 0; }文人墨客
参考方法:
#include<stdio.h> int main(void) { int i, j; int n; printf("我也不知道你要打印多大的图案:"); scanf("%d", &n); for (i = 0; i < 2*n+1; i++) { for (j = 0; j < 2*n+1; j++) { if (i+j >= n && i+j <= 3*n && j-i <= n && i-j <= n) { printf("*"); } else printf(" "); } putchar(10); } return 0; }文人墨客
参考方法:
#include<stdio.h> int main() { int s[7][7]={ {0,0,0,1,0,0,0}, {0,0,1,1,1,0,0}, {0,1,1,1,1,1,0}, {1,1,1,1,1,1,1}, {0,1,1,1,1,1,0}, {0,0,1,1,1,0,0}, {0,0,0,1,0,0,0}, }; int i,j; for(i=0;i<7;i++) { for(j=0;j<7;j++) { if(s[i][j]==1) printf("*"); else printf(" "); } printf("\n"); } return 0; }文人墨客
参考方法:
#include <stdio.h> #define MAX 10 int main() { int i, j; int ctl = 0; if(MAX % 2 != 0) ctl = MAX + 1; else ctl = MAX; for(i = 1; i <= MAX; i++) { for(j = 1; j <= MAX; j++) { if(i <= ctl/2) { if(j > ctl/2 - i && j < ctl/2 + i) printf("*"); else printf(" "); } else { if(j > i - ctl/2 && j < ctl/2 + ctl - i) printf("*"); else printf(" "); } } printf("\n"); } return 0; }文人墨客
参考方法:
#include <stdio.h> int main() { int i=1,j; for(j=5;j>1;j--) { while(i<j) { printf(" "); i++; } int k=1; while(k<10-2*j) { printf("*"); k++; } while(i>0) { printf(" "); i--; } printf("\n"); } for(j=1;j<5;j++) { while(i<j) { printf(" "); i++; } int k=1; while(k<10-2*j) { printf("*"); k++; } while(i>0) { printf(" "); i--; } printf("\n"); } return 0; }文人墨客
参考方法:
#include <stdio.h> int main() { int i,j,k,stars,spaces; for(i=1;i<8;i++) { if(i<5) { stars=i*2-1; spaces=4-i; }else{ stars=7-(i-4)*2; spaces=i-4; } for(k=1;k<=spaces;k++) { printf(" "); } for(k=1;k<=stars;k++) { printf("*"); } printf("\n"); } return 0; }文人墨客
参考解法:
#include <stdio.h> int main() { int i, j, space_num = 3, start_num = 1; for ( i = 1; i <= 7; i++ ) { for ( j = space_num; j > 0; j-- ) printf( " " ); for ( j = start_num; j > 0; j-- ) printf( "*" ); if ( i > 7 / 2 ) { space_num++; start_num -= 2; } else { space_num--; start_num += 2; } printf( "\n" ); } return(0); }