编程题
                格子中输出

题目描述

本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。

StringInGrid函数会在一个指定大小的格子中打印指定的字符串。

要求字符串在水平、垂直两个方向上都居中。

如果字符串太长,就截断。

如果不能恰好居中,可以稍稍偏左或者偏上一点。

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

源代码

C

#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)&gt;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("%*s%s%*s",__________________);="" k<height-1;="" k++){="" printf("+");="" int="" main()="" {="" stringingrid(10,4,"abcd123");="" return="" 0;="" ```="" **java**="" ```java="" import="" java.util.*;="" public="" class="" main="" static="" void="" stringingrid(int="" width,="" height,="" string="" s)="" if(s.length()="">width-2) s = s.substring(0,width-2);
		System.out.print("+");
		for(int i=0;i<width-2;i++) system.out.print("-");="" system.out.println("+");="" for(int="" k="1;" k<(height-1)="" 2;k++){="" system.out.print("|");="" i="0;i<width-2;i++)" system.out.print(".");="" system.out.println("|");="" }="" string="" ff="__________________;" system.out.print(string.format(ff,"",s,""));="" k<height-1;="" k++){="" system.out.print("+");="" public="" static="" void="" main(string[]="" args)="" {="" stringingrid(10,4,"abcd123");="" ```="" <="" div="">
                <div class="option-val">
                    
                </div>

                <div>
                    
                </div>

                <div>
                    
                            <a href="/dist/#/topic?gid=28078ef46caa11eebf1234e6adfb30ff" class="answer-but">查看答案</a>
                    
                </div>

            </width-2;i++)></width-2;i++)></string.h></stdio.h>