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 ...
随机推荐
- eclipse -解决Unhandled event loop exception GC overhead limit exceeded
今天第一次遇到这个问题, 拿出来和大家分享一下. 首先说明下我发现这个错误的过程, 看下面的三张图片 1,在本地weblogic发布项目的时候 2 , 等待一段时间, 出现以下错误 3 , 点击上 ...
- 项目中的导出(jxl插件)
第一步,获取要导出的参数,为导出做准备 public ModelAndView downloadInfo(final HttpServletRequest request, final HttpSer ...
- C#构造函数与析构函数--C#基础
1.构造函数 1)构造函数没有返回值,也不能写void,必须是public 修饰符 2)构造函数和类名相同 3)构造函数也是可以重载的 public Clerk(string name,Gender ...
- json 的循环输出
json不能用for-of循环,会报错 可以用for-in循环: var json = {'a':'apple','b':'banana','c':'orange','d':'pear'}; for( ...
- [Luogu2444][POI2000]病毒
Luogu sol 如果存在一个合法的无限长的串,那势必说明在\(AC\)自动机上存在一个合法的环.由此转化为判环,只要判断搜到的点是否已经在搜索栈中即可. code #include<cstd ...
- emacs配置
原配置 (global-set-key [f9] 'compile-file) (global-set-key [f10] 'gud-gdb) (global-set-key (kbd "C ...
- Bzoj2442:修剪草坪
Sol 一个很显然的暴力,设\(f[i]\)表示选到\(i\)的最优效率 每次枚举一段不与前面连续的长度小于\(k\)的区间转移来 # include <bits/stdc++.h> # ...
- [USACO15FEB]审查(黄金)Censoring (Gold)
题面 传送门 Sol AC自动机+栈,每次匹配到栈顶减去这个单词的长度,回到之前的状态 最后栈中留下的就是答案 # include <bits/stdc++.h> # define IL ...
- MySQL事务以及隔离级别
前言: 我一直想不到一个好的标题应该怎么写.我想MySQL的一些重要的内容.我在两次面试中都遇到过的,但直接用MySQL标题好像又不太贴切.干脆就是所写的内容吧. MySQL事务: transacti ...
- 使用Angular CLI生成 Angular 5项目
如果您正在使用angular, 但是没有好好利用angular cli的话, 那么可以看看本文. Angular CLI 官网: https://github.com/angular/angular- ...