zoukankan      html  css  js  c++  java
  • 征战蓝桥 —— 2015年第六届 —— C/C++A组第4题——格子中输出

    格子中输出

    StringInGrid函数会在一个指定大小的格子中打印指定的字符串。
    要求字符串在水平、垂直两个方向上都居中。
    如果字符串太长,就截断。
    如果不能恰好居中,可以稍稍偏左或者偏上一点。

    下面的程序实现这个逻辑,请填写划线部分缺少的代码。

    #include <stdio.h>
    #include <string.h>
    
    void StringInGrid(int width, int height, const char* s)
    {
    	int i,k;
    	char buf[1000];
    	strcpy(buf, s);
    	if(strlen(s)>width-2) buf[width-2]=0;
    
    	printf("+");
    	for(i=0;i<width-2;i++) printf("-");
    	printf("+\n");
    
    	for(k=1; k<(height-1)/2;k++){
    		printf("|");
    		for(i=0;i<width-2;i++) printf(" ");
    		printf("|\n");
    	}
    
    	printf("|");
    
    	printf("%*s%s%*s",_____________________________________________);  //填空
    
    	printf("|\n");
    
    	for(k=(height-1)/2+1; k<height-1; k++){
    		printf("|");
    		for(i=0;i<width-2;i++) printf(" ");
    		printf("|\n");
    	}
    
    	printf("+");
    	for(i=0;i<width-2;i++) printf("-");
    	printf("+\n");
    }
    
    int main()
    {
    	StringInGrid(20,6,"abcd1234");
    	return 0;
    }
    

    对于题目中数据,应该输出:

    ()
    注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。

    代码

    #include <stdio.h>
    #include <string.h>
    
    void StringInGrid(int width, int height, const char* s)
    {
        int i,k;
        char buf[1000];
        strcpy(buf, s);
        if(strlen(s)>width-2) buf[width-2]=0;
    
        printf("+");
        for(i=0;i<width-2;i++) printf("-");
        printf("+\n");
    
        for(k=1; k<(height-1)/2;k++){
            printf("|");
            for(i=0;i<width-2;i++) printf(" ");
            printf("|\n");
        }
    
        printf("|");
    
    //    printf("%*s%s%*s",_____________________________________________);  //填空
        printf("%*s%s%*s",(width-strlen(buf)-2)/2,"",buf,(width-strlen(buf)-2)/2,"");  //填空
        printf("|\n");
    
        for(k=(height-1)/2+1; k<height-1; k++){
            printf("|");
            for(i=0;i<width-2;i++) printf(" ");
            printf("|\n");
        }
    
        printf("+");
        for(i=0;i<width-2;i++) printf("-");
        printf("+\n");
    }
    
    int main()
    {
    //    printf ("%*s \n",5, "1");
        StringInGrid(20,6,"abcd1234");
        return 0;
    }
    
  • 相关阅读:
    ffmpeg rtmp推流 视频转码
    java日志发展史 log4j slf4j log4j2 jul jcl 日志和各种桥接包的关系
    nginx stream 流转发,可以转发rtmp、mysql访问流,转发rtmp、jdbc请求
    java web http 转https 通过nginx代理访问
    linux 服务器磁盘挂载
    novnc 通过websockify代理 配置多点访问
    linux 文件服务 minio 安装部署配置
    AOP实现原理,手写aop
    java 泛型
    JAVA反射getGenericSuperclass()用法
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338968.html
Copyright © 2011-2022 走看看