第三周基础作业
基础作业
本周没上课,但是请大家不要忘记学习。
本周请大家完成上周挑战作业的第一部分:给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组的和。
例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子数组为[3, 10, -4, 7, 2]
输入:
请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
输出
在不删除原有文件内容的情况下,将最大子数组以及子数组的和写入文件。
1.实验代码
include <stdio.h>
define MAX(x,y) x>y?x:y
int main( )
{
int arr[ ] = {1,-2,3,10,-4,7,2,-5};
int n = 8 ; //数组的长度
int sum = 0 , max = 0 ;
for (int i = 0 ; i < n ; i ++ )
{
sum+=arr[i] ;
max = MAX(sum,max) ;
if ( sum < 0 ) sum = 0 ;
}
printf("%d\n",max);
}
2.流程图
3.遇到的问题
1.对于“fscanf()”和“fprintf()”的用法有点陌生1.
解决方法:翻看资料,知道了"fscanf()"的功能是把磁盘文件数据读出保存到变量(内存),而“fprintf()”的功能是将数据和字符等写入文件
2:不怎么会判断最大子数组
解决方法:自己编写了很久之后,看了其他同学的博客,然后对比修改
4.运行截图
5.学习进度条