C语言博客-指针
一、PTA实验作业(5分)
题目1:6-1 两个4位正整数的后两位互换
1. 本题PTA提交列表
2. 设计思路
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 无
题目2:6-3 统计大于等于平均分人数
1. 本题PTA提交列表
2. 设计思路
定义 *b 用于储存s首位置,sum用于求和
若*s不等于0
sum+=*s;
s++;
end
平均分*aver=sum/人数
n=0用于统计及格人数
若*b不等于0
如果 *b大于或等于*aver
n++
b++
end
返回 n
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
1.答案正确但输出错误(不相信所以交了两次)
不要处理指针首地址本身,新建一个指针来处理
题目3:6-10 字符串串动变化
1. 本题PTA提交列表
2. 设计思路
定义 整型变量max储存最大值,循环变量g,最大字符下标i;
字符型 temp用于暂时储存字符,*q用于储存p的首位置
q=p
max=*p的ASCII数
若 *p不等于\0
if *p的ASCII数 大于 max
max 等于 *p的ASCII数
i++;
p++
end
for g=i to g=0
交换 *(p+g)和*(p+g-1)
end for
- 今天写博客的时候发现一个问题:如果输入的字符串不是按照ASCII数按照大小输入,则我的代码不成立
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 错误一:p=*q
- 错误二:交换时使用了双循环
- 错误三:循环次数错误
二、截图本周题目集的PTA最后排名。(2分)
三、阅读代码(2分)
- 因为我自己做不出来,所以和军霖同学要了这道题目的代码了解
- 吴军霖同学关于6-11报数的代码1:
void CountOff( int n, int m, int out[] ){
int off=1,cnt=0,i;
static int flag[MAXN];
for(i=1;off<=n;i++){
cnt+=!flag[i];
if(cnt%m==0&&!flag[i]) {
flag[i]=1;
out[i-1]=off++;
}
if(i==n) i=0;
}
- 它的功能:给出每个人的退出顺序编号。
- 优势:
- 1.首先可以看出军霖同学的代码十分简洁,像
if(flag[i])
cnt++;
他直接简化为
cnt+=!flag[i];
- 2.他判断是否出圈的方式很巧妙,用数组flag[MAXN]表示,当flag等于1时,表示没有出圈,当flag=0时表示出圈;
- 3.关于让我比较头疼的就是如何使一个数列以一个圈的方式循环,
军霖同学以
if(i==n) i=0;
的方式判断语句是否到达最后一个人,并赋予0,从头开始循环,即以一个圈的形式进行;
- 吴军霖同学关于7-7 删除字符串中的子串
char s[81],sub[81];
gets(s);
gets(sub);
int i,u,v;
do{
for(i=0,u=0; s[i] ;){//以s到最后一个字符为结束
if(s[i]==sub[0]){//主串中遇到与子串第一个字符相等的开始判断接下来的是否会相等
for(v=i+1; sub[v-i] ;v++) //循环条件为sub[v-i],即子串到最后一个字符,减少了许多变量
if( s[v]!=sub[v-i] )
break;
if(!sub[v-i]) i=v;//如果子串出现,就给主串加上子串的长度
}
s[u++]=s[i++];//即满足了s[u]=s[i],又进行了i++,u++;
}
s[u]='\0';//for循环结束 后给s[u]加上结束标识符
}while(u!=i);//新的字符串中也会有子串的出现
puts(s);
return 0;
}
(备注是我自己对该代码的理解)
- 功能:输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
- 优势:思路很清晰,代码精简,虽然精简比较难读懂,但这也是我们今后的目标
- (1)循环条件
for(v=i+1; sub[v-i] ;v++)
循环条件为sub[v-i],即子串到最后一个字符,减少了许多变量
- (2)录入除子串外字符的方式
s[u++]=s[i++];
即满足了s[u]=s[i],又进行了i++,u++;
- (3)用do-while循环语句对新字符也出现子串的情况进行了判断
四、本周学习总结(1分)
1.自己总结本周学习内容。
(1)什么是结构?结构和数组有什么区别
- 结构:结构类型是一种允许程序员把一些一些数据分量聚合成一个整体的数据类型。一个结构中包含的每个数据分量都有名字,这些数据分量称为结构成员或者结构分量,结构成员可以是C语言中的任意变量类型
- 和数组的区别:数组中所有元素的数据类型必须是相同的,而结构中各成员的数据类型可以不同
(2)有几种结构的定义形式
- 1.混合定义:在定义结构类型的同时定义结构变量
struct 类型名{
类型名 结构成员1;
类型名 结构成员2;
...
类型名 结构成员n;
}结构变量名表;
注意:这里的分号不能漏掉.
- 2.嵌套定义:在定义结构成员时所使用的数据类型也可以是结构类型
例如:
struct address{
char city[10];
};
struct nest_student{
int num;
struct address addr;};
注意: struct address addr;};.
注意:必须先定义成员的结构类型,再定义主结构类型.
- 3.无类型名定义
例如:
struct {
类型名 结构成员1;
类型名 结构成员2;
...
类型名 结构成员n;
}结构变量名表;
注意:这种做法导致后来无法再定义这个类型的其他结构变量,所以一般建议前面两种.
(3)如何引用结构成员变量
结构变量名.结构成员名
注意:中间的那个点.
由于结构成员运算符的优先级属于最高级别,所以一般情况下都优先执行。
只有相同类型的变量之间才可以直接赋值
4)什么是结构数组?
- 结构数组是结构与数组的结合体
格式如下:
- 结构数组是结构与数组的结合体
struct student students[50]
- 2.其初始化与二位数组的初始化类似
- 3.对结构数组成员的引用
结构数组名[下标].结构成员名
(5)什么是结构指针?
- 1.结构指针就是指向结构类型变量的指针
- 2.结构指针的值实际上是结构变量的首地址,即,第一个成员的地址.
- 3.用*p访问结构成员
如:
01.(*p).num=101;
注意:(p)中的括号是不可以少的,因为成员运算符‘.’的优先级高于‘’的优先级.
02.p.num=101;
03.p->num=101;
2.罗列本周一些错题。
课堂派
- 1.预习作业
- 答案是语法错误,
要么
(*p).str++
要么
p->str++
- 答案是D. A中的“p++”也是地址,与p的用法相同是成立的,stu最大为stu[2],stu[3]越界了。
C语言博客-指针的更多相关文章
- C语言博客05--指针
C语言博客05--指针 1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 在本周的学习过程中,我们学习了指针的用法.说实话,指针的用法有点绕,之前一直没搞 ...
- C语言博客作业6---结构体&文件
C语言博客作业6---结构体&文件 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容.如下图所示: 1.2.学习体会 描述本周学习感受,也可以在这里提出你不理解地方.对 ...
- C语言博客作业5--指针
C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...
- C语言博客作业06——结构体&文件
C语言博客作业06--结构体&文件 1.本章学习总结 1.1思维导图 1.2.本章学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.结构体的本身并不难,但以结构体为基础的链表还是让我 ...
- C语言博客作业4--数组
C语言博客作业4--数组 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...
- C语言博客作业3--函数
C语言博客作业3--函数 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...
- C语言|博客作业10
问题 回答 C语言 博客作业10 这个作业要求在哪里 作业要求 我在这个课程的目标是 熟练循环语句的用法 这个作业在哪个具体方面帮助我实现目标 pta作业 参考文献 <C语言程序设计> 1 ...
- C语言博客作业05——指针
1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量 1.2.1学习体会 可能因为之前数组那块儿的作业拖得太久了,以至于我觉得指针学的好快,还没反应过来就教完了,然后一开始做题的时候,就是一脸 ...
- C语言博客作业——函数
一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1.本题PTA提交列表 2. 设计思路 int narcissistic( int number ) //函数定义 1.定义整数型变量a.i分 ...
随机推荐
- require()的工作流程
require()的工作流程 当require()里传递一个参数x时,会有以下情况: x是一个文件 x是一个路径 eg. 当x为/home/dk/project/app 依次搜索以下的node_mod ...
- Asp.Net WebApi 调试利器“单元测试”
当我们编辑好一个WebApi应用程序后,需要对该Api接口进行调试,传统的调试办法是在方法内设置断点,然后用PostMan等http工具模拟访问进行查看WebAPI的运行情况,但这种除了效率较低还进行 ...
- 页面某些特定图标的权限,比如导入导出表格,下载等等,这个权限必须在有某个页面查看的权利的基础上(细粒度)(shiro项目中来的四)
一,查找按钮权限的设置 第一步:会根据用户的相关信息去查到它的角色表: SELECT * FROM SYS_USER WHERE user_id='eded77bdf35347249b2bacfa18 ...
- 【转载】Spark运行架构
1. Spark运行架构 1.1 术语定义 lApplication:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个 ...
- 【Elasticsearch全文搜索引擎实战】之Kibana搭建
1. Kibana介绍 Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索.查看交互存储在Elasticsearch索引中的数据.使用Kibana,可以通过各种图表进行高 ...
- vultr VPS的购买及搭建ss介绍,支持锐速加速优化
Vultr虽然成立时间不久,但是其背景实力还是比较雄厚的,基于全球最大的游戏服务器提供商之一的基础,所以才有实力开设这么多的数据中心.有速度较好的日本东京.洛杉矶等机房,也有我们很多人需要的欧洲机房等 ...
- 论文笔记(6):Weakly-and Semi-Supervised Learning of a Deep Convolutional Network for Semantic Image Segmentation
这篇文章的主要贡献点在于: 1.实验证明仅仅利用图像整体的弱标签很难训练出很好的分割模型: 2.可以利用bounding box来进行训练,并且得到了较好的结果,这样可以代替用pixel-level训 ...
- sql性能优化之多表联查
先贴上我优化后的核心代码: select * into #result from ( select p.AchivementCount,isnull(a.ByAttentionCount,0) ByA ...
- Golang的CSP很酷?其实.NET也可以轻松完成
说起Golang(后面统称为Go),就想到他的高并发特性,在深入一些就是 Goroutine.在大家被它优雅的语法和简洁的代码实现的高并发程序所折服时,其实C#/.NET也可以很容易的做到.今天我们来 ...
- 【Java一看就懂】浅克隆和深克隆
一.何为克隆 在Java的体系中,数据类型分为基本数据类型和引用数据类型. 基本数据类型包括byte,short,int,long,float,double,boolean,char 8种,其克隆可通 ...