C语言博客作业04数组
0.展示PTA总分



1.本章学习总结
1.1 学习内容总结
1.int a[10];为定义数组,表示数组有10个数
2.数组的下标都是从0开始,到n-1结束
3.数组里元素的个数不能大于数组的长度
4.数组长度必须是常量,不能是变量。如int a[x]错误
5.静态数组使用方法,static 类型名 数组名[数组长度]
6.静态数组若没有初始化,系统会自动给数组元素赋值0
7.二维数组a[i][j],i代表行标,j代表列标,行和列都从0开始,列长度不能省略
8.字符数组的结束符为'\0',用其来控制循环
9.字符数组定义:例如char a[100]
查找数据:可用顺序查找法
scanf输入要查找的值x
for(从数组下标0到n-1)
{if所要查找的值与数组中某个值相等
输出该数的下标}
数组中插入数据
for{找出a[i]>x;
退出循环}
for(循环从n开始,且循环条件为k>i)
{另数组中的后一个数等于前一个数}
另a[i]=x;
for(条件为i<n+1)
{输出数组}
数组中删除数据:
法一:定义一个新数组
for(遍历数组)
{flag=0;
for(二次遍历数组)
{if(a[i]=a[j]说明有重复数据)
flag=1; }
if(flag==0)说明该数据不重复
b[j]=a[i]这样便能将重复的数据都删除
}
法二:for(i=0;i<=k;i++;k表示要删除的次数)
{输入x为数据的下标;
for(j=x;循环从x开始)
a[j-1]=a[j] 另前一个数等于后一个数 }
for循环至n-k printf输出
排序方法
法一:选择排序法
再数组中再到最小数,将min与a[0]交换
再从a[1]到a[n-1]找min,a[1]与min交换
....以此类推
法二:冒泡排序法
从头到尾比较相邻两个数
运用两层循环,若a[j]>a[j+1],交换两个数的值
枚举法数组案例:顺序查找法,逐个比较数组中元素查找重复数据
哈希数组案例:查找重复数据
定义一个数组static int hash[max]该数组里的数都为0
for循环输入数据
if(hash[用输入的数据作下标])
{if(hash[x]==1)说明有重复数据
else让hash[x]=1 }
1.2 本章学习体会
1.数组内容较多且复杂,特别是字符数组有些乱,且方法很多也容易乱,使用起来较为困难
2.代码量700行左右,达到目标
2.PTA实验作业
2.1 题目名:二分查找法
2.1.1 伪代码
定义数组a[10]={1,2,3,4,5,6,7,8,9,10}
定义upper为数组的左下标,top为右下标;
int b为中间值,key
scanf输入key
for{
b=(upper+top)/2另b为中间值
比较a[b]与key的大小
若等于,printf输出b
若大于,top=b-1
若小于,upper=b+1
}
2.1.2 代码截图

2.1.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 4 | weizhi:3 | 题目要求数据 |
| 1 | weizhi:0 | 端点数据 |
| 11 | not found | 数组中没有的数据 |
2.1.4 PTA提交列表及说明

- 第一次提交错误是由于找到a[b]=key之后没有用break结束循环,使运行超时,且当a[b]>key时和a[b]<key时之后的操作错误
- 第二次提交错误修改了break的错误,但a[b]>key时和a[b]<key时之后的操作仍然错误
- 修改为a[b]>key,top=b-1,a[b]<key,upper=b+1,答案正确
2.2题目名:字符串转换成十进制整数
2.2.1 数据处理
定义变量i,k,j;定义字符数组a[100]来储存输入的字符,定义b[100]来储存十六进制的字符,定义number作为转化后的十进制数,定义flag来控制是否输出负号
2.2.2 代码截图


2.2.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| +-P-xf4+-1!# | -3905 | 题目要求数据 |
| 10# | 16 | 全为数字的数据 |
| ab# | 171 | 全为小写字母的数据 |
| AB# | 171 | 全为大写字母的数据 |
2.2.4 PTA提交列表及说明

- 由于没有注意到是否应该输出负号而导致第一个测试点错误
- 定义了flag来控制是否输出负号后还是错误,错误代码如下
if (i >= 1&&flag==0)
{
for (j = i-1; j >= 0; j--)
{
if (a[j] == '-')
{
flag = 1;
break;
}
}
}
此代码只考虑到第一个十六进制字符前有没有负号,而错误在于若第一个十六进制字符前无负号,而第二个十六进制字符前有负号,还是会输出负号,所以错误 - 填入了flag=2之后在输出时忘了flag=1或0时都不用输出负号
- 修改后如上代码正确
2.3 题目名3:判断E-mail地址是否合法
2.3.1 数据处理
定义字符数组str[100]储存输入的字符,定义flag对输出“YES”还是“NO”作判断,定义i,i用于循环语句
2.3.2 代码截图


2.3.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| adf12@qw213.com | YES | 题目要求数据 |
| #10@q98.com | NO | 输入非字母数字,下划线,’.'和@的符号 |
| 102q@_12.com | NO | 输入@前后不全是字母和数字的数据 |
| 263qw@c2.com23 | NO | com后还有其他的数据 |
2.3.4 PTA提交列表及说明

- 段错误是由于使用scanf输入字符,后改用fgets
- 部分正确1:由于条件中str[i]>'a'和str[i]<z中没有加等号
- 部分正确2:没有对com后还有数据进行判断,添加代码如下:
else if (str[i + 1] && 'c' && str[i + 2] == 'o' && str[i + 3] == 'm')
{
i = i + 4;
if (str[i] != '\0')
{
flag = 0;
break;
}
} - 部分正确3:修改代码后仍错误,调试后发现'\0'前还有一个字符数据'\n',为fgets输入时自动加入的,将i=i+4改为i=i+5
- 最后提交正确
3.阅读代码

题目为输出A数组中有而B数组中没有的数据,该代码优点为循环次数少,思路简单,容易懂
通过遍历数组A和B而找出都有的数据,并改变A[i]的值为1,最后选择输出A[i]的值不等于1的数据
比起通过再设一个数组来储存数据方便得多
C语言博客作业04数组的更多相关文章
- C语言博客作业04——数组
1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量 1.2.1学习体会 这几周学习了数组,数组分为三大块:一维数组.二维数组和字符数组.数组相对于之前普通变量的好处就是可以储存数值,方便数据 ...
- C语言博客作业04—数组
0.展示PTA总分(0----2) 展示3张关于"数组题目集"分数截图. 1.本章学习总结(2分) 1.1 学习内容总结 整理数组这章学习主要知识点,必须包含内容有: (1)数组查 ...
- C语言|博客作业04
这个作业属于哪个课程 C语言程序设计II 这个作业的要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9768 我在这个课程的 ...
- C语言Ⅰ博客作业04
问题 回答 这个作业属于哪个课程 c语言程序设计ll 这个作业要求在哪里 https://blog.csdn.net/qq_42264638/article/details/102381471 我在这 ...
- c语言Ι博客作业04
这个作业属于哪个课程 c语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/9771 我在这个课程的目 ...
- C语言博客作业04
问题|答案 -|:-:|-: 这个作业属于哪个课程|c语言程序设计I 这个作业的要求在哪里|https://edu.cnblogs.com/campus/zswxy/CST2019-4/homewor ...
- C语言博客作业—字符数组
一.PTA实验作业 题目1:字符串转换成十进制整数 1. 本题PTA提交列表 2. 设计思路 (1)定义i为循环变量,number用于存放每一次转化的结果,flag用于判断是否为负数,p用于修改结果的 ...
- C语言博客作业--字符数组
一.PTA实验作业 题目1:统计一行文本的单词个数 1. 本题PTA提交列表 2. 设计思路 Begin 定义字符型变量ch,pre=' ': 定义整型变量count://用来记录单词个数 count ...
- C语言博客作业字符数组
一.PTA实验作业 7-12 IP地址转换 本题PTA提交列表 设计思路 3.代码截图 7-7删除字符串中的子串 本题PTA提交列表 设计思路 定义字符型数组s[81]储存主串,sub[81]储存子串 ...
随机推荐
- javaScript学习总结(二)——jQuery插件的开发
概要 jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定 ...
- __metaclass__方法
metaclass这个属性叫做元类,它是用来表示这个类是由谁来帮他实例化创建的,说白了,就是相当于自己定制一个类. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- 对C++类的继承和派生的理解
C++中的继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产. 1.继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程. ...
- python并发编程-多线程实现服务端并发-GIL全局解释器锁-验证python多线程是否有用-死锁-递归锁-信号量-Event事件-线程结合队列-03
目录 结合多线程实现服务端并发(不用socketserver模块) 服务端代码 客户端代码 CIL全局解释器锁****** 可能被问到的两个判断 与普通互斥锁的区别 验证python的多线程是否有用需 ...
- unittest之三:字符串与列表的相互转换与分离数据时的应用
一.分离数据时,需读取文档中存储的数据,但TXT文件的数据读取出来的类型为列表,而测试用例中断言的时候验证的是字符串,所以需要将列表转为字符串 #1字符串————>列表 str1='hello ...
- 分布式的几件小事(四)dubbo负载均衡策略和集群容错策略
1.dubbo负载均衡策略 ①random loadbalance 策略 默认情况下,dubbo是random loadbalance 随机调用实现负载均衡,可以对provider不同实例设置不同的权 ...
- Hadoop学习之 HIVE 多用户模式安装
一.启动hadoop 集群 1.启动zookeeper 集群 zkServer.sh start 2.在master.hadoop 机器上 ./start-all.sh 由于 start-all命 ...
- js获取7天之前的日期或者7天之后的日期
js获取7天之前的日期或者7天之后的日期(网上摘取的,记录自己使用) function fun_date(num) { var date1 = new Date(); //今天时间 var time1 ...
- oracle数据库连接问题org.springframework.jdbc.support.MetaDataAccessException: JDBC DatabaseMetaData method not implemented by JDBC driver - upgrade your driver...
org.springframework.jdbc.support.MetaDataAccessException: JDBC DatabaseMetaData method not implement ...
- 【异常】Reason: Executor heartbeat timed out after 140927 ms
1 详细异常 ERROR scheduler.JobScheduler: Error running job streaming job ms. org.apache.spark.SparkExcep ...