#include <stdio.h>
int main(int argc, const char * argv[]) {
int k;
scanf("%d",&k);
int arr[k];
for(int i = 0;i<k;i++){
scanf("%d",&arr[i]);
}
int sum=0,maxSum = 0;
for(int j = 0;j<k;j++){
sum += arr[j];
if(sum > maxSum){
maxSum = sum;
}else if(sum < 0){
sum = 0;
}
}
printf("%d\n",maxSum);
return 0;
}
pta上寫代碼送出後會出現ignoring return value of ‘scanf’, declared with attribute warn_unused_result的警告,
并不是錯誤,但是看起來不爽,
原因是scanf的傳回值沒有被使用造成的,因為傳回值為1時代表輸入成功,傳回值為0說明輸入錯誤,類型不比對,比如需要int類型但卻輸入了個字元串,是以可以根據傳回值結果添加錯誤提示,這樣就使用了scanf的傳回值,就不會報警告了
修改後的代碼如下:
#include <stdio.h>
int main() {
int k;
if(scanf("%d",&k) != 1){
printf("請輸入整數!");
}
int arr[k];
for(int i = 0;i<k;i++){
if(scanf("%d",&arr[i]) != 1){
printf("請輸入整數!");
}
}
int sum=0,maxSum = 0;
for(int j = 0;j<k;j++){
sum += arr[j];
if(sum > maxSum){
maxSum = sum;
}else if(sum < 0){
sum = 0;
}
}
printf("%d\n",maxSum);
return 0;
}