一、学习内容总结

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. convertView&setTag方法的一点理解

    前言 首先我们要知道setTag方法是干什么的,SDK解释为 Tags Unlike IDs, tags are not used to identify views. Tags are essent ...

  2. SpringMVC -- 梗概--源码--壹--收参

    附:实体类 Class : User package com.c61.entity; import java.text.SimpleDateFormat; import java.util.Date; ...

  3. UrlUtils工具类,Java URL工具类,Java URL链接工具类

    UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...

  4. Python中常见的字符串小笔试题

    1.获取实现两个字符串中最大的公共子串 思路:    1.比较两个字符串的长度 2.获取较短字符串的所有子串 3.使用__contains__函数进行比较 4.把子串当做键,子串长度作为值,存入字典, ...

  5. python--Anaconda学习笔记

    http://study.163.com/course/courseLearn.htm?courseId=1003664056#/learn/video?lessonId=1048567028& ...

  6. wireshark----linux

    1.[root@lc~]# tshark   Running as user "root" and group "root". This could be da ...

  7. 嵌入式ROOTFS transplantation

    作一个嵌入式Linux rootfs,并且实现 web 服务 1. 文件系统简介 •理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的,文件系统简单的说就是一种目 ...

  8. codeforces水题100道 第十八题 Codeforces Round #289 (Div. 2, ACM ICPC Rules) A. Maximum in Table (brute force)

    题目链接:http://www.codeforces.com/problemset/problem/509/A题意:f[i][1]=f[1][i]=1,f[i][j]=f[i-1][j]+f[i][j ...

  9. codeforces水题100道 第八题 Codeforces Round #274 (Div. 2) A. Expression (math)

    题目链接:http://www.codeforces.com/problemset/problem/479/A题意:给你三个数a,b,c,使用+,*,()使得表达式的值最大.C++代码: #inclu ...

  10. (原创)Windows下使用android ADT工具dmtracedump.exe绘图

    在windows下使用dmtracedump绘图时,出现如下错误: 'dot' 不是内部或外部命令,也不是可运行的程序 或批处理文件. 应该是没有dot这个执行程序,安装:Graphviz程序,然后将 ...