zoukankan      html  css  js  c++  java
  • 第二次作业

    一、学习内容总结
    通过指针的部分学习,我知道了指针的作用是用来存放地址的。指针无论定义的是哪种数据类型占用的内存空间都是8字节,和数组对比我觉得,数组字符串里的字符是可以修改的,而指针定义字符串里的内容不能修改。知道 * 和 & 是互逆的两个运算符;swap的作用是交换两个变量的值,在指针中定义一个数组,代表的是数组的第一个元素地址,数组名代表数组的首地址。在指针加减中,当指针变量指向数组中的某一个地址时,指针变量加1后指向数组的下一个元素,指针变量减1时指向数组的前一个元素。
    二、在课堂或课后编程学习遇到的问题及解决过程

    ·问题一
      在课下练习中,没有特别注意,例如:chars1[10]="1234567"; char*p; strcpy(p,s1); printf("%s",p); 在编译时没有错误,但是在运行时不对。因为使用了指针 p,但是在之前却没有对p赋值,所以不能将 s1 内容复制到 *p 中。
    解决方案:因为使用了指针 p,但是在之前却没有对 p 赋值,所以不能将s1内容复制到 *p 中。
    ·问题二
      指针中*和&符号意义还没有完全记清楚。
    解决方案:例如:在int * p=&a中*为了说明p是一个指向整形数据的变量,而在 *p=5 中 * 表示取p所指向内存的数据,所以 *p=a。
    ·问题三
      在交换函数时定义时出现错误。
    解决方案:在编程中int * temp表示声明了一个指针变量,*a表示取 a 所指单元的数据,是一个int型变量,所以两者的数据类型不匹配导致出错。
    

    三、作业
    1.

    #include<stdio.h>
    #include<string.h>
    void main()
    {
      char c,s[80];
      int i,k=0;
      gets(s);
      c=getchar();
      for(i=0;s[i]!='';i++)
      {
        if(s[i]==c)
        k++;
      }
      printf("%d",k);
    }
    

    输出截图:
    2.

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        int n=5,i,j;
        char **str;
        char s[100];
        str=(char**)malloc(sizeof(char*)*n);
        for(i=0;i<n;i++)
        {
            str[i]=(char*)malloc(sizeof(char)*100);
            printf("请输入第%d个字符串
    ",i+1);
            gets(str[i]);
        }
        puts("排序后的字符串为:");
        for(i=0;i<n;i++)
        {
            for(j=i;j<n-1;j++)
            {
                if(strcmp(str[j+1],str[j])<0)
                {
                    strcpy(s,str[j+1]);
                    strcpy(str[j+1],str[j]);
                    strcpy(str[j],s);
                }
            }
        }
        for(i=0;i<n;i++)
        {
            puts(str[i]);
        }
        for(i=0;i<n;i++)
        {
            free(str[i]);
            str[i]=NULL;
        }
        free(str);
        str=NULL;
        return 0;
    }
    

    输出截图:

    四、附加内容

  • 相关阅读:
    关于lockkeyword
    关于多层for循环迭代的效率优化问题
    Android 面试精华题目总结
    Linux基础回想(1)——Linux系统概述
    linux源代码编译安装OpenCV
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem B. Matrix Fast Power
    校赛热身 Problem B. Matrix Fast Power
    集合的划分(递推)
  • 原文地址:https://www.cnblogs.com/mayuxin/p/8734519.html
Copyright © 2011-2022 走看看