第14 、15教学周作业,实为第8、9周作业。
要求一:
完成14、15周的所有PTA中题目集。(一周两次pta作业,共四次。)
截图如下:
第14周PTA(1):
第14周PTA(2):
第15周PTA(1):
第15周PTA(2):
要求二:
题目1:判断上三角矩阵
1.实验代码
#include <stdio.h>
#define N 10
int main()
{
int a,n,i,j,k;
int b[N][N],sum=0;
scanf("%d",&a);
for(i=0;i<a;i++){
scanf("%d",&n);
sum=0;
for(j=0;j<n;j++){
for(k=0;k<n;k++){
scanf("%d",&b[j][k]);
if(j>k){
sum+=b[j][k];
}
}
}
if(sum==0){
printf("YES
");}
else
{
printf("NO
");}
}
return 0;
}
2. 设计思路
(1)题目算法
第一步:定义N为10;
第二步:把矩阵的个数a,矩阵的行与列n(本题行与列是相等的),计数行的j,计数列的k,下三角的和sum,形成矩阵数字的数组b[N][N]均设为整形变量;
第三步:输入矩阵的个数a,写for循环语句,来从第一个矩阵,第二个矩阵......进行循环;
第四步:写循环语句,构成矩阵;
第五步:判断j>k?(行大于列说明是下三角),然后把下三角的数相加;
第六步:判断sum是否为零,如果为零,则输出YES,否则输出NO。
(2)流程图
3.本题调试过程碰到问题及解决办法
(1)本题在做对之前一直不知道如何判断为上三角矩阵,后来在询问室友后,知道如果把下三角的数加在一起仍等于零即可,这才有了思路。
(2)可是后来发现仍然做错,再次询问了室友后发现没在矩阵个数的那个循环语句里写sum=0。(写它的目的就是为了每到一个新的矩阵的时候,sum清零,开始重新计算),添加上即可。
错误截图:
小插曲:本人在做此道题的时候,多考虑了一个换行问题,认为测试最后一个矩阵的时候不换行,其余的情况下换行,后来发现这完全是多余的!
题目2: 冒泡法排序
1.实验代码
#include<stdio.h>
int main()
{
int n,k,i,j,t,a[100];
scanf("%d%d",&n,&k);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<k;i++){
for(j=0;j<n-1;j++)
if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<n;i++){
printf("%d",a[i]);
if(i!=n-1) printf(" ");
else printf("
");
}
}
2. 设计思路
(1)题目算法
第一步:定义扫描次数k,待排序的整数n,计数i和j,t为整形变量;
第二步:输入k,n;
第三步:比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止;
第四步:对前n-1个数进行第二趟冒泡排序,结果使次大的数安排在第n-1个元素位置,重复,共经n-1趟排序。
(2)流程图
3.本题调试过程碰到问题及解决办法
本体没遇到任何问题。
备注:写此题的原因是这道题老师反反复复的强调,所以应该重视。
题目3:fibonacci数列
1.实验代码
#include <stdio.h>
int main()
{
int a[12]={1,1};
int i;
for(i=2;i<12;i++){
a[i]=a[i-1]+a[i-2];}
for(i=0;i<12;i++){
printf("%6d",a[i]);
if((i+1)%3==0)
printf("
");
}
return 0;
}
2. 设计思路
(1)题目算法
第一步:设置一个有12个数的一维数组,并且数组中第一个、第二个数均为1,再设置i为整形用来计数;
第二步:写循环序列,当i从2到11时, a[i]=a[i-1]+a[i-2];(注意: fibonacci数列的含义是第一项第二项为一,以后的每项等于前两项之和)
第三步:再次循环(i从0到11),用来输出,注意题目要求使用%6d的格式输出;
第四步:根据题目要求(按每行打印3个数的格式输出),进行判断,如果(i+1)%3为0,则输出换行。
(2)流程图
3.本题调试过程碰到问题及解决办法
本题没有错误发生。
但是值得注意的是,本题在最后换行时,要i+1,原因是因为i从0开始计数,0%3也为0,如果从i=0开始算起,则在最开始的时候多换了一次行。
要求三:
(1)我的Git地址:https://git.coding.net/jsjyuyaosong/usth--work.c.git
(2)上传截图:
要求四:
个人总结
(1)①本周你学习了哪些内容?②收获了什么?
①这两周,我主要学习了一维数组,二维数组。
②收获了有关数组方面的知识点。知道定义一个数组时中括号里的数为数组的个数,但是在表示数组时,往往是从0开始,到总个数减一;二维数组第一个中括号是行数,第二个中括号是列数;知道上三角,下三角,对角线的表示方法;另外,会用数组来做题。
(2)①本周所学内容中你觉得哪些是难点?②有哪些知识点还不明白?
①我觉得根据数组来做题就是难点,有的时候可能思路跟不上,不过自己静下心来多琢磨琢磨就好了,无非就是多几个循环。②我的熟练能力不足,应该多加练习,另外看得出老师重点讲的冒泡和选择法排序,应加以练习。
要求五
作业互评
(1)杨志群:http://www.cnblogs.com/12138-/p/7955161.html
截图:
(2)杨雨鑫:http://www.cnblogs.com/yangyuxin/p/7928352.html
(3)姚舜禹:http://www.cnblogs.com/yaoshunyux/p/7965918.html
表格和折线图
①表格
②折线图