zoukankan      html  css  js  c++  java
  • c学习第4天

    今天讲了指针。*******呵呵

    指针变量所占的内存大小取决于操作系统位数。(32位系统指针占4字节)

    不同类型的指针区别主要决定指针自增运算,指针

    printf("%zu",sizeof(int));

    输出指针的时候

    int a;

    int *pi=&a;

    printf("%p",pi);

    ///////////////////////////////////////////

    1、输入10个整数,将其中最小的数与第一个数对换,把最大的数和最后一个数对换,写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。

     //在对数字进行操作的时候,我们可以传进去一个指针,指向这十个数。所以在对输入的十个数进行操作的时候,不是进行的数值的copy,而是用指针指向的同一段内存空间。所以说,是对原数组的操作。

    //1、输入10个整数,将其中最小的数与第一个数对换,把最大的数和最后一个数对换,写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。
    int num;
    int main ()
    {
        //void inputdata();
        //inputdata();
         void input(int *);
        void sorting(int *);
        int b[10];
        
        input(b);
        sorting(b);
            return  0;
    }
    //void inputdata(int *arr)
    //{
    //    
    //    for (int i=0; i<10; i++) {
    //        printf("请输入十个数:arr[%d]",i);
    //        scanf("%d",&arr[i]);
    //    }
    //    for (int i=0; i<10; i++)
    //    {
    //        printf("%d	",arr[i]);
    //    }
    //}
    
    void input(int *a)
    {
        int i=0;
       
        for(i=0;i<10;i++)
        {
             printf("请输入arr[%d]个数:
    ",i);
            scanf("%d",&a[i]);
        }
        printf("原序列为:
    ");
        for(i=0;i<10;i++)
            printf("%d ", a[i]);
        printf("
    ");
    }
    
    
    void sorting(int *a)
    {
        int i,max,min,maxnum,minnum,temp1,temp2;
        max = min = a[0];
        maxnum = minnum = 0;
        for(i=1;i<10;i++)
        {
            if(a[i] > max)
            {
                max = a[i];maxnum = i;
            }
            if(a[i] < min)
            {
                min = a[i];minnum = i;
            }
        }   printf("最大的数为%d,是第%d个数
    ",max,maxnum+1);
        printf("最小的数为%d,是第%d个数
    ",min,minnum+1);
        temp2=a[9],a[9]=max;a[maxnum]=temp2;
        temp1=a[0],a[0]=min,a[minnum]=temp1;
        printf("调整后数组序列为:
    ");
        for(i=0;i<10;i++)
            printf("%d ", a[i]);
    }

     

    2、在主函数中输入10个等长的字符串。用另一个函数对它们排序,然后在主函数输出10个已经排好的字符串。

     

    //在主函数中输入10个等长的字符串。用另一个函数对它们排序,然后在主函数输出10个已经排好的字符串。
    
    int main ()
    {
        void qsorting1(char name[4][4],int);
        char  name[4][4]={"abc","xyz","mnq","def"};
        //name[0]存储的是“abc”字符串的首地址。
        qsorting1(name, 4);
        for (int i=0; i<4; i++) {
            for (int j=0; j<3; j++) {
                printf("%c",name[i][j]);
            }
            printf("
    ");
        }
        
        return 0;
    }
    void qsorting1(char name[4][4],int LENGTH)
    {
    //  char *pc1;
    //    for (int i=0; i<len; i++) {
    //        pc=name[i];
    //        //pc1=name[i+1];
    //        for (int j=len-1; j>i; j--) {
    //            if ((strcmp(&pc[j-1], &pc[j]))>0) {
    //                *temp =pc[j-1];
    //                pc[j-1]=pc[j];
    //               pc[j]=*temp;
    //            }
    //        }
    //    }
        char temp[34];
        for (int i = 0; i < LENGTH; i++) {
            for (int j = LENGTH - 1; j > i; j--) {
                if (strcmp(name[j],name[j-1])<0 ) {
                    strcpy(temp, name[j]);
                    strcpy(name[j], name[j-1]);
                    strcpy(name[j-1],temp);
                }
            }
        }
    }

     

    面试题:

    有一字符串,包含数字与字母,编程去除数字。

    1、要求在原字符串中操作

    2、使用指针处理。

     方法一:

    void deleteNumber(char *p){
        int count = 0;
        do {
            if ( *p >='0' && *p <= '9') {
                count++;
            }else{
                *(p-count) = *p;
            }
            p++;
        } while (*(p-1)); //刚好到‘’的位置。
    }
    方法2:
    void
    delnum(char * a) { int count=0; for(int i=0;i<strlen(a);i++) { while(a[i]>='0'&&a[i]<='9') { i ++; count++; } strcpy(a+i-count,a+i); count=0; } }

    方法3:

       //有一字符串,包含数字与字母,编程去除数字。
        //1、要求在原字符串中操作
        //2、使用指针处理。
        char underdostrs[]={"ab123c4defghijklmnopqrs567tuvwxyz"};
        char *pi;
        int count=0;
        unsigned long len=strlen(underdostrs);
        pi=underdostrs;
        char str_num_arr[10]={'1','2','3','4','5','6','7','8','9','0'};
        for (int i=0; *pi!=''; i++) {
            for (int j=0;j<10; j++)
           {
                if (*pi==str_num_arr[j])
                {
                    *pi++;
                    count++;
                }
            }
            underdostrs[i]=*pi;
            *pi++;
        }
        for (int i=0; i<len-count; i++) {
            printf("%c",underdostrs[i]);
        }
        printf("
    ");
        return 0;
  • 相关阅读:
    用csc命令行手动编译cs文件
    笔录---果壳中的C#第一章
    Visual Studio2012快捷键总结
    JavaScript 二维数组排列组合2
    JavaScript 递归法排列组合二维数组2
    JavaScript 递归法排列组合二维数组
    JavaScript 二维数组排列组合
    在 CentOS6 上安装 GraphicsMagick-1.3.30
    Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources failed: Unable to load the mojo 'resources' (or one of its required components)
    java.sql.SQLException: Column count doesn't match value count at row 1
  • 原文地址:https://www.cnblogs.com/yinyakun/p/3385572.html
Copyright © 2011-2022 走看看