zoukankan      html  css  js  c++  java
  • Work_12

    一个数组中只有两个数字是出现一次,
    其他所有数字都出现了两次。
    找出这两个数字,编程实现。

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    
    //找数字
    void Number(int* arr, int size){
        int str1[10], str2[10], str3[2];
        //将所有的数字异或一遍,得到单独出现的数字的异或结果
        int cur = arr[0];
        for (int i = 1; i < size; i++){
            cur = cur ^ arr[i];
        }
        //找到异或结果二进制位中的一个1
        int j = 0;
        for (j = 0; j < 32; j++){
            int temp = cur & (1 << j);
            if (temp){
                break;
            }
        }
        //按照此位有无1将arr分成两组
        int m = 0;
        int n = 0;
        for (int i = 0; i < size; i++){
            if (arr[i] & (1 << j)){
                str1[m] = arr[i];
                m++;
            }
            else {
                str2[n] = arr[i];
                n++;
            }
        }
        //将两组数分别异或,找出每组中出现一次的数字
        str3[0] = str1[0];
        for (int i = 1; i < m; i++){
            str3[0] = str1[i] ^ str3[0];
        }
        str3[1] = str2[0];
        for (int i = 1; i < n; i++){
            str3[1] = str2[i] ^ str3[1];
        }
        printf("只出现一次的数字为:%d和%d", str3[0], str3[1]);
    
    }
    
    
    int main(){
        int arr[10] = { 1, 2, 2, 3, 3, 4, 4, 5, 5, 6 };
        int size = sizeof(arr) / sizeof(arr[0]);
        Number(arr, size);
    
        printf("
    ");
        system("pause");
        return 0;
    }

    喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,
    给20元,可以多少汽水。
    编程实现。

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    
    //喝汽水
    int Drink_bottle(int money){
        int bottle = money / 1;
        int drink_bottle = bottle;
        while (bottle >= 2){
            bottle = bottle - 2;
            //两个空瓶子换一瓶汽水
            drink_bottle++;
            bottle++;
        }
        return drink_bottle;
    }
    
    int main(){
        int result = 0;
        int money;
        printf("请输入钱数:");
        scanf("%d", &money);
        result = Drink_bottle(money);
        printf("该钱可以喝到的汽水数为:");
        printf("%d", result);
    
        printf("
    ");
        system("pause");
        return 0;
    }

    模拟实现strcpy

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    
    char* Strcpy(char* str1, const char* str2){
        //参数合法性的校验
        //虽然要求str1必须大于str2,但此场景下受限,无法做到
        assert(str1 != NULL);
        assert(str2 != NULL);
        int i;
        for (i = 0; str2[i] != ''; i++){
            str1[i] = str2[i];
        }
        //注意''的copy
        str1[i] = '';
        return str1;
    }
    
    int main(){
        char str1[20] = "i am a student";
        char str2[30];
        Strcpy(str2, str1);
        printf("%s", str2);
    
        printf("
    ");
        system("pause");
        return 0;
    }

    模拟实现strcat

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    
    char* Strcat(char* str1, const char* str2){
        //判断参数是否合法
        assert(str1 != NULL);
        assert(str2 != NULL);
        //寻找原字符串str1的结尾
        int i = 0;
        for (; str1[i] != ''; i++){
    
        }
        //将str2连接到str1后
        for (int j = 0; str2[j] != ''; j++, i++){
            str1[i] = str2[j];
        }
        //给str1加上'';
        str1[i] = '';
        return str1;
    }
    
    int main(){
        char str1[80] = "i am a ";
        char str2[10] = "student";
        Strcat(str1, str2);
        printf("%s", str1);
    
        printf("
    ");
        system("pause");
        return 0;
    }
  • 相关阅读:
    GAMBIT、ICEM、HYPERMESH耦合面的处理方法
    如何用hypermesh生成包含interface的流体网格
    python求数字位数的方法
    drawPython
    Python入门计划
    书法与篆刻创作结课
    易忽视的Python知识点
    Ubuntu中,wxpython的TextCtrl引发的error:_pixman_log_error
    在Ubuntu15.10中,使用wxPython的webview和JS进行交互
    PyCharm导入tensorflow包
  • 原文地址:https://www.cnblogs.com/lkimprove/p/10479103.html
Copyright © 2011-2022 走看看