C语言字符数组作业
一、PTA实验作业
题目1:7-1 字符串转换成十进制整数
1. 本题PTA提交列表
2. 设计思路
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 1、一开始我没想到怎么判断正负的问题,输出的结果只有正数,与样例不符合
- 2、第一次做的时候,我没有在a-f和A-F的字符转换后加10,使结果变小,参考了书上的转换后,我才发现漏了加10
题目2:7-16 Left-pad
1. 本题PTA提交列表
2. 设计思路
- 定义n(所要的长度),i,j(循环变量),m(数组长度),op(填充字符),ch[100000](操作数组)
- 输入n,接一个getchar()吸收回车
- 输入填充字符,接一个getchar()吸收回车
- i=0
- while((ch[i]=getchar())!='\n') i自增
- m=i(储存数组长度),ch[i]='\0'
- if(n>m)
- for(j=0;j<n-m;j++)
- 输出字符
- 输出数组
- end for
- else if(n<m)
- for(j=m-n;j<m;j++)
- 输出数组后n个数
- end for
- else(即n=m) 输出数组
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 1、我刚开始做的时候没有注意n可以取到10的4次方,数组长度只定义了1000,结果最大n都错了,后来我把数组长度改成了100000
- 2、
我一直没搞明白为什么样例2是错的,因为我devc的输出是对的,但是我第二天再测试的时候,样例2在devc的输出就错了,我没搞懂为什么,后来我把n=m和n<m的位置换了一下,就全部正确了
题目3:7-20 指定位置输出字符串
1. 本题PTA提交列表
2. 设计思路
- 定义数组op[1000],i,j,k(三者用于循环),flag1,flag2(查找要求字符的位置),op1,op2(要求的字符)
- 输入数组(过程省略)
- 输入op1
- getchar()吸收回车
- 输入op2
- for(j=0;op[j];j++)
- 如果(op[j]==op1) flag1=j
- end if
- end j
- for(k=flag1;op[k];k++)
- 如果(op[k]==op2) flag2=k
- end if
- end k
- for(i=flag1;i<=flag2;i++)
- 输出flag1到flag2间的所有字符
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 我一开始第二个循环的k是从0开始的,这样会导致flag2有可能会出现在flag1前面,对某些情况不符合
二、截图本周题目集的PTA最后排名。
三、同学代码结对互评
1.互评同学名称
- 陈文杰
2.我的代码、互评同学代码截图(此处截图核心代码就好,不一定截图全部代码,图上指明是谁的代码。)
我的代码
文杰同学代码
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
- 1、文杰同学代码是先把符合16进制的字符找出并转换后储存于新数组中,然后再进行换算;而我是一边找一边进行换算,这一点我觉得我的做法会比较好
- 2、至于正负的问题上,我觉得文杰同学做法会更好,我花了很大一段代码来判断正负;而文杰同学在输入时就进行判断,效率更高
- 3、如果判断正负用文杰的方法,换算使用我的方法,那么程序效率会更高
四、本周学习总结
1.你学会了什么?
1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?
- 定义指针的一般形式为:类型名 *指针变量名
- *为指针声明符,不可省去
- 指针变量的类型是指它所指向的变量的数据类型
1.2指针加法运算运用在哪种情况,2个指针变量能否相加?
- 定义一个指针p(int p),则(p)++、p=p+1、++*p都表示将指针p所指向的变量的值加1;
- 定义一个指针p(int p),对指针赋值,则p++不再指向原变量
- 两个指针不能相加
1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?
程序崩溃,无法运行
1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?
1、指针变量做函数形参:void splitfloat(float x,int *intpart,float *fracpart)
2、函数实参:splitfloat(x,&ip,&fp)实参应该是一个地址
3、用处:通过指针改变指针所指向的白能量的值
1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。
void bubble(int *p,int n)
{
int i,j,t;
for(i=1;i<n;i++)
for(j=0;j<n-i;j++)
if(*p>*p+1)
{
t=*p;
*p=*p+1;
*p+1=*p;
}
}
1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?
- 假设有一个数组a[10],有一个指针*p,则p=a或p=&a[0]都能使指针p指向数组a[10]的初始地址,p+1即为下一个变量的地址,以此类推
- 假设指针p指向数组a[10]第一个变量,则p表示a[0],(p+1)表示a[1],以此类推
1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?
- 举个例子:char *sp=“string”
- 指针会指向字符串的首字符
1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?
2.本周你不会内容有什么?
2.1 课堂派错题罗列及如何订正。
1、实现字符串的连接
我一开始不知道怎么连接,现在明白了怎么连接了
2、
scanf函数后面的参数应该是一个地址,所以*p的是错的,应该是p
2.2 其他不会的?打算怎么解决
- 不会的问题,就要课堂多听,多向人请教,可以适当的百度了解自己不会的地方,当然最主要还是自己要理解透彻才能掌握好
3.数组上机考试小结
3.1 那题错了,请罗列?
- 1、函数题的 jmu-c-二维数组转置并按列排序
- 2、编程题的 7-4 数组元素的删除
3.2 错题如何订正,为什么错了?
- 1、函数题的 jmu-c-二维数组转置并按列排序
错误原因:我试着做了一次,觉得有点麻烦,就先跳过去,结果被后面的题耽搁了,来不及回来思考怎么做 - 2、编程题的 7-4 数组元素的删除
错误原因:我一开始的想法是移动数组。然后输出需要的部分,不过我这样做打乱了数组,输出结果不正确,加上时间不够,来不及更改
C语言字符数组作业的更多相关文章
- 网络1712--c语言字符数组作业总结..
---恢复内容开始--- 作业亮点 1.总体情况 1.大部分同学利用了流程图后,对于思路的理解有了提升. 2.很多同学在总结方面写的很不错,能够罗列问题贴出解决问题,我们能够看到你们的进步 2.作业发 ...
- C语言 字符数组与字符指针比较
C语言 字符数组与字符指针比较 #include<stdio.h> /* 字符数组会在定以后预先分配内存空间字符串是常量所以会直接把字符串拷贝到数组中, 因为数组地址不同,所以不相等· 字 ...
- C语言字符数组超细讲解
看到标题,有不少朋友会想:字符数组不也是数组吗?为什么要单独拿出来讲哩?莫非它是朵奇葩? 哈哈,确实,一起来认识一下这朵数组界的奇葩吧! 一.字符数组的定义.引用.初始化 大家好!我是字符数组,看我的 ...
- [c语言]字符数组、字符串定义
C语言中字符串通常用字符指针和字符数组来定义: char* pS="abcdef"; char s[]="abcdef"; 这两种方式都会在结尾为字符串隐式补结 ...
- 【转】C语言 字符数组与字符串
原文:http://blog.csdn.net/metasearch/article/details/2856097 在C语言编程中,当我们声明一个字符串数组的时候,常常需要把它初始化为空串.总结起来 ...
- c语言字符数组与字符串的使用详解
转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ ...
- c语言字符数组和指针的经典用法
1.字符数组 许多情况下,对字符串的处理使用字符数组会更加方便,比如: 我觉得不改变字符串的原有顺序,对字符串进行删除等操作时,使用字符数组效果会更好. eg:给定字符串(ASCII码0-255)数组 ...
- C 语言字符数组的定义与初始化
1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'} ...
- C语言---字符数组
一.PTA实验作业 题目1:7-2 统计一行文本的单词个数 1. 本题PTA提交列表 2. 设计思路 定义循环变量i,j定义不为空格的字符数count,定义单词数number,i,j,count,nu ...
随机推荐
- 基于 OS X Mavericks 系统
基于 OS X Mavericks 系统远景论坛黑苹果区新手引导 常见疑难解答 以及必要知识普及帖 请善用论坛搜索功能 认真仔细地阅读置顶帖里的教程以及注意事项 前言:之前建立10.9区求助规范帖时, ...
- Android破解学习之路(七)—— 乐秀视频编辑 内购破解 专业版 价值25元的破解
按照之前的支付宝破解,搜索9000的十六进制,之后... 但是,这样测试的时候,没有破解成功,便是继续研究 搜索关键字支付失败,之后找到了指定的smali文件,观察了许久,发现里面有个switch跳转 ...
- 【NOIP2009】【CJOJ1687】【洛谷1074】靶形数独
题面 Description 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z博士请教,Z 博士拿出 ...
- [Luogu2973][USACO10HOL]赶小猪
Luogu sol 首先解释一波这道题无重边无自环 设\(f_i\)表示\(i\)点上面的答案. 方程 \[f_u=\sum_{v,(u,v)\in E}(1-\frac PQ)\frac{f_v}{ ...
- linux系统基础优化16条知识汇总
优化的总结: 1.不用root管理,以普通用户的名义通过sudo授权管理. 2.更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至 要更改只监听内网IP. 3.定时自动更新服务区时间,使 ...
- iOS逆向工程,(狗神)沙梓社大咖免费技术分享。
序言 简介:本文针对于广大iOS开发者,作为一名开发者,仅仅专注于一门语言可能已经不适用现在的市场需求,曾经因高薪和需求量巨大,而火爆一时的移动端开发者(Android,ios),如今的路却是不再那么 ...
- node.js连接MySQL操作及注意事项
node.js作为服务端的js运行环境已经出现了有几年了,最近我有个朋友也在做这方面的开发,但是也是刚刚接触,遇到了很多坑.前几天他们在操作数据库的时候出现了点问题,后来我们一起看了看,其实都是nod ...
- 伯克利推出世界最快的KVS数据库Anna:秒杀Redis和Cassandra
天下武功,唯快不破. 伯克利 RISE 实验室推出了最新的键值存储数据库 Anna,提供了惊人的存取速度.超强的伸缩性和史无前例的一致性保证.Jeff Dean 说,当一个系统增长到十倍规模时,就需要 ...
- thinkPHP5使用的一些小配置
开发环境: 版本:php5.6 系统:windows 工具:phpstudy.vscode 遇到的报错信息error: 一.原php5.4版本(不限定)切换到5.6版本,路由报错: No input ...
- 如何恢复(初始化)android studio所有设置
android studio是个大家伙,安装的时候经常出现一些问题,使用的时候也经常出现一些问题,如果,我是说如果,当你遇见一些问题不能解决的时候,可以试试重置android studio来解决问题, ...