####基础做业 给定一个整数数组(包含正负数),找到一个具备最大和的子数组,返回其最大的子数组的和。 例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子数组为[3, 10, -4, 7, 2] ##输入: 请创建以本身英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。 ##输出: 在不删除原有文件内容的状况下,将最大子数组以及子数组的和写入文件。 ####1).实验代码数组
#include<stdio.h> #include<stdlib.h> int main(void) { FILE*fp; int i=0,x=0,y=0,n=0,sum2=0,sum3=0,h=0,l=0; int a[10]; if((fp=fopen("D:\\helei.txt","a+"))==NULL){ printf("File open error!\n"); exit(0); } fscanf(fp,"%d\n",&n); printf("%d\n",n); for(i=0;i<n;i++){ fscanf(fp,"%d,",&a[i]); printf("%d,",a[i]); sum3=a[0]-1; } for(x=0;x<n;x++){ sum2=0; for(y=x;y<n;y++){ sum2=sum2+a[y]; if(sum2>sum3){ h=x; l=y; sum3=sum2; } } } printf("\n"); fprintf(fp,"\n"); for(h;h<=l;h++){ printf("%d,",a[h]); fprintf(fp,"%d,",a[h]); } printf("\n%d",sum3); fprintf(fp,"\n%d",sum3); if(fclose(fp)){ printf("Can not close the file!\n"); exit(0); } return 0; }
####2).设计思路 学习
####3).本题调试过程碰到的问题以及解决办法 从运行结果能够看出程序没有计算全部可能的子数组的和,仔细检查代码发现第18行for(x=0;x<n-x;x++){和第二十行for(y=x;y<n-x;y++){中的n-x应为n,当时不知道怎么想的加了个-x,致使浪费了不少时间在检查代码上,修改后正确。 ####4).运行结果截图
####预习做业 ####7-1 判断上三角矩阵 (15 分) 上三角矩阵指主对角线如下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。 本题要求编写程序,判断一个给定的方阵是否上三角矩阵。 ##输入格式: 输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每一个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。 ##输出格式: 每一个矩阵的判断结果占一行。若是输入的矩阵是上三角矩阵,输出“YES”,不然输出“NO”。 ##输入样例: 2 3 1 2 3 0 4 5 0 0 6 2 1 0 -8 2 ##输出样例: YES NO ####1).实验代码设计
#include<stdio.h> int main() { int T=0,i=0,n=0,h=0,l=0,x=0; int a[10][10],b[10]; scanf("%d",&T); for(i=0;i<T;i++){ scanf("%d",&n); for(h=0;h<n;h++){ for(l=0;l<n;l++){ scanf("%d",&a[h][l]); if(l<h&&a[h][l]!=0){ b[x]=1; } } } x++; } for(x=0;x<T;x++){ if(b[x]==1){ printf("NO\n"); } else{ printf("YES\n"); } } return 0; }
####2).设计思路 调试
####3).本题调试过程碰到的问题以及解决办法 本题没有问题。 ####4).运行结果截图
###2、学习进度条 |周/日期|这周所花的时间|代码行|学到的知识点简介|目前比较迷惑的问题| |:-:|:-:|:-:|:-:|:-:| |3/2-3/8|2h|23行|数组|无 |3/9-3/11|3h|29行|读取文件数据|无 |3/12-3/18|5h|70行|用数组输出矩阵|无 ###3、学习感悟 这周学习了新的C语言知识,还算简单,有时间能够挑战一下难题,另外就是写代码的时候必定要思路清晰,认真仔细,避免出现没必要要的错误。code