C语言第九次博客作业--指针

一、PTA实验作业

题目1:两个4位正整数的后两位互换

1. 本题PTA提交列表

1233559-20171215191200293-1446005558.png

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.代码截图

1233559-20171215191129965-86828186.png

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

本题没有多大问题,就是想再找一种更简单的做法。

题目2: 输出月份英文名

1. 本题PTA提交列表

1233559-20171215201558027-887223047.png

2. 设计思路

if形参n不再月份范围内return NULL
定义指针数组*a[]并赋值十二个月份return a[n-1]

3.代码截图

1233559-20171215201532636-808881413.png

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

刚开始我用的switch语句来判断月份,后来在舍友提醒下改成了数组来存放英文并直接返回。

  • 部分正确 :月份不在范围内

解决办法:加入if判断若不在范围内,就返回NULL

题目3:过滤字符串只保留串中的字母字符

1. 本题PTA提交列表

1233559-20171215202117293-2099545293.png

2. 设计思路

定义*a存放ptr,循环变量i,计数变量count
while(*ptr)if *ptr 是字母将*ptr存放到*(a+i)中  i++else count++ 记录非字母ptr++继续循环
end
*(a+i)赋值结束符
return count非字母个数

3.代码截图

1233559-20171215202046902-328609199.png

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

这道题前面一直在对p直接判断,导致提交运行超时,后来利用另一个指针来存放符合题意的字符并返回,就不会运行超时。

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

1233559-20171217180245624-1357678741.png

三、阅读代码

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的数组仍然由小到大有序排列。

1233559-20171217223234952-1033947108.png
1233559-20171217223417733-1636594595.png

这道题尤其要注意最后一个空n=n-1,平时很容易忽略掉

转载于:https://www.cnblogs.com/lmb171004/p/8044710.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用CEOP增强的Internet Explorer 8帮助保护您的孩子

Do you want to make Internet Explorer safer and more helpful for you and family? Then join us as we look at the CEOP (Child Exploitation and Online Protection Centre) enhanced version of Internet Explorer 8. 您想使Internet Explorer对您和家人更安全&#xf…

MAC--PPTP教程

第一步点击DocK-系统设置 第二步点击网络&#xff0c;进入网络设置 第三步点击号-创建新服务&#xff0c;创建新的网络连接 第四步接口-选-类型-选-PPTP服务名称-选-然后点击-创建 第五步进入设置页面-服务器地址点击查看虚拟IP列表账户名称-输入试用帐号或是你已充值开通的帐号…

2015计算机应用基础平时作业答案,2015秋《计算机应用基础》第一次作业

2015秋《计算机应用基础》第一次作业 一、单项选择题。本大题共50个小题&#xff0c;每小题 2.0 分&#xff0c;共100.0分。在每小题给出的选项中&#xff0c;只有一项是符合题目要求的。 1. 第一台电子计算机是1946年在美国研制成功的&#xff0c;该机的英文缩写名是______。 …

页面置换算法及例题

一、页面置换算法 不适当的算法可能会导致进程发生“抖动”&#xff1a;即刚被换出的页很快又要被访问&#xff0c;需要将他重新调入&#xff0c;此时又需要再选一页调出。而此刚被调出的页面很快又被访问&#xff0c;又需将它调入&#xff0c;如此频繁地更换页面&#xff0c;以…

vista磁盘使用100%_如何在Windows 7或Vista中创建和使用密码重置磁盘

vista磁盘使用100%Forgetting your password can be an extremely frustrating situation, and we’ve already shared how to reset your password with the Ultimate Boot CD as well as the System Rescue CD, but you can prevent the situation entirely by creating a pa…

Nginx服务状态的监控

一、安装Nginx 使用源码编译安装&#xff0c;包括具体的编译参数信息。 正式开始前&#xff0c;编译环境gcc g 开发库之类的需要提前装好。 安装make&#xff1a; yum -y install gcc automake autoconf libtool make 安装g: yum install gcc gcc-c 一般我们都需要先装pcre, zl…

计算机二级高级应用这么难,计算机二级考试越来越难的实锤!真实数据告诉你到底难在哪里?...

今年3月考试成绩暂时未公布(预计在5月中旬发布)&#xff0c;通过率暂时无法得知。但是根据考后后台反馈情况&#xff0c;今年通过率可能再创新低。不管你是不是有感知&#xff0c;计算机二级通过率的确在逐年降低。近3年难度越来越大每次考试结束后后台评论最多的就是“今年的考…

windows 系统监视器_使用Windows 7中的可靠性监视器对计算机问题进行故障排除

windows 系统监视器Windows Vista introduced us to the Reliability and Performance Monitor utility to help keep track of hardware and software crashes. It’s now a stand alone utility in Windows 7 and we will take a look at how to access and use it. Windows …

powerpoint预览_如何安排PowerPoint幻灯片的时间以进行更有效的演示

powerpoint预览Delivering a presentation is not just about giving good slides, it is also about making sure that our presentation finishes by the time our audience wants to have their tea break—so practicing how long to speak for each slide is essential fo…

在Windows XP中对系统文件(页面文件和注册表)进行碎片整理

In the pursuit for performance, making sure your drive isn’t fragmented is a regular task. The problem is that Windows XP doesn’t allow certain system files to be defragmented without commercial software. What about free solutions? 在追求性能时&#xff…

计算机存有多少游戏,8G和16G的计算机内存之间有很大区别吗?玩游戏需要多少内存?...

大家好&#xff0c;我是Compatible Computer Home的小牛.计算机内存是除CPU外最重要的组件之一. 运行大型软件和多任务处理时&#xff0c;计算机内存量直接影响计算机的流畅性. 许多玩家不知道什么时候第一次购买计算机. 小牛会在今天与您讨论要购买多少内存来购买计算机.首先&…

用SmarterFox替换Internet Explorer的“加速器”

If you’ve had to use Internet Explorer 8, you’ll have noticed a couple of things. It’s getting much easier to use due to its growing number of similarities to Firefox, and it uses a clever feature called the “Accelerator” to try and give it a leg up o…

Win7下搭建外网环境的SVN服务器

最近想跟一帮朋友做点东西&#xff0c;由于几个朋友都身处异地&#xff0c;要想实现版本控制&#xff0c;只能自己搭建一个小的服务器&#xff0c;通过互联网环境来实现版本控制了。本来也在网上找了好多资料&#xff0c;但是总是缺少一些必要的信息&#xff0c;导致最后连接不…

如何在VMware Player中设置和安装Windows Home Server“ Vail”

The new Windows Home Server Beta is available to the public for testing, and you might not have an extra machine to install it on. Here we take a look at using the free VMware Player to install it so you can test it out. 新的Windows Home Server Beta可供公众…

第四章作业

1. 贪心算法&#xff1a; 理解&#xff1a;所谓“贪心”&#xff0c;即在每一步的求解中求得问题的最优解&#xff0c;成为当前局部问题的最优解。但与动态规划问题不同的地方在于&#xff0c;动态规划会根据整体最优解的情况与之前的解作比较&#xff0c;并选取整体最优解&…

三年级计算机击键要领教案,闽教版信息技术三上《下行键操作》教案

闽教版信息技术三上《下行键操作》教案教学目标[知识目标]&#xff1a;了解和掌握下行键的键位分布。[技能目标]&#xff1a;正确掌握下行键击键的姿势和指法。[情感目标]&#xff1a;培养学生养成正确的键盘操作习惯。[重点和难点]重点&#xff1a;了解下行键的手指分工 。难点…

tabnavigator_使用TabNavigator在Firefox中享受桌面Alt-Tab样式导航

tabnavigatorDo you use Alt-Tab window switching for your Windows desktop and find yourself wishing for that same functionality in Firefox? Now you can enjoy all that switching goodness in your browser with TabNavigator. 您是否在Windows桌面上使用Alt-Tab窗口…

计算机网络拓跋结构,实战 | 服务端开发与计算机网络结合的完美案例

前言大家好&#xff0c;我是阿秀后端&#xff0c;可以说是仅次于算法岗之外竞争最为激烈的岗位&#xff0c;而其中的服务端开发也是很多人会选择在秋招中投递的一个岗位&#xff0c;我想对于很多人来说&#xff0c;走上服务端开发之路的起点就是一个回声服务器了。今天带大家实…

pcu tps_Mac版Microsoft Office 2011重新定义您的TPS报告体验

pcu tpsOffice 2011 for Mac is going to be released in a couple of days, and we got our hands on the latest version already. Here’s a quick tour of some of the new features in the latest version of Office. Mac版Office 2011将在几天内发布&#xff0c;我们已经…

【转载】intellij idea如何将web项目打成war包

1、点击【File】->【Project Structure】菜单&#xff08;或使用ShiftCtrlAltS快捷键&#xff09;&#xff0c;打开【Project Structure】窗口。如下图&#xff1a; 2、在【ProjectStructure】中选择左侧的【Artifacts】页签。如下图&#xff1a; 3、点击中间上面的&#xf…