第十四,十五周作业
2017-12-03 15:40 孙佳钰 阅读(531) 评论(7) 编辑 收藏 举报要求二
题目:14周PTA作业-1
7-4 fibonacci数列
1.实验代码
#include<stdio.h>
int main(){
int m,a[12]={1,1};
for(m=2;m<=12;m++)
a[m]=a[m-1]+a[m-2];
for(m=0;m<=12;m++){
printf("%6d",a[m]);
if((m+1)%3==0)
printf("\n");}
return 0;
}
2.设计思路
(1)主要题目算法
第一步:先定义一个数值为十二的数组,给出前两个数的数值。
第二步:用for循环,按照前两个数相加得第三个数计算出后面的数值
第三步:在for循环里,m应从2开始循环
第四步:输出最后一个数字后,换行,m+1等于数组的个数,进行除3取余。
(2)流程图
3.本题调试过程中遇到的问题及解决方法。
错误截图
遇到的问题及解决办法:
所有数字都是换行后进行的,然后题目要求三组数一行,我再用if循环if((m+1)%3==0来实现三组一换行
4.pta截图
题目:14周PTA作业-2 7-4 交换最小值和最大值
1.实验代码
#include<stdio.h>
int main(){
int b,c,i,n,x,m;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
b=a[0];
c=a[0];
for(i=1;i<n;i++){
if(a[i]<c){
c=a[i];
x=i;
}
}
if(x!=0){
m=a[0];
a[0]=a[x];
a[x]=m;}
for(i=1;i<n;i++){
if(a[i]>b){
b=a[i];
x=i;
}
}
if(x!=n-1){
m=a[n-1];
a[n-1]=a[x];
a[x]=m;
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
2.设计思路
(1)主要题目算法
第一步:定义变量及数组a[n]
第二步:利用for循环输入所有的数组值,假设第一个数组值为最小的,利用for循环将所有的数组与第一个数比较,找到数组中的最小值,进行交换,重复操作
第三步:若最大值以及最小值不是最大或最小,那再次进行循环
第四步:利用for循环输出所有的数组。
(2)流程图:
3.本题调试过程中遇到的问题及解决方法。
遇到的问题及解决办法:不能理解如何操作,就询问同学,并询问参照她的仿写 并询问了原因及如何思考如何调换位置:利用for循环输入所有数组值假设第一个值为最小的,则进行所有数组与第一个值比较,找到最小值进行交换,并进行下标的交换。若最小的值不是第一个,则定义一个替换的变量将其换到相应的位置。
4.pta截图:
题目:7-2 方阵左下三角元素的和
1.实验代码
#include<stdio.h>
int main(){
int i,j;
int sum=0;
int a[4][4];
for(i=0;i<4;i++){
for(j=0;j<4;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<4;i++){
for(j=0;j<=i;j++){
sum+=a[i][j];
}
}
printf("%d",sum);
return 0;
}
2.设计思路
(1)主要题目算法
第一步:定义规定的方阵的行列,写出要加和的数组
第二步:利用for循环将数组进行赋值
第三步:再利用for的双层循环列出所有要加和的数,进行累加,即:sum+=a[i][j]
第四步:输出应求结果
(2)流程图
3.本题调试过程中遇到的问题及解决方法
错误截图
遇到的问题及解决办法:可正常运行,但是输出的结果不对,反复操作并询问同学,得知加和表示为:sum+=a[i][j];并非为sum=a[i][j]
4.pta截图
由于本题为Devc++操作,所以在pta中为正确
题目:7-3 求整数序列中出现次数最多的数
1.实验代码
#include<stdio.h>
int main()
{
int i,k,n,N=1000;
scanf("%d",&n);
int a[N],b[N];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++){
for(k=0;k<n;k++){
if(a[i]==a[k])
b[i]=b[i]+1;
}
}
int t;
for(i=0;i<n;i++){
if(t<b[i]){
t=b[i];
k=i;
}
}
printf("%d %d",a[k],t);
return 0;
}
2.设计思路
(1)主要题目算法
第一步:定义出所需的变量及数组
第二步:利用for循环输入n的所有的数组值
第三步:再利用for的双层循环找出相等的数组,同时实现个数的累加
第四步:如果t<相同数组的个数;就让t=b[i],同时进行下标的转换
第五步:利用for循环排除所有的这种情况
第六步:最后输出整数序列中出现次数最多的数
(2)流程图
3.本题调试过程中遇到的问题及解决方法。
错误截图
遇到的问题及解决办法:
输出结果完全不对,发现在a[i]a[k]时,又将其写成a[i]a[k],这个定义已经错过很多遍了,并且在if条件里将条件t<b[i],错写成了t>b[i]
4.pta截图
要求三
git地址:https://git.coding.net/Iams/homework.git
coding截图:
要求四
个人总结
(1)本周学习内容和收获:数组,冒泡法排序以及选择排序
数组名是一个地址常量,存放数组内存空间的首地址。
先定义,后使用
只能引用单个的数组元素,不能一次引用整个数组
数组元素:数组名[下标] 下标:整型表达式 下标取值范围:[0,数组长度-1]
定义数组 类型名 数组名[数组长度]
引用数组元素 数组名[下标]
一维数组的引用
编译器和运行环境都不会检查数组下标是否越界,无论是对数组单元做读还是写• 一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃
(2)本周所学内容中那些是难点:数组的引用,选择排序以及冒泡排序,有的时候就是看着老师的PPT听同学讲可能理解都有问题,只能自己慢慢琢磨,利用课余时间多看
要求五
- 我评价的作业:
孙 娜:www.cnblogs.com/sun-na-/p/7875394.html
截图:
孙美玲:www.cnblogs.com/sunmeiling/p/7911642.html
截图:
马宇欣:www.cnblogs.com/mayuxin/p/7900356.html
截图:
- 表格及折线图
表格:
折线图: