一、PTA实验作业

题目1:7-5 数组循环左移

1. 本题PTA提交列表

2. 设计思路

定义俩个整数 n,m
定义循环变量i,j,x
定义变量k用来存放下标
定义变量number用于交换数值
定义整型数组a[100]
scanf("%d%d",&n,&m);输入m,n
i=0
当i<n时循环输入整数,i递增,并j将整数赋给数组a
x=1
x递增,只要满足x<=m{
k=0每次设置下标为0
j=n-1,j递减,只要满足j>0{
number=a[k];
a[k]=a[j];
a[j]=number;
实现原先排第一个的数与后一个交换,直到排到末尾
重复m次,得到左移后的数组
}
}
i=0
i递增,只要满足i<n{
依次输出a中数值
在输出最后一个数值前,每个数值后输出一个空格}

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

  • 1.如何实现左移

    想到了冒泡排序中交换的思想,通过循序实现第一个数调到最后一个数的位置,相当于后面的左移了一个

  • 2.解决1中问题后发现,运行结果变成了最后的数调前面去了,把循环条件由递增改为递减,结果就对了

  • 3.左移数大于一时发现输出数组乱的

    通过多组数据运行结果发现,是因为进入下一次循环后,下一次要后调的数下标是0,而不是误认为的m-1,所以每次循环要将0赋给下标

题目2:7-7 找鞍点

1. 本题PTA提交列表

2. 设计思路

定义变量 n,i,j,p,q,k;
输入n
定义数组a[6][6]
i定义flag并赋初值0
i=0
i递增,只要满足i<n{
j=0
j递增只要满足j<n{
输入数值并赋给数组
}
}
i=0
i递增,只要满足i<n{
p=0;
j=0
j递增,只要j<n{
满足a[i][p]<=a[i][j]时
下标重新赋值p=j;
找到一行中最大值对应的下标
}
}
q=0;
k=0
k递增,只要k<n {
当(a[k][p]<=a[q][p])
下标重新赋值q=k;
找到该列中最小值的角标
如果i==q即为鞍点
flag递增
输出最大鞍点的下标
}
如果flag==0
输出NONE

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

没有考虑到俩个或者多个鞍点的情况

增加了a[i][p]<=a[i][j]和a[k][p]==a[q][p]的判断

题目3:7-6 阅览室

1. 本题PTA提交列表

2. 设计思路

定义变量 n,i,number,hh,mm,number表示书序号,hh表示小时,mm表示分钟
char op定义字符型变量op来存放E,S,0
输入n
i=0
i递增,满足i<n{
定义sum,并赋初值0
定义count,并赋初值0
定义数组 time[1001]
定义flag[1001]并赋初值0
while(scanf("%d %c%d:%d",&number,&op,&hh,&mm)){输入信息
如果number==0)退出循环
判断输入的字符op
如果为S{
将开始的时间转化成分钟 time[number-1]=hh*60+mm;
flag[number-1]=1表示该书被借
}
break;
如果为E{
如果该书被借{
flag[number-1]=0表示该书状态为空闲
count++记录借书次数
sum=sum+hh*60+mm-time[number-1]累加计算读书时间
}
}
break;
}
}
如果count==0即没有借书
输出0 0
否则输出借书次数count和平均借书时间sum*1.0/count

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

这一题主要就是思路的问题,考虑的东西多,用到好几个数组,还有如何用while循环输入信息,还有利用flag变量的值判断

二、截图本周题目集的PTA最后排名。

PTA排名

三、同学代码结对互评

1.互评同学名称 李梦冰

2.我的代码、互评同学代码截图

题目7-7 找鞍点

我的代码

梦冰代码

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

主要不同在判断出行最大后,继续找列最小这一段。我是找出行最大,列最小,如果下标正好相等,那就找到鞍点了。而梦冰是找到行最大后,继续判断该元素所在列,它是不是最小,如果是,则为鞍点。思路上细微的差别吧。但是一开始我的代码是有缺陷的,就是针对出现俩个鞍点的情况,没有判断俩元素相等的情况导致错误。另外由于我行和列比大小是分开的,设的变量名比较多,容易弄错。那梦冰同学的就比较简洁,思路清楚,可读性高

四、本周学习总结

1.你学会了什么?

(1)尾字符添加结束标志 line[k]=‘\0’,结束符\0可以控制循环

(2)如果对全部元素都赋了初值,就可以省略数组长度

(3)字符串的有效长度就是有效字符的个数,由有效字符+1个字符组成,数组的长度至少是字符串的有效长度+1

一维数组定义一般形式:类型名 数组名[数组长度]

1.1 C中如何存储字符串?

利用字符数组存放字符数据

1.2 字符串的结束标志是什么,为什么要结束标志?

‘\0’ 有了她字符数组的长度就显得不那么重要了,程序往往依靠检测'\0'的位置判断字符串是否结束,而不是字符数组长度,结束符可用来控制循环

1.3 字符串输入有哪几种方法?

(1)scanf("%s",str)

(2)gets(str)

1.4 数字字符怎么转整数,写个伪代码?

定义字符变量a

输入数字字符‘a’

假设转化为n进制整数

定义变量number用来存放十进制数,并赋初值0

numbe=number*n+‘a’-‘0’

1.5 16进制、二进制字符串如何转10进制?写伪代码?

定义并输入字符串

定义变量result,并赋初值result=0

char ch

当ch不是终止符\0时

result=result*10+ch-'0'

输出result

2.本周的内容,你还不会什么?

数组下标一开始还不大习惯从零开始,以及字符串的结束符判断老丢。这次的PTA题目集,用到很多排序,几种排序方式还是有点乱,比较习惯使用冒泡排序

错题:

阅读代码:代码前半部分是保证按从小到大的顺序输入,按%4d的格式输出

后半部分是利用二分查找法,如果找到输出是排第几位,如果没找到,输出没找到

所以答案:

pta题目集遇到多组输入还是不能很快想到用while实现

3.期中考试小结

3.1 你认为为什么没考好?

阅读代码能力不强,速度慢。手写代码的格式不标准,写的很乱。这都是平时太依靠编译器的缘故,离开编译器就不知道结果是对是错了。还有像改错这类题,对新题型太陌生了。另外就是基础知识不大牢固,导致丢分

3.2 罗列错题。

选择题:

将十六进制数(1EB)16转换为十进制的数是

A、272 B、273 C、427 D、491

E=14 B=11

011+1614+16161=491

错误原因:各种进制之间转换不熟,不会运算

填空题:

【6】char

【7】while内对输入的字符判断,所以是(ch=getchar())

【8】判断输入字符是否为字母:(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')

我少了括号。。。。。

改错题:

(1)n没赋初值,改为int n=1;

(2)变量类型为double,不是int,改%d为%lf

(3)计算公式错了,不是term=-termXX/(n+1)(n+2)而是term=-termXX/((n+1)(n+2));

(4)求和错误:改为sum=sum+term

(5)根据题目每次n递加2,所以改n++为n=n+2

编程题:

3.3 下半学期要怎么调整C的学习?

  • 1.课堂派上的预习作业代码先自己阅读,再用编译器验证答案
  • 2.尝试手写代码,用伪代码写思路也不错,像这次写的太乱了,框架都不怎么完整,这补一句,那补一句,更别说注意缩进什么的了
  • 3.进制转换和排序几种方法都挺重要的,还有函数的使用,多多学习

C语言作业--数组的更多相关文章

  1. day05<Java语言基础--数组>

    Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java ...

  2. 我的第三次C语言作业

    我的第三次C语言作业 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2 这个作业要求在哪里 https://edu.cnblogs.co ...

  3. 【算法】C语言实现数组的动态分配

    C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...

  4. C语言一维数组、二维数组、结构体的初始化

    C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...

  5. go语言的 数组、slice、map使用(转)

    golang群 点击加入 go语言的 数组.slice.map使用, 由于网上有很好的说明, 不需要再写了,请看这几篇: Go语言中的 Array, Slice和 Map 深入学习golang五篇,以 ...

  6. go语言 类型:数组

    在go语言中数组array是一组特定长度的有序的元素集合. go的数组类型由两部分组成——类型和长度,二者缺一不可.数组本来就是一块存储相同类型元素的连续内存空间,因此决定一个数组的类型,必然需要决定 ...

  7. C语言基础--数组及相关

    概念: 一堆相同类型的数据的有序集合 格式: 元素类型  数组名称[ 元素个数 ] 定义数组: // 定义了一个名称叫做scores的数组, 数组中可以存放3个int类型的数据 ]; // 只要定义一 ...

  8. 学习C语言的数组

    C语言的数组 数组声明的实例:int num[3];只要记下这个模板就好. 不建议使用变量定义数组,如果使用了变量定义数组,作为数组的元素的个数,不初始化的情况下是随机值,如果初始化会直接报错 注意: ...

  9. 对于C语言中数组名是指针的理解

    我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...

随机推荐

  1. CF#418 Div2 D. An overnight dance in discotheque

    一道树形dp裸体,自惭形秽没有想到 首先由于两两圆不能相交(可以相切)就决定了一个圆和外面一个圆的包含关系 又可以发现这样的树中,奇数深度的圆+S,偶数深度的圆-S 就可以用树形dp 我又写挫了= = ...

  2. 【BZOJ3223】文艺平衡树(Splay)

    题面 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 ...

  3. Java 计算年龄

    public static String getAgeTxt(String birthTime,String beginTime,int level){ if(StringUtils.isBlank( ...

  4. Memcached修改默认端口

    windows下修改memcached服务的端口号(默认端口:11211)如果不是作为服务启动memcached的话,memcached -p 端口号就可以了. 通过修改注册表可以简单实现 运行:re ...

  5. java web需要好好掌握的一些东西

    这是一些需要好好的复习的东西 本来存了个文档  怕整丢了  就在这里保存一下 java 基础 重点关注集合 如list hashmap等使用(有时间多看看hashmap的实现原理  问的比较多)多线程 ...

  6. git pull error

    在图形界面中,执行拉取操作时,出现下面的错误. You asked to pull from the remote 'origin', but did not specifya branch. Bec ...

  7. 【Unity3D与23种设计模式】游戏的主循环——Game Loop

    游戏与其他软件最大的不同 就是游戏有Update逻辑 一般的软件是由"事件"驱动 因为它不会突然跑出来一只"兔子" 因此,只有游戏才有"帧" ...

  8. "码率适配限速”,如何使带宽成本减少30%?

    3月28日.29日,B站.爱奇艺即将先后完成IPO.爱奇艺的招股书显示,爱奇艺依然处于亏损状态.2015 年.2016 年.2017 年三年合计亏损约 94 亿元.高昂的版权费是造成视频网站亏损的重要 ...

  9. java 多线程(总结)

    今天看了几篇关于java多线程问题的文章,将他们的部分内容引过来总结下,也算是对java多线程这类问题的整理. 在多线程中,必须明白两个问题,一是多线程实现,二是代码同步. 在java中要想实现多线程 ...

  10. Angular开发实践(一):环境准备及框架搭建

    引言 在工作中引入Angular框架将近一年了,在这一年中不断的踩坑和填坑,当然也学习和积累了很多的知识,包括MVVM框架.前后端分离.前端工程化.SPA优化等等.因此想通过Angular开发实践这系 ...