博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C博客作业--指针
阅读量:4694 次
发布时间:2019-06-09

本文共 2121 字,大约阅读时间需要 7 分钟。

一、PTA实验作业

题目1:6-6 输出月份英文名

1. 本题PTA提交列表

1232486-20171214143521467-250427082.png

2. 设计思路

1232486-20171214150055654-571562998.png

3.代码截图

1232486-20171214150305076-1442339919.png

4.本题调试过程碰到问题及PTA提交列表情况说明。

答案错误:其中有一个月份的英文名的首字母大小写出现问题。

题目2:6-8 使用函数实现字符串部分复制

1. 本题PTA提交列表

1232486-20171214151004826-622392298.png

2. 设计思路

定义整形变量ifor(i=0;i

3.代码截图

1232486-20171214151622138-75873018.png

4.本题调试过程碰到问题及PTA提交列表情况说明。

答案错误:开始就把t的地址赋给s,导致错误。

解决方法:认真查看代码,发现开始的这一步有异常。尝试删除后正确。

题目3:6-10 字符串串动变化

1. 本题PTA提交列表

1232486-20171214153408935-2128231220.png

2. 设计思路

定义字符变量Max为‘ ’,定义数组a定义整形变量i=0,count=0,indexfor(i=0;*(p+i);i++){  如果*(p+i)大于Max,Max=*(p+i),index=i count++}把p[index]赋给a[0]for(i=0;i

3.代码截图

1232486-20171214154255920-24563942.png

4.本题调试过程碰到问题及PTA提交列表情况说明。

1232486-20171214154508217-6745111.png

开始这一块是这样循环,导致p的地址发生了改变,所以最后答案一直有问题,
经过调试发现了问题,询问同学,帮忙找出了错误。对循环体进行了改善使p的地址不变

二、截图本周题目集的PTA最后排名。

1232486-20171214154905576-160629386.png

三、阅读代码

  • IP地址转换

一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制

格式表示的IP地址输出

#include
int main(){ char s[33],c; int sum=0,put[4],cnt=0; for(int i=1;i<=32;i++){ c=getchar(); sum=sum*2+c-'0'; if(i%8==0){ put[cnt++]=sum; sum=0; } } printf("%d.%d.%d.%d",put[0],put[1],put[2],put[3]); return 0; }

该代码利用ip地址规定的4个二进制转十进制的数定义了数组put来存放

用一句sum=sum*2+c-'0'直接实现字符和整形的转换和二进制和十进制的转换
在8个字符后重新赋值sum。代码很巧妙,所以很简短。

  • 课堂派指针

给定程序中,函数fun的功能是:将形参s所指字符串中的所有数字字符顺序前移,

其他字符顺序后移,处理后新字符串的首地址作为函数值返回。

#include  
#include  
#include  
#include  
char *Fun(char  *s); int main() {     char  s[80];     printf("Please input: ");     scanf("%s",s);     printf("\nThe result is: %s\n",Fun(s));     } char *Fun(char  *s) {    int  i, j, k, n;    char  *p, *t;   n=strlen(s)+1;   /* 字符串的长度,包括结束符标志 */    t=new char[n];    p=s;    j=0; k=0;    for(i=0; i

该代码用了两个数组,设置一个循环判断是否为数字,一个数组专门存放

数字。遍历完数组后用库函数strcat把两个数组结合,数字数组放前面就可以了
方法很简单,用库函数问题直接变简单了

四、本周学习总结

1.自己总结本周学习内容

  • 指针与数组共通,定义的指针如int *p,把p拿出来p[]就可以变成数组
  • 定义的指针需要初始化,不然会出现问题。
  • 定义一个指针指向另一个指针,对该指针进行赋值等操作,由于地址内容变化
    只要有关该地址的指针都会变化
  • 题目中要注意指针的地址问题,地址发生改变,还是对原地址操作会发生错误

2.罗列本周一些错题

1232486-20171215191751715-907162822.png

  • 原回答:fun(a,n)
    *n++;
  • 正确答案:fun(a,&n)
    n=n+1
    该函数定义的是指针,所以传递过去的应该是地址,所以n前要加&
    *n++表示地址加,而该题表示一个个数值所以是*n=*n+1

1232486-20171215192420433-1119600980.png

数组名是地址常量不能变

1232486-20171215192751855-935613115.png

  • 我的回答 Fun(a,x,&n)
    break;
    j>=i;
    a[*n+1}='\0'
  • 正确答案 Fun(a,x,&n)
    break;
    j>i;
    n=n+1
    循环个数没有判断好,应该是j>i
    最后要加上n=n+1;
    才能跳出循环

转载于:https://www.cnblogs.com/lzc176/p/8037830.html

你可能感兴趣的文章
如何在数据库中使用索引
查看>>
ring0
查看>>
windows虚拟机下 安装docker 踩过的坑
查看>>
使用 CXF 做 webservice 简单例子
查看>>
2017-2018-1 20155339 《信息安全系统设计基础》第8周学习总结
查看>>
socket.io 消息发送
查看>>
C# 两个datatable中的数据快速比较返回交集或差集
查看>>
关于oracle样例数据库emp、dept、salgrade的mysql脚本复杂查询分析
查看>>
一些有趣的代码
查看>>
Major Performance Impacts
查看>>
读《图解HTTP》有感-(返回结果的HTTP状态码)
查看>>
操作数栈
查看>>
转:文本分类问题
查看>>
tensorflow_python中文手册
查看>>
Vs2012在Linux应用程序开发(3):加入新平台hi3516
查看>>
adb shell am 的用法
查看>>
实现自动点击
查看>>
MVP开发模式的理解
查看>>
Unity多开的方法
查看>>
File类中的list()和listFiles()方法
查看>>