zoukankan      html  css  js  c++  java
  • C博客作业05--指针

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业05--指针
    这个作业的目标 学习指针相关内容
    姓名 宋宇龙

    0.展示PTA总分(0----2)

    1.本章学习总结(3分)

    1.1 指针定义、指针相关运算、指针做函数参数。

    指针定义:
    int *p;float *fp;char *cp;

    指针相关运算:
    int p,a=3;
    p=&a; //&取地址运算符
    (1)&:表示取地址
    :表示取内容
    (2)&p与&a相同,是地址
    指针做函数参数:
    void swap2(int
    px,int *py)
    {
    .......
    }
    调用: swap2(&a,&b);

    1.2 字符指针

    指针如何指向字符串:

    char sa[]="array";
    const char* sp="point";

    printf("%s",sa); array
    printf("%s",sp); point
    printf("%s ","string"); string

    printf("%s",sa+2); ray
    printf("%s",sp+3); nt
    printf("%s ","string"+1); tring

    总结:数组名sa、指针sp、字符串"string"的值都是地址
    printf("%s",地址);

    字符串相关函数:

    string.h
    字符串复制:strcpy(str1,str2);

    解决溢出问题:strncpy(str1,str2,n);//最多复制n个字符

    字符串连接:strcat(str1,str2);


    解决溢出问题:strncat(str1,str2,n);//最多追加n个字符到str1

    字符串比较:strcmp(str1,str2);

    if(strcmp(str1,str2)>0){} //比较字符串的内容
    if(strcmp(str1,str2)>0)
    if(strcmp(str1,str2)<0)
    if(strcmp(str1,str2)=0)
    strcmp(str1,str2) //比较字符串的大小
    从首项开始比较ASCII码,若相等继续向后比较,若str1大于str2则返回1,等于返回0,小于返回-1

    求字符串长度:strlen(str);
    计算字符串的有效长度,不包括''

    strbrk(str1,str2) 检索字符串str1中第一个匹配字符串str2中字符的字符

    strrchr(str,c) 参数str所指向的字符串中搜索左后一次出现字符c的位置

    strstr(str1,str2)字符串str1中查找第一次出现字符串str2的位置

    type.h

    islower() 如果c有相对应的小写字母,则该函数返回c的小写字母,否则c保持不变///???

    toupper() 如果c有相对应的大写字母,则该函数返回c的大写字母,否则c保持不变
    //将字符串中的所有大写所有大写字符转换成小写字符
    include <stdio.h>
    include <string.h>
    include <ctype.h>

    int main() {
    char input[] = "JOUrnalDev";
    char output[256];

    // Get the input size
    int size = strlen(input);
    
    for (int i=0; i<size; i++)
        // Store the upper case letters to output[i]
        output[i] = toupper(input[i]);
    
    printf("Input: %s
    ", input);
    printf("Output: %s", output);
    return 0;
    

    }

    //Input: JOUrnalDev
    //Output: JOURNALDEV

    isdigit() 检测是否是十进制数字字符,如果是返回非零值,否则返回0

    stdlib.h

    atoi():(该函数返回转换后的长整数,如果没有执行有效的转换,则返回零)

    1.3 指针做函数返回值

    char* p;

    return p;

    1.4 动态内存分配

    stdlib.h
    int* p;
    p=(int)calloc(n,sizeof(int))在堆中分配n个连续空间,每一储存空间的长度为sizeof(int),并全部初始化为0
    p=(
    int)calloc(n,sizeof(int))分配一连续空间,不初始化
    free(p) 当某个动态储存空间不在用时,及时释放

    1.5 指针数组及其应用

    double ,a[2],p,q;
    p=&a[0];
    q=p+1;
    printf("%d",q-p); 指针p和q之间的元素个数
    printf("%d",(int)q-(int)p); 指针p和q之间的字节数 (int)q为地址值

    1.6 二级指针

    a[3][3]
    a[i]表示一维数组,每行地址第一个元素地址
    二维数组名a表示指向第一行地址的地址,所以是二维地址
    a:二级指针,指向a[0]
    a+i 指a[i],二级指针
    *(a+i) 即a[i],表示第i行首元素地址,是一级指针
    *(a+i)+j 即a[i]+j=&a[i][j],第i行第j个元素的地址,一级地址
    **(a+i)即a[i][0]
    ((a+i)+j)即a[i][j]
    a+i+j 第i+j行二级地址

    二维数组名a,int** p;
    a+i 二级地址
    a[i] 一级地址
    (a+i)=a[i]
    一级地址
    运算后就是内容

    1.7 行指针、列指针

    行指针:
    形式:int (p)[n]
    含义:p为指向含n个元素的一维数组的指针变量,二级指针
    a[i][j]=
    ((p+i)+j)=((p+i))[j]=p[i][j]

    eg.(*(p+1))[0]=a[1][0]

    列指针:
    int a[2][3]
    形式:int* p;p=a[0]
    *(p+i)表示离a[0][0]第i个位置的元素

    2.PTA实验作业(7分)

    2.1 题目名1(2分)

    6-9 合并两个有序数组(2) (15分)

    2.1.1 伪代码

    2.1.2 代码截图

    2.1.3 找一份同学代码(尽量找思路和自己差距较大同学代码)比较,说明各自代码特点



    我写的代码虽然看起来段,但运算量大
    同学写的代码运算时间短

    2.2 题目名2(2分)

    7-5 删除字符串中的子串 (20分)

    2.2.1 伪代码

    2.2.2 代码截图


    2.2.3 找一份同学代码(尽量找思路和自己差距较大同学代码)比较,说明各自代码特点。


    我写的代码太长了,没有用新学的函数strstr()

    2.3 题目名3(3分)

    选择说反话-加强版这题介绍字符指针操作如何操作字符串。并说明和超星视频做法区别。

    2.3.1 伪代码

    2.3.2 代码截图

    自己写的

    网上的

    2.3.3 请说明和超星视频做法区别,各自优缺点。

    就挺好!

  • 相关阅读:
    音乐
    脚本注释的作用
    JavaScript状态栏冒泡
    JavaScript动态显示时间
    正则表达式
    JavaScript数组的最大长度
    加密(编码)web.config中的信息(如:连接字符串)
    JavaScript实现EMAIL功能
    JavaScript检测分辨率
    JavaScript如何给网页滚动条加上颜色?
  • 原文地址:https://www.cnblogs.com/songyvlong/p/14198959.html
Copyright © 2011-2022 走看看