格子中輸出 StringInGrid函數(shù)會在一個(gè)指定大小的格子中打印指定的字符串。 要求字符串在水平,、垂直兩個(gè)方向上都居中,。 如果字符串太長,就截?cái)唷?br> 如果不能恰好居中,,可以稍稍偏左或者偏上一點(diǎn),。 下面的程序?qū)崿F(xiàn)這個(gè)邏輯,,請?zhí)顚憚澗€部分缺少的代碼。 #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; } 對于題目中數(shù)據(jù),,應(yīng)該輸出: +------------------+ | | | abcd1234 | | | | | +------------------+ (如果出現(xiàn)對齊問題,,參看【圖1.jpg】)
注意:只填寫缺少的內(nèi)容,不要書寫任何題面已有代碼或說明性文字,。
題解思路: 有些童鞋可能知道scanf里用*修飾符,,是起到過濾讀入的作用。比如一個(gè)有三列數(shù)值的數(shù)據(jù),,我只想得到第2列數(shù)值,,可以在循環(huán)里用scanf(“%*d%d%*d”, a[i])來讀入第i行的第2個(gè)數(shù)值到a[i]。 代碼:
|
|