C语言第九次博客作业--指针
一、PTA实验作业
题目1:两个4位正整数的后两位互换
1. 本题PTA提交列表
2. 设计思路
定义循环变量i,两个数组a[4],b[4]
for i=0 to 3a[i]*p取各个位*p/=10
end
for i=0 to 3b[i]*q取各个位*q/=10
end
分别对*p和*q重新赋值
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
本题没有多大问题,就是想再找一种更简单的做法。
题目2: 输出月份英文名
1. 本题PTA提交列表
2. 设计思路
if形参n不再月份范围内return NULL
定义指针数组*a[]并赋值十二个月份return a[n-1]
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
刚开始我用的switch语句来判断月份,后来在舍友提醒下改成了数组来存放英文并直接返回。
- 部分正确 :月份不在范围内
解决办法:加入if判断若不在范围内,就返回NULL
题目3:过滤字符串只保留串中的字母字符
1. 本题PTA提交列表
2. 设计思路
定义*a存放ptr,循环变量i,计数变量count
while(*ptr)if *ptr 是字母将*ptr存放到*(a+i)中 i++else count++ 记录非字母ptr++继续循环
end
*(a+i)赋值结束符
return count非字母个数
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
这道题前面一直在对p直接判断,导致提交运行超时,后来利用另一个指针来存放符合题意的字符并返回,就不会运行超时。
二、截图本周题目集的PTA最后排名。
三、阅读代码
strcpy字符串复制函数原型
char * strcpy(char * dest, const char * src) // 实现src到dest的复制
{if ((src == NULL) || (dest == NULL)) //判断参数src和dest的有效性{return NULL;}char *strdest = dest; //保存目标字符串的首地址while ((*strDest++ = *strSrc++)!='\0'); //把src字符串的内容复制到dest下return strdest;
}
memcpy内存拷贝函数原型
void *memcpy(void *memTo, const void *memFrom, size_t size)
{if((memTo == NULL) || (memFrom == NULL)) //memTo和memFrom必须有效return NULL;char *tempFrom = (char *)memFrom; //保存memFrom首地址char *tempTo = (char *)memTo; //保存memTo首地址 while(size -- > 0) //循环size次,复制memFrom的值到memTo中*tempTo++ = *tempFrom++ ; return memTo;
}
strcpy和memcpy主要有以下3方面的区别。
1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
strcpy字符串复制函数原型
#include "assert.h"
char *strcpy(char *strDest, const char *strSrc) //使用const来约束strSrc,提高程序的健壮性。如果函数体内的语句试图改动strSrc的内容,编译器将指出错误。
{ assert((strDest != NULL) && (strSrc!= NULL)); //对传入参数strDest和strSrc进行检查,禁止空指针传入if (strDest == strSrc) return strDest; char *tempDest = strDest; while((*strDest++ = *strSrc++) != '\0'); return tempDest;
}
四、本周学习总结
1.自己总结本周学习内容。
1.1"&"与"*"互为逆运算
- "&"是取地址符
&(变量名)=>获取变量的地址
- "*"是指针声明符和间接访问运算符(取值运算符)
*(变量名)=>将变量当作地址,到相应的地址取值
1.2指针
- 定义指针变量
int *p,i;
p=&i;
p=0;
p=NULL;
p=(int *) 1732;(表示p指向地址为1732的int型变量)
指针变量就是用来储存地址的变量
指针的作用:用来传递地址,作为引用类型的变量,减少内存消耗。
1.3指针与数组
数组名就是一个地址,指向这个数据的开端
*p==a[0]
*(p+n)==a[n]
*p+=1,(*p)++,++*p将指针p所指向的变量值加1
*p++,*(p++)先取*p的值作为表达式的值,在将指针p的值加1
1.4排序和查找
- 冒泡排序
void bubble (int a[],int n)
{int i,j,t;for( i=0; i<n; i++)for( j=0; j<n-1; j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
- 选择排序
void choose (int a[],int n)
{int i,j,t;for( i=1; i<n; i++)for( j=i+1; j<n; j++)if(a[j]>a[i]){t=a[j];a[j]=a[i];a[i]=t;}
}
- 二分查找法
int Bsearch(int *p, int n, int x) \\ 二分查找函数
{ int low, high, mid;low = 0; high = n - 1; \\开始时查找区间为整个数组 while (low <= high) { \\循环条件mid = (low + high) / 2; \\ 中间位置if (x == p[mid])break; \\查找成功,中止循环else if (x < p[mid]) high = mid - 1; \\前半段,high前移 else low = mid + 1; \\后半段,low后移 } if(low <= high) return mid; \\ 找到返回下标 else return -1; \\找不到返回-1
}
1.5结构体的定义
struct time{int hour;int minute;int second;
};
struct time t;
struct time{int hour;int minute;int second;
} t;
1.6结构体嵌套
struct date{int year;int month;int day;
};
struct person{char name[256];struct date birthday;
};
1.7结构体的引用和初始化
struct student{int number;char name[256];char sex[6];int age;int grade;
};
int main()
{struct student alan={01,"alan","man",16};printf(alan.name);
}
1.8结构体数组
struct student{int number;char name[256];char sex[6];int age;int grade;
};
int main()
{struct student class[5];strcpy(alan.name,"alan");printf(alan.name);
}
2.罗列本周一些错题。
写函数fun , a数组中n个整数从小到大排列,函数功能是:从a中删除第一个遭到与x值相同的数组元素,删除后a的数组仍然由小到大有序排列。
这道题尤其要注意最后一个空n=n-1,平时很容易忽略掉
转载于:https://www.cnblogs.com/lmb171004/p/8044710.html
C语言第九次博客作业--指针相关推荐
- C语言第二次博客作业---分支结构
C语言第二次博客作业---分支结构 一,PTA实验作业 题目1.计算分段函数 本题目要求计算下列分段函数f(x)的值 1.代码 double x, result;scanf("%lf&quo ...
- 【 C语言I博客作业06】
C语言I博客作业06 这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?category=0&typeId=17324 这个作业要求在哪里 ...
- C语言博客作业--函数
C语言博客作业--函数 一,PTA实验作业 6-2 简单实现x的n次方 1.本题PTA提交列表 2.设计思路 double mypow( double x, int n )函数 (1)定义y=1,i用 ...
- C语言|博客作业06
这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?typeId=17321 这个作业要求在哪里 https://bbs.csdn.net/topi ...
- C语言|博客作业05
C语言|博客作业05 这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?typeId=17321 这个作业要求在哪里 https://bbs.cs ...
- C语言|博客作业04
C语言|博客作业04 1. 完成云班课的知识点总结作业,并给出截图. 2. 学习总结 这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?typeI ...
- C语言程序设计博客作业03
C语言程序设计博客作业03 这个作业要求在哪里 C语言程序设计作业03:第十周作业 我在这个课程的目标是 掌握二维数组和字符串的使用方法 这个作业在那个具体方面帮助我实现目标 PTA作业和日常练习 参 ...
- pta答案厦门大学C语言,C语言I博客作业02 - osc_dmzfpa0c的个人空间 - OSCHINA - 中文开源技术交流社区...
一.概括表格 问题 答案 这个作业属于那个课程 C语言程序设计I 我在这个课程的目标是 深入了解C语言,熟练掌握编译代码的方法及内容 这个作业在那个具体方面帮助我实现目标 学会用代码求华氏温度下对应的 ...
- 【C语言博客作业06】
这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?category=0&typeId=17328 这个作业要求在哪里 https://bb ...
最新文章
- 【Dual-Path-RNN-Pytorch源码分析】model的架构图
- 如何实现远程登陆,如何实现远程桌面
- linux phpize
- python之各种装饰器的使用
- Leetcode 279. Perfect Square
- Git上手:四种常见的Git协同工作方式
- Hey,微信广告收到了吗?你哪个阶层的?
- mysql nest loop伪代码_Nested Loop Join
- LintCode-73.前序遍历和中序遍历树构造二叉树
- C语言:运行中获取宏名字的技巧
- 一加6体验深度测评:一款性价比极高的旗舰
- 【优化调度】基于matlab遗传算法求解孤岛型微电网(成本最低) 调度优化问题【含Matlab源码 1163期】
- C# FTP 命令无法获取ServerU目录列表问题
- 计算机设备硬件维护税收编码,自动化设备的税收编码是多少
- FileUtils工具类常用方法
- ValueError: Sample larger than population or is negative...
- Md5加密算法的原理及应用
- 用通俗易懂的语言去解释JDK的动态代理
- 微信内置浏览器屏蔽网页链接怎么办,微信跳转外部浏览器的实现教程
- 【GDOI 2016】第四题 疯狂动物城
热门文章
- PyCharm安装开发游戏的Pygame
- 利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值...
- WPF中StringToImage和BoolToImage简单用法
- 全国计算机等级考试题库二级C操作题100套(第33套)
- java中矩阵怎么打印_在Java编程中打印二维数组或矩阵
- mysql使用DISTINCT进行去重
- static{}静态代码块与{}普通代码块和构造代码块之间的区别
- 并发执行变成串行_网易Java研发面试官眼中的Java并发——安全性、活跃性、性能...
- SQLServer常见的数学函数梳理
- 操作系统:分享10个经常用的cmd命令