打印沙漏 C语言

it2023-12-03  75

打印沙漏 C语言

先列出完整程序

#include<stdio.h> int main(){ int N,num=1,i=1,j=1,sum; char n; scanf("%d %c",&N,&n); while(i<=N){ j+=2; i+=j*2; num+=2; } i-=j*2; //计算组成沙漏的最大个数 num-=2; //计算沙漏行数 sum=N-i;//计算剩余数 //上半部分 for(j=0;j<num/2+1;j++){ for(i=0;i<j;i++){ printf(" "); } for(i=0;i<num-j*2;i++){ printf("%c",n); } printf("\n"); } //下半部分 for(j=1;j<=num/2;j++){ for(i=1;i<=num/2-j;i++){ printf(" "); } for(i=1;i<=j*2+1;i++){ printf("%c",n); } printf("\n"); } printf("%d\n",sum);//输出剩余数 return 0; }

结果展示:

1.先计算组成沙漏所需的最大个数,行数,以及剩余的符号数

scanf("%d %c",&N,&n); while(i<=N){ j+=2; i+=j*2; num+=2; } i-=j*2; //计算组成沙漏的最大个数 num-=2; //计算沙漏行数 sum=N-i;//计算剩余数

2.将沙漏分为上下两部分,上部分为倒三角,下部分为基层部分

//上半部分 for(j=0;j<num/2+1;j++){ for(i=0;i<j;i++){ printf(" "); } for(i=0;i<num-j*2;i++){ printf("%c",n); } printf("\n"); }

倒三角部分:

//下半部分 for(j=1;j<=num/2;j++){ for(i=1;i<=num/2-j;i++){ printf(" "); } for(i=1;i<=j*2+1;i++){ printf("%c",n); } printf("\n"); }

基层部分:

最新回复(0)