C語言l部落格作業03

  • 2020 年 11 月 8 日
  • 筆記

1.作業頭

這個作業屬於哪個課程 計科三班
這個作業要求在哪裡 掌握for循環
這個作業的目標 實現指定次數的程式設計
學號 20209023

1.PTA實驗作業
1.1
本題要求編寫程式,計算序列 2/1+3/2+5/3+8/5+… 的前N項之和。注意該序列從第2項起,每一項的分子是前一項分子與分母的和,分母是前一項的分子。
1.1.1 實驗程式碼截圖

1.1.2 數據處理
數據表達:用了x,count,它們都是整型變數。用了a,b,c,factor,sum,它們都是雙精度符點型變數。x的值通過輸入,其他的值通過賦值。
數據處理:通過for循環,sum=sum+factor;a=a+b;
1.1.3 PTA提交列表說明

Q1:一開始出現內部錯誤。
A1:通過多次提及解決。
1.2
本題要求編寫程式,計算平方根序列從1到N的和。
1.2.1 實驗程式碼截圖

1.2.2數據處理
數據表達:用了i,N,都是整型變數。用了s,是雙精度符點型變數。N的值通過輸入,其它變數通過賦值。
數據處理:通過for循環,數學函數。s=s+sqrt(i)
1.2.3 PTA提交列表說明

Q1:一開始格式輸入錯誤。
A1:通過提示反覆檢查最終解決。
1.3
據說汪星人的智商能達到人類 4 歲兒童的水平,更有些聰明汪會做加法計算。比如你在地上放兩堆小球,分別有 1 只球和 2 只球,聰明汪就會用「汪!汪!汪!」表示 1 加 2 的結果是 3。
本題要求你為電子寵物汪做一個模擬程式,根據電子眼識別出的兩堆小球的個數,計算出和,並且用汪星人的叫聲給出答案。
1.3.1實驗程式碼截圖

1.3.2數據處理
數據表達:用了整型變數i,A,B;A,B變數通過輸入值。
數據處理:通過for循環。
1.3.3 PTA提交列表說明

本題問題不大。

2.閱讀程式碼

include

include

include

include

include

include

include

define N 500005

typedef long long LL;
using namespace std;
int n ;
LL X[N] , Y[N] , Z[N];
char str[55];

LL cal(LL k)
{
LL sum = 0 , x;
for (int i = 1 ; i <= n; ++ i)
{
if (k < X[i]) continue;
x = min(k , Y[i]);
sum += (x – X[i]) / Z[i] + 1;
}
return sum;
}

void work()
{
n = 1;
X[n] = 0;
sscanf(str , “%I64d %I64d %I64d” , &X[n] , &Y[n] , &Z[n]);
if (!X[n]) return;
memset(str , 0 , sizeof(str));
while (gets(str) , *str)
++ n , sscanf(str , “%I64d %I64d %I64d” , &X[n] , &Y[n] , &Z[n]) , memset(str , 0 , sizeof(str));
LL l = 1 , r = 1LL << 33 , m;
while (l < r)
{
m = (l + r) >> 1;
if (cal(m) & 1)
r = m;
else l = m + 1;
}
if (l == 1LL << 33)
puts(“no corruption”);
else printf(“%I64d %I64d\n” , l , (cal(l) – cal(l – 1)));
}

int main()
{
while(gets(str))
work();
return 0;
}
其中包括許多函數,運用了條件語句,還有循環語句,和一些字元串的轉換。有很多可以學習的地方。

3.學習總結
3.1學習進度條

周 日期 第三周 1號-8號
這周所花時間 4小時
程式碼行 300行
學到知識點簡介 for循環
目前比較疑惑問題 PTA上錯誤有時在其他編程軟體上正確

3.2累積程式碼行和部落格字數

時間 部落格字數 程式碼行數
第一周 303 227
第二周 431 459
第三周 753 300

3.3學習感悟
本周學習比較艱難,不過經過努力,終於解決本周作業。c語言真的很難。