编写程序,输入一个n(2<=n<=7)值,输出如右所示的菱形图形(n=5)。
注意:此代码在win32控制台运行,在不同的IDE环境下,有部分可能需要变更。
IDE工具:Visual Studio 2010
Z
Y X
W V
U T
S R
R Q
P O
N M
L
代码块:
方法一:(用双层循环控制结构)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, k, n;
char sign='Z';
printf("Please enter n: ");
scanf_s("%d", &n);
while(n<2||n>7){
printf("Error! Retry!\nPlease enter n: ");
scanf_s("%d", &n);
}
for(i=0; i<n; i++){
for(j=n-i-1; j>0; j--)
printf(" ");
printf("%c", sign--);
if(i){
for(k=0; k<2*i-1; k++)
printf(" ");
printf("%c", sign--);
}
printf("\n");
}
for(i=n-1; i>0; i--){
for(j=0; j<n-i; j++)
printf(" ");
printf("%c", sign--);
if(i!=1){
for(k=0; k<2*i-3; k++)
printf(" ");
printf("%c", sign--);
}
printf("\n");
}
system("pause");
return 0;
}
方法二:(用函数结构设计)
#include <stdio.h>
#include <stdlib.h>
void inputNum(int *num);
void outputGraphic(int *num);
int main()
{
int *num=(int*)malloc(sizeof(int));
inputNum(num);
outputGraphic(num);
free(num);
system("pause");
return 0;
}
void inputNum(int *num){
printf("Please enter n: ");
scanf_s("%d", num);
while(*num<2||*num>7){
printf("Error! Retry!\nPlease enter n: ");
scanf_s("%d", num);
}
}
void outputGraphic(int *num){
int i, j, k;
char sign='Z';
for(i=0; i<*num; i++){
for(j=*num-i-1; j>0; j--)
printf(" ");
printf("%c", sign--);
if(i){
for(k=0; k<2*i-1; k++)
printf(" ");
printf("%c", sign--);
}
printf("\n");
}
for(i=*num-1; i>0; i--){
for(j=0; j<*num-i; j++)
printf(" ");
printf("%c", sign--);
if(i!=1){
for(k=0; k<2*i-3; k++)
printf(" ");
printf("%c", sign--);
}
printf("\n");
}
}
方法三:(极简写法)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, k, n, sign='Z';
printf("Please enter n: ");
scanf_s("%d", &n);
while(n<2||n>7){
printf("Error! Retry!\nPlease enter n: ");
scanf_s("%d", &n);
}
for(i=0; i<n; printf("\n"), i++){
for(j=n-i-1; j>0; printf(" "), j--);
printf("%c", sign--);
if(i==0) continue;
for(k=0; k<2*i-1; printf(" "), k++);
printf("%c", sign--);
}
for(i=n-1; i>0; printf("\n"), i--){
for(j=0; j<n-i; printf(" "), j++);
printf("%c", sign--);
if(i==1) continue;
for(k=0; k<2*i-3; printf(" "), k++);
printf("%c", sign--);
}
system("pause");
return 0;
}