自测-1 打印沙漏 (20分)

自测-1 打印沙漏 (20分)_第1张图片
只要细心一步步来就可以做出来

#include 
#include 

int GetL(int num);
int main(){
    int num,i,j;
    char ch;
    scanf("%d %c",&num,&ch);
    int l = GetL(num); //上半部分有多高,包括中间的唯一一个。
    int fh = 2*l-1;    //第一行有几个符号
    int count=0; //记录出现了几个符号
    for(i=0;i<l;i++){   //打印上半部分,包括中间的一个
        for(j=0;j<i;j++){
            printf(" ");
        }
        for(j=0;j<fh-(2*i);j++){
            printf("%c",ch);
            count++;
        }
        printf("\n");
    }
    for(i=l-2;i>=0;i--){
        for(j=0;j<i;j++){
            printf(" ");
        }
        for(j=0;j<fh-(2*i);j++){
            printf("%c",ch);
            count++;
        }
        printf("\n");
    }
    printf("%d\n",num-count);
}
int GetL(int num){
    int count=2,sum=7;
    while(num>sum){
        sum = sum+2*(2*count+1);
        count++;
    }
    return count-1;
}

你可能感兴趣的:(PTA练习题)