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

第十二週程式設計總結--助教

題目1 跟奧巴馬一起畫方塊
(1)實驗程式碼
#include<stdio.h>
int main ()
{
 int n, i, j;
 char a;
 
 scanf("%d %c", &n, &a);
  
 for(i = 1;i <= n*0.5+0.5;i++)
 {
  for(j = 1;j <= n;j++)
  printf("%c",a);
  printf("\n");
 }
 return 0;
}
(2)設計思路
第一步:定義整型變數和字元變數
第二步:輸入並用for迴圈
第三步:輸出圖形
(3)本題除錯過程碰到問題及解決辦法
for迴圈的條件一開始錯了,看了下題目改正了。
(4)執行結果截圖

題目2 程式設計列印空心字元菱形
(1)實驗程式碼
#include<stdio.h>
int main ()
{
 int n, i, j, k;
 char a;  scanf("%c %d", &a, &n);
 n = (n + 1) / 2;
 
 for(i = 0;i < n;i++)//行數的輸出
 {
  for(j = 1;j < n-i;j++)
  printf(" ");//每個字元前輸出的空格
  
  printf("%c",a+i);
  
  for (j=0;j<2*i-1;j++)
  printf (" ");//菱形裡面的空格
  if(i)//if(a)代表i不等於0時滿足if條件,等價於if(i!=0)
  printf ("%c",a+i);
  
  printf ("\n");
 }
 for(i = n-1; i >0 ; i--)
 {
  for (j = 0; j < n-i; j++)
  printf(" ");
  
  printf("%c",a+i-1);
  for (j=0;j<2*i-3;j++)
  printf(" ");
  
  if (i-1!=0)
  printf ("%c",a+i-1);
  
  printf ("\n");
 }
 return 0;
 }
(2)設計思路
第一步:將菱形拆成上下兩部分
第二步:上半部分用三個for迴圈,每次字元加一
第三步:下半部分一樣,只是每次字元減一
第四步:輸出圖形
(3)本題除錯過程碰到問題及解決辦法
格式錯誤了一次,空格問題
(4)執行結果截圖

題目3 輸出三角形字元陣列
(1)實驗程式碼
#include <stdio.h>
int main()
{
    int n, i, j,count = 0;
    scanf("%d", &n);
   
    for (i = n; i > 0; i--) //輸出有多少行
    {
        for (j = 0; j < i; j++) //每行有多少個字元
       {
            printf("%c ", 'A' + count);
            count++;//每迴圈一次加一,用於字母的增加
        }
        printf("\n");
    }
    return 0;
}
(2)設計思路
第一步:定義輸入的變數
第二步:兩個for迴圈
第三步:字元增加
第四步:輸出圖形
(3)本題除錯過程碰到問題及解決辦法
沒什麼問題
(4)執行結果截圖

題目4 閱覽室
(1)實驗程式碼
#include<stdio.h>
#include<math.h>
#include<string.h>
int main ()
{
 int n, x, h, m;
 int sum=0,s=0;
 int  b[1001];
 char a;
 
 scanf("%d", &n);
 memset(b,-1,sizeof(b));
 
 while(n--)
 {
  while(1)
  {
   scanf("%d %c %d:%d", &x, &a, &h, &m);
   
   if(x==0)
   {
    memset(b,-1,sizeof(b));
    
    if(s!=0)
    printf("%d %.0f\n",s,(double)sum/s);
    
    else
    printf("0 0\n");
    
    sum = s = 0;//此處將sum和s清0
    break;
   }
   else
   {
    if(a=='S')
    b[x] = h * 60 + m;
    
    else if(a=='E'&&b[x]!=-1)
    {
     sum += h * 60 +m -b[x];
     s++;
     b[x]=-1;
    }
    
   }
  }
 }
 return 0;
}
(2)設計思路
第一步:定義函式
第二步:定義整型變數和字元變數,加陣列,用memset函式將陣列b[x]全變為-1
第三步:輸入要幾天的借書記錄,用與for迴圈的次數
第四步:輸入,用if判斷是否為0,為0輸出0 0,不為0繼續判斷為S還是E
第五步:將輸入為S的時間變為分鐘,當下一次的b[x]相等且b[x]不為-1時算出時間
第六步:輸出結果
(3)本題除錯過程碰到問題及解決辦法
sum和s沒有清0,結果錯誤
(4)執行結果截圖