1. 程式人生 > >第十二週程式設計總結

第十二週程式設計總結

 
7-1 程式設計列印空心字元菱形 (10 分)

本題目要求讀入菱形起始字母和菱形的高度,然後輸出空心字元菱形。所謂“空心菱形”是指:每行由兩端為字母、中間為空格的字串構成,每行的字串中心對齊;上半部分相鄰兩行字串長度差2,且字母從給定的起始字母逐一遞增;下半部分與上半部分對稱。

1).實驗程式碼

#include<stdio.h>

int main()

{

int n,i,j,x;

 

char ch;

 

scanf("%c %d",&ch,&n);

 

x=n/2+1;

 

if(2<=n<10&&n%2!=0&&'A'<=ch<='G'){

 

for(i=1;i<=x;i++){

 

for(j=1;j<=n+1;j++){

 

if(j==x+1-i||j==x-1+i) printf("%c",ch);

 

else {

 

if(j==x+i){

 

printf("\n");

break;

}

else printf(" ");

 

}

 

}

 

ch++;

 

}

 

ch-=2;

 

for(i=x-1;i>0;i--){

 

for(j=1;j<=n+1;j++){

 

if(j==x-i+1||j==x-1+i) printf("%c",ch);

 

else{

 

if(j==x+i){

printf("\n");

break;

}

 

else printf(" ");

 

}

 

}

 

ch--;

 

}

 

}

return 0;

}2). 設計思路

第一步:定義變數

第二步:輸入變數

第三步:呼叫for語句,進行列印菱形的上下兩部分

第四步:呼叫if語句判斷列印字元的位置

第五步:在其餘的位置列印空格,在行末列印回車

 

3).本題除錯過程碰到的問題及解決方法

            

 

-

 

 

 

        問題:在行末沒有直接列印回車,而是留有空格

       解決方法:呼叫if判斷行末位置,再列印回車

 

       4).執行結果截圖

  

      

 

7-2 跟奧巴馬一起畫方塊 (15 分)

美國總統奧巴馬不僅呼籲所有人都學習程式設計,甚至以身作則編寫程式碼,成為美國曆史上首位編寫計算機程式碼的總統。2014年底,為慶祝“電腦科學教育周”正式啟動,奧巴馬編寫了很簡單的計算機程式碼:在螢幕上畫一個正方形。現在你也跟他一起畫吧!

1)實驗程式碼

 

#include<stdio.h>

int main()

{

  int n,x,i,j;

  char c;

  scanf("%d %c",&n,&c);

  x=n*0.5+0.5;

  for(i=1;i<=x;i++){

    for(j=1;j<=n;j++){

        printf("%c",c);

  }

  printf("\n");

  }

  return 0;

}

2).設計思路

第一步:定義變數

第二步:呼叫for語句進行行和列的列印

第三步:輸出答案

3) .本題除錯過程碰到的問題及解決方法

           

               

 

 

          問題:沒有進行四捨五入

          解決方法:將列的值進行四捨五入的賦值

       4).執行結果截圖

 

 

 

 

7-3 輸出三角形字元陣列 (15 分)

本題要求編寫程式,輸出n行由大寫字母A開始構成的三角形字元陣列。

1).實驗程式碼

#include<stdio.h>

int main()

{

  int n,i,j;

  char c;

  c='A';

  scanf("%d",&n);

  for(j=1;j<=n;j++){

     for(i=j;i<=n;i++){

       printf("%c ",c);

       c++;

     }

     printf("\n");

   }

  return 0;

}2).設計思路

第一步:定義變數

第二步:呼叫for語句進行行和列的列印

第三步:進行字元的遞增

3).本題除錯過程碰到的問題及解決方法

 

 

 

 

 

問題:沒有進行字元的遞增

解決方法:沒列印一個字元就將字元加一

4).執行結果截圖

         

 

7-4 閱覽室 (20 分)

天梯圖書閱覽室請你編寫一個簡單的圖書借閱統計程式。當讀者借書時,管理員輸入書號並按下S鍵,程式開始計時;當讀者還書時,管理員輸入書號並按下E鍵,程式結束計時。書號為不超過1000的正整數。當管理員將0作為書號輸入時,表示一天工作結束,你的程式應輸出當天的讀者借書次數和平均閱讀時間。

注意:由於線路偶爾會有故障,可能出現不完整的紀錄,即只有S沒有E,或者只有E沒有S的紀錄,系統應能自動忽略這種無效紀錄。另外,題目保證書號是書的唯一標識,同一本書在任何時間區間內只可能被一位讀者借閱。

2).實驗程式碼

#include<stdio.h>

int main()

{

int n,i;

scanf("%d\n",&n);

 

for(i=1;i<=n;i++){

 

double sum=0;

int k,h,m,a[1000]={0},s1[1000]={0},s2[1000]={0},num=0;

char ch;

 

scanf("%d %c %d:%d\n",&k,&ch,&h,&m);

 

while(k){

 

if(ch=='S'){

 

a[k]=1;

 

s1[k]=h*60+m;

 

 

}

else if(a[k]==1){

 

s2[k]=h*60+m;

 

sum+=s2[k]-s1[k];

 

num++;

 

a[k]=0;

 

}

 

scanf("%d %c %d:%d\n",&k,&ch,&h,&m);

 

}

 

if(num){

 

sum=sum/num;

 

}

 

printf("%d %d\n",num,(int)(sum+0.5));

 

}

 

return 0;

 

}2). 設計思路

第一步:定義變數

第二步:輸入變數

第三步:呼叫while語句進行迴圈判斷

第四步:判斷字元計算借書的時間

第五步: 判斷記錄是否完整

第六步:計算還書的時間,計算借書的時長

第六步:每次迴圈計數,得到借書的次數,計算平均閱讀時間

第七步:輸出答案

 

3).本題除錯過程碰到的問題及解決方法

 

        問題:變數沒有進行初始化

       解決方法:將變數初始化

       4).執行結果截圖