《剑指offer》在mac上编译通过的代码

来源:互联网 发布:澳洲mac电脑学生打几折 编辑:程序博客网 时间:2024/06/08 08:04

电脑:MAC 64位

编译工具:xcode

2.3.1数组

#include <stdio.h>int GetSize(int data[]){    return sizeof(data);}int main(int argc, const char * argv[]){    int data1[] = {1,2,3,4,5};    int size1 = sizeof(data1);        int *data2 = data1;    int size2 = sizeof(data2);        int size3 = GetSize(data1);        printf("%d,%d,%d\n",size1,size2,size3);        return 0;}

输出结果:

20,8,8

面试题3:二维数组中的查找

1)从右上角开始找:说明

xcode中无bool,需要重新定义

#include <stdio.h>typedef enum{    false,    true}bool;bool Find(int *matrix, int rows, int columns, int number ){    bool found = false;    if(matrix != NULL && rows > 0 && columns > 0){        int row = 0 ;        int column = columns - 1 ;        while(row<rows && column>=0){            if(matrix[row*4+column] == number){                printf ("The number is %d,row = %d,column = %d\n",matrix[row*4+column],row+1,column+1);                found = true;                break;            }else if(matrix[row*4+column] > number){                --column;            }else{                ++row;            }        }    }    if(found == false){        printf("matrix have no number %d\n",number);    }    return found;}void main() {    int matrix[][4] = {1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15};    bool flag = Find((int *)matrix, 4, 4, 15);    }

结果

The number is 15,row = 4,column = 4matrix have no number 100Program ended with exit code: 0
2)从左下角开始找,可以找到全部重复的数字/找出最大最小值/查找没有的数字

#include <stdio.h>typedef enum{    false,    true}bool;bool Find(int *matrix, int rows, int columns, int number ){    bool found = false;    if(matrix != NULL && rows > 0 && columns > 0)    {        int column = 0 ;        int row = rows - 1 ;                while(matrix != NULL&& rows > 0 && columns > 0)        {            while(matrix != NULL && rows > 0 && columns > 0)            {                if(matrix[row*4+column] == number)                {                    printf ("The number is %d,row = %d,column = %d\n",matrix[row*4+column],row+1,column+1);                    found = true;                    break;                }else if(matrix[row*4+column] < number)                {                    ++column;                    if(column>3){                        break;                    }                }else                {                    --row;                }            }            --row;            ++column;            if(row<0 || column>3)            {                break;            }        }    }        if(found == false){            printf("matrix have no number %d\n",number);        }    return found;}int main() {    int matrix[][4] = {1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15};    Find((int *)matrix, 4, 4, 9);//double    Find((int *)matrix, 4, 4, 2);    Find((int *)matrix, 4, 4, 15);//max    Find((int *)matrix, 4, 4, 1);//min   Find((int *)matrix, 4, 4, 11115);//none    return 0;}

结果

The number is 9,row = 2,column = 3The number is 9,row = 1,column = 4The number is 2,row = 2,column = 1The number is 2,row = 1,column = 2The number is 15,row = 4,column = 4The number is 1,row = 1,column = 1matrix have no number 11115

面试题4:替换空格

说明:含mac上编译通过的c代码和测试用例

#include <stdio.h>void ReplaceBlank(char string[],int length){    if(string == NULL & length <= 0)    {        return;    }    int originalLength = 0;    int numberOfBlank = 0;    int i = 0;    while(string[i] != '\0')    {        ++originalLength;        if(string[i] == ' ')        {            ++numberOfBlank;        }        i++;    }    int newLength = originalLength + numberOfBlank*2;    if(newLength>length)    {        return;    }    int indexOfOriginal = originalLength;    int indexOfNew = newLength;    while (indexOfOriginal>=0 && indexOfNew>indexOfOriginal)    {        if(string[indexOfOriginal]==' ')        {            string[indexOfNew--] = '0';            string[indexOfNew--] = '2';            string[indexOfNew--] = '%';        }        else        {            string[indexOfNew--] = string[indexOfOriginal];        }        --indexOfOriginal;    }        }void main(){    char m1[30] = "We are happy.";    ReplaceBlank(m1,30);    printf("%s\n",m1);    //test2:blank in first    char m2[30] = " We are happy.";    ReplaceBlank(m2,30);    printf("%s\n",m2);    //test3:blank in last    char m3[30] = "We are happy. ";    ReplaceBlank(m3,30);    printf("%s\n",m3);    //test4:blank continue    char m4[30] = "We  are  happy.";    ReplaceBlank(m4,30);    printf("%s\n",m4);    //test5:no blank    char m5[30] = "Wearehappy.";    ReplaceBlank(m5,30);    printf("%s\n",m5);    //test6:NULL    char m6[30];    ReplaceBlank(m6,30);    printf("%s\n",m6);    //test7:NULL    char m7[30] = "";    ReplaceBlank(m7,30);    printf("%s\n",m7);    //test8:only one black    char m8[30] = " ";    ReplaceBlank(m8,30);    printf("%s\n",m8);    //test9:only 3black continue    char m9[30] = "   ";    ReplaceBlank(m9,30);    printf("%s\n",m9);}

输出结果:

We%20are%20happy.%20We%20are%20happy.We%20are%20happy.%20We%20%20are%20%20happy.Wearehappy.%20%20%20%20Program ended with exit code: 10


0 0
原创粉丝点击