第十二週程式設計總結--助教
阿新 • • 發佈:2018-11-29
題目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)執行結果截圖
(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)執行結果截圖