第三周作业

判断上三角矩阵(15 分) 上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。
代码:

include<stdio.h>

int main()
{
int T;
scanf("%d\n",&T);
int i,j,t,flag;
int a[10][10],Tab[100];
for(t=1;t<=T;t++){
flag=1;
scanf("%d\n",&Tab[t]);
for(i=0;i<Tab[t];i++)
{
for(j=0;j<Tab[t];j++)
{
scanf("%d",&a[i][j]);
if(i>j)
{
if(a[i][j]!=0)
{
flag=0;
}
}
}
}
if(flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
问题:
开始也搞不懂为什么数组a后面要两个【10】,还有scanf里面数组a是【i】与【j】一起取地址。
后来听说是跟直角坐标轴一样,数组里面取值取两个,每个都可以从十个中取一个,所以要两个数组。
设计思路:
结果:

基础作业
:给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组的和。
例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子数组为[3, 10, -4, 7, 2]
输入:
请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
输出
在不删除原有文件内容的情况下,将最大子数组以及子数组的和写入文件。
代码:

include<stdio.h>

include<stdlib.h>

int main(void)
{
FILE*fp;
if((fp=fopen("E:\新建文件夹\wuao","a+"))NULL)
{
printf("File open error!\n");
exit (0);
}
int sum=0;
int maxsum=0;
int i,m=1;
int *a=new int[m];
cout <<"请输入数组个数\n";
cin>>m;
cout<<"输入一个整数数组,包含正负数\n";
for (i=0;i<m;i++)
{
cin>>a[i];
}
for(i=0;i<m;i++)
{
sum+=a[i];
if(sim<0)
{
sum=0;
}
if(sum>maxsum)
{
maxsum=sum;
}
}
if(maxsum
0)
{
maxsum=a[0];
for(i=1;i<m;i++)
{
if(a[i]>maxsum)
{
maxsum=a[i];
}
}
}
cout<<"最大和="<<maxsum;
}
设计思路:

问题:一开始不知道做,网上搜了搜,这种方法第一次见,但是也还是能看懂的,cout《那个差不多跟printf差不多,所以用了这种方式,相比博客上面同学写的,这个我能看懂大部分。

posted @ 2019-03-15 21:28  伴生  阅读(267)  评论(1编辑  收藏  举报