一、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. ViewGroup事件分发机制解析

    最近在看View的事件分发机制,感觉比复杂的地方就是ViewGrop的dispatchTouchEvent函数,便对照着源码研究了一下.故名思意这个函数起到的作用就是分发事件,在具体分析之前还要说明几 ...

  2. Babel 安装教程

    Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行. 这意味着,你可以现在就用 ES6 编写程序,而不用担心现有环境是否支持.下面是一个例子. // 转码前 inpu ...

  3. iOS9 HTTP 网络访问问题

    今天升级Xcode 7.0 发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Security po ...

  4. sql server 2008 sql prompt 自动提示

    sql server 2008 在编写SQL脚本的时候,总是希望能提示一些信息,或者自动提示需要查询的表的名字,或者表的基本信息,sql server默认会有一些提示的,如果没有可以设置工具--> ...

  5. C++学习-8

    1.注意:函数指针前面*,&都是一样的没啥实际意义,除了把实例化函数块的时候,需要指针或者引用修饰    cout << typeid(my1.show).name() <& ...

  6. Java实现mongodb原生增删改查语句

    Java实现mongodb原生增删改查语句 2018-03-16 自动化测试时,需校验数据库数据,为了快速自动化,在代码中用原生增删改查语句操作mongodb 结构 代码 0 pom.xml < ...

  7. 将["a"=1,"b"=2] 转为对象

    var obj = {}; var arr = ["a=1","b=2","c=3"]; for (var x in arr){ var s ...

  8. cdlinux可以安装在c盘

    以前一直以为cdlinux只能安装在优盘上,今天发现还可以安装在c盘,也就成了双系统,然后发现这个还是和grub4dos有关,grub4dos好厉害啊,然后不同的制作软件,不管是优盘还是直接安装在电脑 ...

  9. IntelliJ IDEA 源值1.5已过时,将在未来所有版本中删除

    1. 修改Maven的Settings.xml文件添加如下内容 <profile> <id>jdk-1.8</id> <activation> < ...

  10. Java技术总结

    1.在非空判断是一定把not null 判断写前边,否则如果为空先判断size为0会报错 String str = null; if(str !=null&&str.length()& ...