一、学习内容总结

1.指针是一种数据类型,同样占有空间,其存储的是内存地址;

2.定义指针变量要在变量名之前加“*”字符表示;

3.“&”是取地址运算符,“*”是间接运算符;

(注:声名和使用指针时*的意义不同)

4.指针的数据类型是指它所指向的内存空间的数据类型;

5.指针可以与整数进行加减运算,但只能与指针进行减法运算;

6.可以把指针声明成为指向函数的指针,从而通过函数指针调用函数;

7.数组的数组名(二维数组的列)可以看作一个指针;

8.为了防止野指针,一般将指针定义在其他变量之后或者指向NULL。

二、在课堂或课后编程学习遇到的问题及解决过程

  • 问题1:

课后作业“删除字符串中指定字符”的编程中,自定义函数的函数体内没有与调用时定义的变量保持一致导致编译程错误,即调用的地址变量虽然没有“*”标识,但是函数体内要用地址变量定义。(下为delchar的代码,我认为删除字符不应该是简单的过滤)

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
void delchar(char *s,char c);
int main()
{
char s[],c;
gets(s);
getchar();
c=getchar();
delchar(s,c);
puts(s);
system("pause");
return ;
}
void delchar(char *s,char c)
{
char *ss=NULL;
while(*s)
{
if(*s==c)
{
ss=s;
while(*s)
{
*s=*(s+);
s++;
}
s=ss-;
}
s++;
}
}

解决方案:如上代码,定义函数“void delchar(char *s,char c)”即可。

  • 问题2:

课后作业“从指定位置复制字符串”的编程中,开始没有考虑到题目输入中的位置其实对应字符串下标减一而导致答案错误。(下为正确代码)

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
void strmcpy(char *s,char *t,int m);
int main()
{
char t[],s[];
int m;
gets(t);
scanf("%d",&m);
strmcpy(s,t,m);
puts(s);
system("pause");
return ;
}
void strmcpy(char *s,char *t,int m)
{
while(m--)
{
t++;
}
strcpy(s,t-); //本条自定义函数实质为strcpy(s,t+m-1);
}

解决方案:如上代码,在调用strcpy函数时在t后减一即可。

  • 问题3:

课后作业“二维数组冒泡排序”的编程中,直接照搬了从前一维数组冒泡排序的思路,从而忽视了二维数组多出来的一层边界的越界问题而导致一些情况下出现答案错误(如下图)。

解决方案:重新考虑了第二层边界的越界问题并修改了for循环的条件。

三、作业

1.PTA(指针字符串查找字符程序)

 #include<stdio.h>
#include<string.h>
int main()
{
int i,n=,count=;
char a[],x;
while((a[n]=getchar())!='\n')
n++;
x=getchar();
while(n--)
if(x==a[n])
count++;
printf("%d",count);
return ;
}

(输出截图)

2.二维数组冒泡排序

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[][];
char temp[];
int i,j;
for(i=;i<;i++)
{
gets(a[i]);
}
printf("二维数组冒泡排序:\n");
for(j=;j<;j++)
{
for(i=;i<-j;i++)
{
if(strcmp(a[i],a[i+])>)
{
strcpy(temp,a[i]);
strcpy(a[i],a[i+]);
strcpy(a[i+],temp);
}
}
}
for(i=;i<;i++)
{
puts(a[i]);
}
system("pause");
return ;
}

(输出截图)

四、中国大学MOOC

2018C语言第二次作业的更多相关文章

  1. C语言--第二周作业

    ****学习内容总结**** 1.Git和编辑器截图 2.MOOC截图 3.阅读<提问的智慧>感想 读完<提问的智慧>之后,我认为在提问时,要根据以下步骤: 谨慎明确的描述症状 ...

  2. C语言——第二次作业(2)

    作业要求一 PTA作业的提交列表 作业要求二 题目1.删除字符串中数字字符(函数题) 1.设计思路 - (1)算法 第一步:调用定义的函数. 第二步:定义i=0.j=0,i为原字符数组角标,j为删除后 ...

  3. C语言第二次作业 ,

    一:修改错题 1输出带框文字:在屏幕上输出以下3行信息. 将源代码输入编译器 运行程序发现错误 错误信息1: 错误原因:将stido.h拼写错误 改正方法:将stido.h改为stdio.h 错误信息 ...

  4. c++语言第二次作业

    一题目7-1统计学生成绩 1实验代码 #include<stdio.h> int main(void) { int i,n,grade,A,B,C,D,E; A=B=C=D=E=; sca ...

  5. C语言--第二周作业评分和总结(5班)

    作业链接:https://edu.cnblogs.com/campus/hljkj/CS2017-5/homework/1026 一.评分要求 要求1 阅读指定博客+阅读收获+例子.(5分) 要求2 ...

  6. C语言第二次作业-----顺序结构

    一:改错题 (1)输出指定信息: 将给定源代码输入编译器: 执行编译命令,发现编译器报错,错误信息如下: 经检查,发现源程序将"stdio.h"误拼为"stido.h&q ...

  7. c语言第二次作业2

    ---恢复内容开始--- (一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. 源程序 对源程序进行编译 错误信息1: 错误原因:stdio.h输入错误 改正方法:i和d互换位置 错误信息2: ...

  8. 网络1712--c语言第二次作业总结

    1.作业亮点 1.1在调试问题方面有明显进步,变量声明方面有所改变,没有发现大面积抄袭现象. 1.2 以下几位同学博文写的较为优秀,可作为范例供大家参考 田亚琴--代码格式良好,思路清晰,调试部分图文 ...

  9. C语言第二次作业

    一.PTA实验作业 题目1:7-1 计算分段函数[2] 1.实验代码 double x,y; scanf("%lf",&x); if (x>=0) { y=sqrt( ...

随机推荐

  1. IFrame实现页面无刷新

    一.html 和s代码段 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  2. [原]unity3d调用android webView

    1.配置dialog xml文件: <resources>    <style name="dialogStyleWindow" parent="@an ...

  3. [Model] LeNet-5 by Keras

    典型的卷积神经网络. 数据的预处理 Keras傻瓜式读取数据:自动下载,自动解压,自动加载. # X_train: array([[[[ 0., 0., 0., ..., 0., 0., 0.], [ ...

  4. [SLAM] Little about SLAM

    Books from Zhihu: 幽默一把 看完Gonzalez:嗯,好像很好玩的样子,我也来搞一搞.看完Price:什么鬼,怎么这么多公式,公式看不懂肿么破.看完Szeliski:原来用一千页的书 ...

  5. PMP用语集

    AC actual cost 实际成本 ACWP actual cost of work performed 已完工作实际成本 BAC budget at completion 完工预算 BCWP b ...

  6. if条件和for循环语句、while、do..while、switch语法

    //if 语句 ; ) { NSLog(@"不及格"); }) { NSLog(@"及格"); } //if语句 判断条件存在多个情况下,判断一个年是否为润年 ...

  7. RF使用ie浏览器访问页面,浏览器启动只显示This is the initial start page for the WebDriver server,页面访问失败

    问题描述:启动ie浏览器后,页面显示如下: 问题定位: 1.IE页面缩放没有设置成100% 2.ie浏览器的安全模式设置是否都将“启动保护模式”勾选上 3.iedriver驱动版本号是否和seleni ...

  8. 使用composer进行依赖管理:以guzzle为例

    今天突然发现一个不错的php http客户端库guzzle,欣喜不已,跃跃欲试.打开guzzle文档,发现需要composer做依赖管理.之前没有接触过composer,正好以此学习下,也蛮好! 本文 ...

  9. centos7/nginx/tornado错误异常收集

    临时方法 – 设置系统参数 使用命令setenforce 附: setenforce 设置SELinux 成为enforcing模式 setenforce 设置SELinux 成为permissive ...

  10. PHP一致性哈希实现。。

    <?php /** *@author:xiaojiang 20140222 * 一致性哈希php 实现 */ class MyHash{ //虚拟节点数 private $_virtualCou ...