久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

藍(lán)橋杯

 天上白玉宮 2017-01-13
格子中輸出

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]。 
  * 修飾符在printf中的含義完全不同,。如果寫成printf(“%6d”, 123),,很多童鞋應(yīng)該就不會陌生了,這是設(shè)置域?qū)挼囊馑?。同理?6s也是域?qū)挕? 修飾符正是用來更靈活的控制域?qū)?。使?*s,,表示這里的具體域?qū)捴涤珊竺娴膶?shí)參決定,,如printf(“%*s”, 6, “abc”)就是把”abc”放到在域?qū)挒?的空間中右對齊。 
  明白了 * 是用變量來控制域?qū)?,那么這題就簡單了,,這里應(yīng)該填寫5個(gè)實(shí)參。然后字符長度的計(jì)算應(yīng)該用buf而不是s,,因?yàn)閎uf才是截?cái)嗪蟮拈L度,,用s的話,如果s長度超過了width-2,,效果就不對了,。

代碼:

  1. <span style="font-size:18px;">#include <stdio.h>  
  2. #include <string.h>  
  3. void StringInGrid(int width, int height, const char* s)  
  4. {  
  5.     int i,k;  
  6.     char buf[1000];  
  7.     strcpy(buf, s);  
  8.     if(strlen(s)>width-2) buf[width-2]=0;      
  9.     printf("+");  
  10.     for(i=0;i<width-2;i++) printf("-");  
  11.     printf("+\n");    
  12.     for(k=1; k<(height-1)/2;k++){  
  13.         printf("|");  
  14.         for(i=0;i<width-2;i++) printf(" ");  
  15.         printf("|\n");  
  16.     }  
  17.     printf("|");      
  18.     printf("%*s%s%*s", (width-strlen(buf)-2)/2,"",buf, (width-strlen(buf)-2)/2, "");  //填空              
  19.     printf("|\n");    
  20.     for(k=(height-1)/2+1; k<height-1; k++){  
  21.         printf("|");  
  22.         for(i=0;i<width-2;i++) printf(" ");  
  23.         printf("|\n");  
  24.     }         
  25.     printf("+");  
  26.     for(i=0;i<width-2;i++) printf("-");  
  27.     printf("+\n");    
  28. }  
  29.   
  30. int main()  
  31. {  
  32.     StringInGrid(20,6,"abcd1234");  
  33.     return 0;  
  34. }</span>  


    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約