一、学习内容总结

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. python获取数组中最多的元素

    获取数组中数量最多的元素,也就是最频繁的那个元素,方法有很多,下面是3种最简单的: 用max函数 sample = [1,2,3,3,3,4,5,5] max(set(sample), key=sam ...

  2. SQLServer转MYSQL的方法(连数据)[传]

    转自 https://blog.csdn.net/AlbenXie/article/details/77449720 SQLServer转MYSQL的方法(连数据) 本次转换需要依赖使用工具Navic ...

  3. php 安装rabbitmq扩展无报错版

    需要安装rabbitmq-c,rabbitmq-c是一个用于C语言的,与AMQP server进行交互的client库.下载了v0.5.2版本(https://github.com/alanxz/ra ...

  4. js 获取ISO-8601格式时间字符串的时间戳

    function getTimeStamp(isostr) { var parts = isostr.match(/\d+/g); return new Date(parts[0]+'-'+parts ...

  5. BootStrap Table显示行号,并且分页后依然递增

    bootStrap table 此处使用的是V1.9.0.在网上百度的方法是: { title: '序号', field: '', formatter: function (value, row, i ...

  6. MongoDB(五)-- 副本集(replica Set)

    一.副本集介绍 搭建副本集是为了实现mongodb高可用. Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点.主备节点存储数据,仲裁节点不存储数据.客户 ...

  7. Redis 操作有序集合数据

    Redis 操作有序集合数据: > zadd names "Tom" // zadd 用于往有序集合中添加元素,其中 1 在 Redis 中称为 score(分数),用来进行 ...

  8. Kafka producer介绍

    Kafka 0.9版本正式使用Java版本的producer替换了原Scala版本的producer.本文着重讨论新版本producer的设计原理以及基本的使用方法. 新版本Producer 首先明确 ...

  9. 如何用微信小程序模仿豆瓣首页

    程序思路: 用微信自带组件swiper来实现轮播图 用豆瓣提供的api(这里使用的电影api)来获取最近的电影数据[豆瓣api地址] 获取数据用微信的request方法,只需要提供豆瓣api的url链 ...

  10. 【面试题】源石智影科技Python工程师笔试题

    哈哈 上图