格子中输出
本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(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)>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>