一、PTA实验作业

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

1. 本题PTA提交列表

2. 设计思路

定义循环变量i,两个数组a[4],b[4]
for i=0 to 3
a[i]*p取各个位
*p/=10
end
for i=0 to 3
b[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,平时很容易忽略掉

C语言第九次博客作业--指针的更多相关文章

  1. C第九次博客作业--指针

    一.PTA实验作业 题目1:两个4位正整数的后两位互换 1. 本题PTA提交列 2. 设计思路 3.代码截图 本题调试过程碰到问题及PTA提交列表情况说明 刚开始想到的交换是令t=a;a=b;b=t这 ...

  2. Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)

    #Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...

  3. 第九周博客作业 <西北师范大学| 周安伟>

    第九周助教作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求博客链接https://www.cnblogs.com/nwnu-daizh/p/10726 ...

  4. C语言第二次博客作业---分支结构

    一,PTA实验作业 题目1.计算分段函数 本题目要求计算下列分段函数f(x)的值: 1.实验代码 double x,result; scanf("%lf",&x); if( ...

  5. C语言第二次博客作业——分支结构

    一.PTA实验作业 题目1:计算分段函数 1.实验代码 #include<stdio.h> #include<math.h> int main(void) { double x ...

  6. 第九周博客作业<西北师范大学|李晓婷>

    1.助教博客链接:https://home.cnblogs.com/u/lxt-/ 2.作业要求博客链接:https://www.cnblogs.com/nwnu-daizh/p/10726884.h ...

  7. c语言博客作业-指针

    一.PTA实验作业 题目1: 1. 本题PTA提交列表 2. 设计思路(用代码表示扣分) 定义整型变量i,count记录平均分,实型变量sum保存总分 for i=0 to n sum = sum+* ...

  8. C语言博客作业指针

    一.PTA实验作业 题目1:统计大于等于平均分人数 本题PTA提交列表 设计思路 定义形参s存放s的首地址,n存放人数m的值,aver存放平均分aver的地址 定义i控制循环,count用来统计高于等 ...

  9. C语言博客作业—指针

    一.PTA实验作业 题目1: 求出数组中最大数和次最大数 1. 本题PTA提交列表 2. 设计思路 定义max表示范围数组中的最大数(初值设为a[0]),z表示找到的元素在数组中的位置: 定义指针*b ...

随机推荐

  1. Supervisor使用说明

    Supervisor是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程.它可以同时启动,关闭多个进程,使用起来特别的方便. 1.组成部分 s ...

  2. nginx笔记3-负载均衡算法

    1.nginx测试:先从官网下载nginx 官网网址为:http://nginx.org/  然后找到stable version的版本下载,因为这版本是最稳定的,不要去下载最新,因为不稳定,如下图: ...

  3. 3D打印技术在医疗上的实际应用与实验室研究

    2018-01-17 Chris 免费3D打印模型资源站 预计阅读时间:5-10分钟 关键字:3D打印髋关节.脊柱置换产品,3D打印技术辅助精准截骨,义齿,生物墨水(BioInk),干细胞   随着& ...

  4. dd命令的巧妙使用

    dd是一个非常使用高效的命令,他的作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 一.备份 备份整个磁盘到磁盘 #将sdx整盘备份到sdy中去 dd if=/dev/sdx of=/ ...

  5. 分布式mysql中间件(mycat)

    1.   MyCAT概述 1.1 背景 随着传统的数据库技术日趋成熟.计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建立于计算机网络之上.这时集中式数据库系统表现出它的不足: (1)集中 ...

  6. Web渗透测试(sql注入 access,mssql,mysql,oracle,)

    Access数据库注入: access数据库由微软发布的关系型数据库(小型的),安全性差. access数据库后缀名位*.mdb, asp中连接字符串应用-- "Driver={micros ...

  7. 2.5 非透明PCI桥

    PCI桥规范定义了透明桥的实现规则,本篇在第2.3.1节中详细介绍了这种桥片.通过透明桥,处理器系统可以以HOST主桥为根节点,建立一颗PCI总线树,在这个树上的PCI设备共享同一个PCI总线域上的地 ...

  8. 常用YUV转RGB代码

    常用YUV转RGB [java] view plaincopyprint? public class YuvToRGB { private static int R = 0; private stat ...

  9. 求sum=1+111+1111+........+1....111 .

    1,思路 大数相加,若直接使用int,或者long都会超出长度,因此考虑使用String存储. 2,代码 public class LargeNumAdd { public static void m ...

  10. hi3531 SDK 编译 kernel, 修改 参数

    开发环境用户指南上这么写的 3.1 内核源代码 成功安装Hi3531 SDK后,内核源代码已存放于SDK目录下的osdrv/目录中,用户可 直接进入目录进行相关操作. 3.2 配置内核 如果对内核和H ...