C语言作业--数组
一、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语言作业--数组的更多相关文章
- day05<Java语言基础--数组>
Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java ...
- 我的第三次C语言作业
我的第三次C语言作业 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2 这个作业要求在哪里 https://edu.cnblogs.co ...
- 【算法】C语言实现数组的动态分配
C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...
- C语言一维数组、二维数组、结构体的初始化
C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...
- go语言的 数组、slice、map使用(转)
golang群 点击加入 go语言的 数组.slice.map使用, 由于网上有很好的说明, 不需要再写了,请看这几篇: Go语言中的 Array, Slice和 Map 深入学习golang五篇,以 ...
- go语言 类型:数组
在go语言中数组array是一组特定长度的有序的元素集合. go的数组类型由两部分组成——类型和长度,二者缺一不可.数组本来就是一块存储相同类型元素的连续内存空间,因此决定一个数组的类型,必然需要决定 ...
- C语言基础--数组及相关
概念: 一堆相同类型的数据的有序集合 格式: 元素类型 数组名称[ 元素个数 ] 定义数组: // 定义了一个名称叫做scores的数组, 数组中可以存放3个int类型的数据 ]; // 只要定义一 ...
- 学习C语言的数组
C语言的数组 数组声明的实例:int num[3];只要记下这个模板就好. 不建议使用变量定义数组,如果使用了变量定义数组,作为数组的元素的个数,不初始化的情况下是随机值,如果初始化会直接报错 注意: ...
- 对于C语言中数组名是指针的理解
我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...
随机推荐
- js小括号的作用
js中小括号()的用法详解:对于小括号无论是菜鸟还是高手一定都不会陌生,可以说它几乎是随处可见,虽然熟悉但并非真正的理解,由此可能会产生很多莫名其妙的错误,下面就通过代码实例详细介绍一下小括号的用法. ...
- position:absolute的发现。
使用.box{ width:100px; height:100px; background:red; position:absolute; left:0; right:0; top:0; bottom ...
- 【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)
[BZOJ1415][NOI2005]聪聪和可可(动态规划,数学期望) 题面 BZOJ 题解 先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了 #include< ...
- NOIP2017+停课总结
注意 此文章禁止一切含虚伪内容的评论,违者删除评论 其删除解释权归博主所有 Part1 论yyb NOIP 如何炸裂 前言 离NOIP已有三个星期,忘却的救主快要降临了吧,我正有写一篇总结的必要了.. ...
- [BZOJ2296] [POJ Challenge] 随机种子
Description 1tthinking除了随机算法,其他什么都不会.但是他还是可以ac很多题目,他用的是什么呢?他会选择一个好的随机种子,然后输出答案.往往他选择的一个好的种子可以有99%的概率 ...
- Mybatis【一对多、多对一、多对多】知识要点
Mybatis[多表连接] 我们在学习Hibernate的时候,如果表涉及到两张的话,那么我们是在映射文件中使用<set>..<many-to-one>等标签将其的映射属性关联 ...
- OpenAI dota2大战人类顶尖选手视频
AI大战Dendi:http://www.bilibili.com/video/av13267474/?zw#quality=3 AI大战Sumail:http://www.bilibili.com/ ...
- 服务器安装centos
谈一下今天遇到的problem,虽然很基础,但是还是值得记录一下: 1.制作启动盘,并不需要使用UltralISO刻录,可以通过在linux下dd命令直接制作iso镜像启动盘下面是步骤: 1)打开终端 ...
- JavaScript 再谈闭包
之前有整理过一版关于闭包的概念,但感觉思路不是很清晰,是临时想起一些例子来讲的,今天再次来讲一下闭包. 闭包: 函数嵌套函数,内部函数可以引用外部函数的参数和变量 function aaa(a){ v ...
- OpenStack Paste.ini详解(二)
接着OpenStack Paste.ini详解(一),接下来就分析request被paste.ini处理的流程 WSGI server接收到URL形式的request时,这些request首先会被Pa ...