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語言真的很難。