C语言博客作业--字符数组
一、PTA实验作业
题目1:统计一行文本的单词个数
1. 本题PTA提交列表
2. 设计思路
Begin
定义字符型变量ch,pre=‘ ’;
定义整型变量count;//用来记录单词个数
count←0;
while((ch←getchar())!='\n')
do{
if(ch!=' ' and pre →' ')
count 自增;
pre←ch;
}
output count;
End
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
本道题类似于11月循环结构上机考试的一道题
当时提交时的错误提示显示我没有考虑到输入很多空格和只输入空格的情况,这次做题时突然想到,每次开始输入一个“单词”,除了第一个单词,其余单词的前面一定是有空格的,于是我定义了一个pre表示输入字符的前一个变量,先给pre赋上初值为空格,然后接下来每次输入字符时都令pre赋上ch的值,以此达到计数单词的目的(不过在写这个时才发现没有用数组来做,但是用数组也是差不多的,在开始的时候输入字符串遍历数组,后面的操作就差不多了)
题目2:找最长的字符串
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
错误提示:
当时的代码是这样的(经过检查上面的代码没有错,那就只有最后输出错了)
后来仔细看了题目,才发现输出漏了一些东西,于是改成以下代码,果然全部正确了
题目3:删除字符串中的子串
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路
Begin
定义整型变量i,j,count=0;
定义字符数组s1[100],s2[100];
input s1,s2;
while s1[i]!='\0'
do{
if s2[count]←'\0' and count>0
then{
j→i-count;
while(s1[i]!←'\0')
s1[j++]→s1[i++];
s1[j]→'\0';
i→0;
count→0;
}
if s1[i]←s2[count]
count 自增;
else if (s1[i]←s2[0])
count→1;
else
count→0;
i自增;
if s2[count]←'\0' and count>0 /*当要删除的字串在s1末尾时*/
s1[i-count]→'\0';
output s1;
End
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
这是一开始的代码
但是发现这样会把所有只要是子串中的字符都删掉,很明显题目的要求不是这样,于是上网参考别人的代码重新写了一个。
二、截图本周题目集的PTA最后排名。
三、同学代码结对互评
1.互评同学名称
曾文惠
2.我的代码、互评同学代码截图
我的代码:
曾文惠的代码:
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
曾文惠同学的代码与我的不同之处在于,她使用了strlen函数来计算字符串的长度,但是在本题中这一步是可以省略的,另外对于第一个单词的判断,她是在循环外先进行一次判断,而我的代码把这两步都合在一个循环里进行判断,虽然我们的思路差不多,但是我的代码要更加简洁,我更喜欢我的代码。
四、本周学习总结
1.你学会了什么?
1.1指针变量如何定义?
类型名 *指针变量名
如:
int *p;
char *cp;
float *fp;
double *dp1,*dp2;
需要特别注意的是:定义多个变量时,每一个指针变量前面都必须加上*
1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?
指针的加法运算用在改变存储单元的位置,如“++p”、“(p)++”;
两个指针变量不能相加,指针变量表示地址,地址相加没有意义,但可以进行减法运算,表示两个地址之间的距离。
1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?
程序运行失败。
1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?
第8行,指针变量作函数形参,指针变量需要在主函数有定义,函数实参需要加上&。
指针变量作为函数形参,可以将函数外部的地址传到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着函数的结束而被销毁。
1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。
void bubble (int *p ,int n)
{
int i,j,t;
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
if(*p>*(p+1))
{
t=*p;
*p=*(p+1);
*(p+1)=t;
}
for(i=0;i<n;i++)
printf("%d",*(p+i));
}
1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?
(1)让指针变量指向数组
int a[100],*p;
p=a;
(2)用指针变量表示数组元素
p1=a; 等价于 p1=&a[0];
p2=a+1; 等价于 p2=&a[1];
那么 *p1=a[0]; *p2=a[1];
*(p++)即可表示数组a中的元素
1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?
定义字符指针指向字符串
char *sp="string";
指针指向字符串后,初始位置即字符串首字符的地址
1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?
好处:占用的存储空间小,只占用一个可以存放地址的内存单元,使用方便。
2.本周你不会内容有什么?
2.1 课堂派错题罗列及如何订正。
第七题:
订正:
应该选A,str是数组名,不能进行赋值。
第六题:
订正:
(其实是不小心选错了= =)p表示的是a[0]的地址,加上8表示的还是地址,所以D错,p表示的是a[0]的值,(p+9)表示的是a[0]+9,即10,所以A和C错误,B正确
第四题:
订正:
同第七题,a是数组名,是常量,不能改变其值,所以选D。
第二题:
订正:
1.num 2.p+n 3.max<*p
数组作为形参,只需要数组名;
q表示地址,所以条件应该也是地址。
第三题:
订正:
忘记返回指针导致的错误。
2.2 其他不会的?打算怎么解决
课堂派的第一题不知道错在哪里,打算问同学。
3.数组上机考试小结
3.1 那题错了,请罗列?
6-2,7-3
7-2,7-4还没来得及做
3.2 错题如何订正,为什么错了?
6-2:错误提示:
但是不清楚测试点simple2是什么
7-3:当时时间快结束了所以把代码提交一下作为保存,没想到对了几个测试点,还没来得及去订正。
PS:修改
1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示
结果是一个随机地址
指针未赋初值,指针访问一个随机地址里面存放的数据,是不合法的。
1.8指针表示字符的方法好处
C语言博客作业--字符数组的更多相关文章
- C语言博客作业—字符数组
一.PTA实验作业 题目1:字符串转换成十进制整数 1. 本题PTA提交列表 2. 设计思路 (1)定义i为循环变量,number用于存放每一次转化的结果,flag用于判断是否为负数,p用于修改结果的 ...
- C语言博客作业--字符数组-陈张鑫
一.PTA实验作业(4分) 题目1:7-5 查验身份证 1. 本题PTA提交列表(要提交列表,不是结果) 2. 设计思路(伪代码或流程图) 定义变量身份证个数n,合法个数count=0,flag=0, ...
- C语言博客作业字符数组
一.PTA实验作业 7-12 IP地址转换 本题PTA提交列表 设计思路 3.代码截图 7-7删除字符串中的子串 本题PTA提交列表 设计思路 定义字符型数组s[81]储存主串,sub[81]储存子串 ...
- C语言第八次博客作业--字符数组
一.PTA实验作业 题目1:查验身份证 1. 本题PTA提交列表 2. 设计思路 定义i,flag=1,z,m[11],a[19] 输入次数n for i=1 to n+1 gets(a) 加权求和在 ...
- C语言博客作业04——数组
1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量 1.2.1学习体会 这几周学习了数组,数组分为三大块:一维数组.二维数组和字符数组.数组相对于之前普通变量的好处就是可以储存数值,方便数据 ...
- C语言博客作业4——数组
0.展示PTA总分 一维数组 二维数组 字符数组 1.本章学习总结 1.1学习内容总结 一维数组知识点: 无论是对一维数组还是二维数组进行应用时,我们对其下标的应用十分广泛. 1:一维数组的输入和遍历 ...
- C语言博客作业04数组
0.展示PTA总分 1.本章学习总结 1.1 学习内容总结 1.int a[10];为定义数组,表示数组有10个数 2.数组的下标都是从0开始,到n-1结束 3.数组里元素的个数不能大于数组的长度 4 ...
- C语言博客作业04—数组
0.展示PTA总分(0----2) 展示3张关于"数组题目集"分数截图. 1.本章学习总结(2分) 1.1 学习内容总结 整理数组这章学习主要知识点,必须包含内容有: (1)数组查 ...
- C语言博客作业5--指针
C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...
随机推荐
- ASP.NET Core轻松入门Bind读取配置文件到C#实例
首先新建一个ASP.NET Core空项目,命名为BindReader 然后 向项目中添加一个名为appsettings.json的json文件,为什么叫appsettings呢? 打开Progra ...
- 手机端仿ios的单级联动脚本三
脚本 <script>var weekdayArr=['非公司企业法人','个体工商户','私营独资企业','私营合伙企业','有限责任公司','股份有限责任公司'];var mobile ...
- Centos7.2 搭建Lamp服务器以及迁移WordPress个人博客详细过程
其实自己的博客搭了有段时间了,但是由于自己不太确定是不是一定要用wd的框架,以及实验室公网服务器的不稳定,就一直荒废着. 今天偶然间看到了腾讯云对于学生的优惠活动,毕业之前每月只要8元的云服务器(就算 ...
- 【BZOJ4003】【JLOI2015】城池攻占(左偏树)
题面 题目描述 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池.这 n 个城池用 1 到 n 的整数表示.除 1 号城池外,城池 i 会受到另一座城池 fi 的管辖,其中 fi ...
- which命令实战及原理详解-PATH实战配置
Which查找命令所在的路径,搜索范围来自全局环境PATH变量对应的路径. 其他方法: find / -type f -name “useradd” whereis -b useradd PATH的路 ...
- 用注解的方式实现Mybatis插入数据时返回自增的主键Id
一.背景 我们在数据库表设计的时候,一般都会在表中设计一个自增的id作为表的主键.这个id也会关联到其它表的外键. 这就要求往表中插入数据时能返回表的自增id,用这个ID去给关联表的字段赋值.下面讲一 ...
- unity集成openinstall流程
目的 1.Unity集成openinstall sdk? 最近在使用一个叫openinstall的SDK,通过它实现免填邀请码的功能,集成到unity游戏开发中.对App安装流程的优化,尤其是免填写邀 ...
- Java 小记 — Spring Boot 的实践与思考
前言 本篇随笔用于记录我在学习 Java 和构建 Spring Boot 项目过程中的一些思考,包含架构.组件和部署方式等.下文仅为概要,待闲时逐一整理为详细文档. 1. 组件 开源社区如火如荼,若在 ...
- jqgrid 单元格引入时间datepicker控件
简述原理:引入jquery-ui插件,设置好表格所需的字段变量以及字段属性1.设置colName与colModel colNames: ['过期时间''] colModel:[{ name ...
- 一次SSLPeerUnverifiedException,SSLHandshakeException问题的分析
一次SSLPeerUnverifiedException,SSLHandshakeException的问题分析 最近工作遇到一个https链接,通过pc(浏览器,curl)能正常访问,ios能正常 ...