C语言博客作业—字符数组
一、PTA实验作业
题目1:字符串转换成十进制整数
1. 本题PTA提交列表


2. 设计思路
(1)定义i为循环变量,number用于存放每一次转化的结果,flag用于判断是否为负数,p用于修改结果的正负;
(2)定义字符型数组hexad,并输入字符串;
(3)for( from i=0 to hexad[i]!='#' ) //遍历数组
if(hexad[i]为'-'且flag为零0) //说明还没有遇到第一个十六进制字符
则结果为负数;
if(hexad[i]在'0'到'9'之间) //挑出十六进制字符,转成相应的十进制
number=number*16+hexad[i]-48,flag=1;
else if(hexad[i]在'A'到'F'之间)
number=number*16+hexad[i]-55,flag=1;
else if(hexad[i]在'a'到'f'之间);
number=number*16+hexad[i]-87,flag=1;
end
(4)输出结果
3.代码截图。

4.本题调试过程碰到问题及PTA提交列表情况说明。
一开始的思路是不太理解符号的判断规则所以想用另一个字符数组存放筛选过的字符串,然后再进行转换;但是没有办法判断好符号,所以去看了一下别的代码是怎么判断这个地方的,然后就引用了一个p来直接决定结果的正负;

而且这样就不需要两个字符数组了,代码简洁了不少,自己读一遍下来是没什么问题了。
但是编译器输出的结果表明还是错的,,,直接输出了0,调试发现第一个十六进制字符判断后number的值就存在问题,所以应该是number的表达式出现了些问题;后来改成了对应的ASCII码直接进行计算,答案就正确了;所以应该是我输入的那个字符出现了问题!

题目2: 找最长的字符串
1. 本题PTA提交列表

2. 设计思路
(1)定义循环变量i和total,count用于计算每个单词的的字符个数,N为单词个数,max用于存放最长单词的字符个数;
(2)输入单词个数;
(3)定义一个字符数组b[ 80 ];
(4)for( from total=0 to total=N) //每个单词都做同样的判断
(5) 定义str[80],输入单词 ;
(6) for( from i=0 to str[i]!='\0' )
count++; i++ ; //计算单词内字符个数
if(max小于count){
max=count;
for( from i=0 to i<max ) //一直保留下最长的字符串
b[i]=str[i];
i++;
}
count清零,total++;
end
(7)输出结果
3.代码截图。

4.本题调试过程碰到问题及PTA提交列表情况说明。
刚开始的思路是把所有的数都放到一个数组中,而且用了其他两个数组分别保留单个单词和最长单词,思路比较复杂,而且容易出错,请教同学后才知道可以利用循环一个字符数组来单独判断每个单词,再保留最长单词;

犯了一个有点智障的错误,要字符数组一个一个,然后输出时又直接用%s输出整个字符串,,,就变成了输出max次最长单词;

修改后在编译器中运行:结果是不太对的,它可以判断出最长的单词,但是它只能判断N-1次,而不是预期的N次;我只好把循环变量的初值改成0,然后结果正确;但是这两种情况PTA都可以通过,所以我就更不太理解这个地方了,,,



题目3:Jack cheng的烦恼2
1. 本题PTA提交列表


2. 设计思路

3.3.代码截图。

4.本题调试过程碰到问题及PTA提交列表情况说明。
一开始只考虑了第一次输入的顺序不能反过来,导致后面的测试点错误;


这个样子就意味着必须要完整的输入一对括号后才能再开始输入下一对;没有意识到如果是包含的情况,那个样子是不会判断正确的。
二、截图本周题目集的PTA最后排名。(2分)
PTA排名

三、同学代码结对互评(1分)
1.互评同学名称
林岑
2.我的代码、互评同学代码截图
我的代码:

同学的代码:

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
- 不同:我的代码:我觉得每八个二进制的判断过程都是一样的,所以我直接利用循环以及清零,一边输出一边转换;再加上count来区分输出的格式;二进制转换的表达式与i之间的关系是可以推断出来的,所以可以直接转换。
同学的代码:同学的是分别转换每八个二进制,保留结果,然后直接按照格式要求输出;虽然看起来很整齐,一目了然而且不用判断输出来的情况。 - 自己的代码会比较简洁些,虽然没有同学的代码直观,但是觉得自己的代码执行效率会好一点~
四、本周学习总结(3分)
1.你学会了什么?
1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?
类型名 *指针变量名 //每个指针变量前都要有*
int *p;
char *cp;
float *fp;
double *dp1;
1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?
- 指针变量可以与整型数据相加(此时加减的含义并不是其地址值进行了加减);2个指针变量不能相加,因为指针变量表示地址,地址相加没有意义,但可以进行减法运算,表示两个地址之间的差。
1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?
- a随意的存放可能会破坏系统进程导致系统崩溃。

1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?
#include<stdio.h>
void splitfloat(float x,int *intpart,float *fracpart){ //指针变量做函数形参
*intpart=(int)x; //取整
*fracpart=x-*intpart; //减去整数部分就是小数部分
}
int main ()
{
int i,*ip=&i;
float f,x,*fp=&f;
scanf("%f",&x);
splitfloat(x,ip,fp); //函数实参
printf("intpart:%d\nfracpart:%f",i,f);
return 0;
}
指针变量做函数形参所指向的数据与实参所指向的数据共享存储单元,在函数中改变了形参所指向的数据,对应实参所指向的数据将同时改变,函数调用后带回多个值,如此在C语言中间接实现数据的双向传递。
1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。
void bubble ( int *p ,int n )
{
int i,j,temp;
for(i=1;i<n;i++)
for(j=0;j<n-i;j++)
if(*p>*(p+1))
{ temp=*p;*p=*(p+1);*(p+1)=t; }
}
1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?
int a[100],*p;
p=a; //让指针变量指向数组
p+1表示a[1];
//*(p++) 可以遍历数组
1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?
char *p="string"; //指针指向字符串后,初始位置为字符串首字符的地址
1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?
char s1[20],s2[20];
gets(s1);
gets(s2);
printf("%s%s",s1,s2);
2.本周你不会内容有什么?
2.1 课堂派错题罗列及如何订正。
- 刚开始连地址和指针都分不清。


2.2 其他不会的?打算怎么解决
复习课本,请教同学,这两周的学习有点落后了。
3.数组上机考试小结
3.1 那题错了,请罗列?
- 7-1 IP地址转换
- 7-3 jmu-c-输出字符间的字符子串
3.2 错题如何订正,为什么错了?
- 7-1:表达式写错,转换成十进制;而且没有用到最简便的方法;
- 7-3:后来同学讲解了一种非常简洁的写法,感觉自己实在是太差了,写的思路比较复杂找错能力还很差,,,
C语言博客作业—字符数组的更多相关文章
- C语言博客作业--字符数组
一.PTA实验作业 题目1:统计一行文本的单词个数 1. 本题PTA提交列表 2. 设计思路 Begin 定义字符型变量ch,pre=' ': 定义整型变量count://用来记录单词个数 count ...
- 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学习体会 描述本周学习感受,也可以在这里 ...
随机推荐
- OpenGL shader渲染贴图
simple.vert #version core layout (location = ) in vec3 position; layout (location = ) in vec3 color; ...
- Nslookup命令小结
Nslookup命令小结 0.nslookup的定义 Nslookup是由微软发布用于对DNS服务器进行检测和排错的命令行工具. 两种模式: 一.非交互模式 nslookup –qt=类型 ...
- 【BZOJ4566】找相同字符(后缀自动机)
[BZOJ4566]找相同字符(后缀自动机) 题面 BZOJ 题解 看到多串处理,\(SA\)就连起来 \(SAM???\) 单串建自动机 然后其他串匹配 对于一个串建完\(SAM\)后 另一个串在\ ...
- 【Luogu2759】奇怪的函数(数论)
[Luogu2759]奇怪的函数(数论) 题面 题目描述 使得 \(x^{x}\)达到或超过 n 位数字的最小正整数 x 是多少? 输入输出格式 输入格式: 一个正整数 n 输出格式: 使得 \(x^ ...
- 【Luogu3041】视频游戏的连击(AC自动机,动态规划)
题面链接 题解 首先构建出AC自动机 然后在AC自动机上面跑DP 转移很显然从Trie树的节点跳到他的儿子节点 但是要注意一个问题, 在计算的时候,每一个节点加入后能够 造成的贡献 要加上他的子串的贡 ...
- 【BZOJ1008】【HNOI2008】越狱(组合数学)
题面 题目描述 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 输入输出格式 ...
- [BZOJ1606] [Usaco2008 Dec] Hay For Sale 购买干草 (dp)
Description 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包干草,每 ...
- Centos samba 服务配置
1背景 转到Linux有段时间了,vim操作还不能应对工程代码,之前一直都是Gnome桌面 + Clion 作开发环境,无奈在服务器上没有这样的环境, 看同事是(Windows)Source Insi ...
- Servlet 过滤器、拦截器、监听器以及文件上传下载
在学习之初,总是对过滤器.拦截器.监听器这三个搞不清楚,现在进行一些记录,方便大家交流,也为了提高自身的学习能力! 如果想要了解这三个的作用,首先对servlet流程进行熟悉了解,servlet是客户 ...
- HashMap中的resize以及死链的情况
之前我已经写过关于HashMap的内容了:http://www.cnblogs.com/wang-meng/p/7545725.html 我们都知道HashMap是线程不安全的, 如果多线程来访问会有 ...