你写过最愚蠢的代码是?

news2025/1/17 1:19:35

最近写的一些代码,拿出来给大伙看看,毕竟丢的是我的脸。

第一个,是帮忙一个朋友看的力扣题目,然后就自己写了下

题目如下:

https://leetcode.cn/problems/median-of-two-sorted-arrays/

9c58b848ebe1adf604b29a0f4db7b4c1.png

代码写成这样

void merge(int* nums1, int m, int* nums2, int n){
    int p = m-- + n-- -1;
    printf("1,p=%d m=%d n=%d\n",p,m,n);
    while (m >= 0 && n >= 0) {
        nums1[p--] = nums1[m] > nums2[n] ? nums1[m--] : nums2[n--];
    }

    /*当m = 0的时候*/
    while (n >= 0) {
        printf("3,p=%d m=%d n=%d\n",p,m,n);
        nums1[p--] = nums2[n--];
    }
}

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
    int sum = nums1Size + nums2Size;
    int* nums12 = (int*)malloc(sum);
    if (!nums12) {
        printf("malloc error\n");
        return -0.1;
    }
    double result = 0.0;
    memset(nums12,0,sum);
    printf("nums1Size=%d nums2Size=%d num12[0]=%d\n",nums1Size,nums2Size,nums12[0]);
    memcpy(nums12,nums1,nums1Size);
    merge(nums12,nums1Size,nums2,nums2Size);

    if (sum % 2 == 0) {
        result = (nums12[sum/2 -1] + nums12[sum/2]) / 2;
    } else {
        result = (nums12[sum/2] / 2);
    }

    free(nums12);

    return result;
}

错误在下面

*** Error in `/data/study/ttt': free(): invalid next size (fast): 0x0000000000602010 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777f5)[0x7ffff7a847f5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8038a)[0x7ffff7a8d38a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7ffff7a9158c]
/data/study/ttt[0x4009b9]
/data/study/ttt[0x400a37]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7ffff7a2d840]
/data/study/ttt[0x400649]
======= Memory map: ========
00400000-00401000 r-xp 00000000 fd:11 4718834                            /data/study/ttt
00600000-00601000 r--p 00000000 fd:11 4718834                            /data/study/ttt
00601000-00602000 rw-p 00001000 fd:11 4718834                            /data/study/ttt
00602000-00623000 rw-p 00000000 00:00 0                                  [heap]
7ffff0000000-7ffff0021000 rw-p 00000000 00:00 0 
7ffff0021000-7ffff4000000 ---p 00000000 00:00 0 
7ffff75f3000-7ffff7609000 r-xp 00000000 fd:01 410135                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffff7609000-7ffff7808000 ---p 00016000 fd:01 410135                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffff7808000-7ffff7809000 rw-p 00015000 fd:01 410135                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7ffff7809000-7ffff780c000 r-xp 00000000 fd:01 412308                     /lib/x86_64-linux-gnu/libdl-2.23.so
7ffff780c000-7ffff7a0b000 ---p 00003000 fd:01 412308                     /lib/x86_64-linux-gnu/libdl-2.23.so
7ffff7a0b000-7ffff7a0c000 r--p 00002000 fd:01 412308                     /lib/x86_64-linux-gnu/libdl-2.23.so
7ffff7a0c000-7ffff7a0d000 rw-p 00003000 fd:01 412308                     /lib/x86_64-linux-gnu/libdl-2.23.so
7ffff7a0d000-7ffff7bcd000 r-xp 00000000 fd:01 412545                     /lib/x86_64-linux-gnu/libc-2.23.so
7ffff7bcd000-7ffff7dcd000 ---p 001c0000 fd:01 412545                     /lib/x86_64-linux-gnu/libc-2.23.so
7ffff7dcd000-7ffff7dd1000 r--p 001c0000 fd:01 412545                     /lib/x86_64-linux-gnu/libc-2.23.so
7ffff7dd1000-7ffff7dd3000 rw-p 001c4000 fd:01 412545                     /lib/x86_64-linux-gnu/libc-2.23.so
7ffff7dd3000-7ffff7dd7000 rw-p 00000000 00:00 0 
7ffff7dd7000-7ffff7dfd000 r-xp 00000000 fd:01 412537                     /lib/x86_64-linux-gnu/ld-2.23.so
7ffff7edd000-7ffff7edf000 rw-p 00000000 00:00 0 
7ffff7eed000-7ffff7eee000 rw-p 00000000 00:00 0 
7ffff7eee000-7ffff7ef1000 r-xp 00000000 fd:01 410062                     /lib/x86_64-linux-gnu/libonion_security.so.1.0.19
7ffff7ef1000-7ffff7ff1000 ---p 00003000 fd:01 410062                     /lib/x86_64-linux-gnu/libonion_security.so.1.0.19
7ffff7ff1000-7ffff7ff2000 rw-p 00003000 fd:01 410062                     /lib/x86_64-linux-gnu/libonion_security.so.1.0.19
7ffff7ff2000-7ffff7ff6000 rw-p 00000000 00:00 0 
7ffff7ff6000-7ffff7ffa000 r--p 00000000 00:00 0                          [vvar]
7ffff7ffa000-7ffff7ffc000 r-xp 00000000 00:00 0                          [vdso]
7ffff7ffc000-7ffff7ffd000 r--p 00025000 fd:01 412537                     /lib/x86_64-linux-gnu/ld-2.23.so
7ffff7ffd000-7ffff7ffe000 rw-p 00026000 fd:01 412537                     /lib/x86_64-linux-gnu/ld-2.23.so
7ffff7ffe000-7ffff7fff000 rw-p 00000000 00:00 0 
7ffffffde000-7ffffffff000 rw-p 00000000 00:00 0                          [stack]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

Program received signal SIGABRT, Aborted.
0x00007ffff7a42438 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
54      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.

这个硬是在周末查了好久

申请内存的时候太过于想当然了

上面的代码,需要把

int* nums12 = (int*)malloc(sum);

修改成

int* nums12 = (int*)malloc(sum*sizeof(int));

下面也需要对应修改

memset(nums12,0,sum);
memcpy(nums12,nums1,nums1Size);

正确的代码如下:

void merge(int* pnums1, int m, int* pnums2, int n){
    int p = m-- + n-- -1;
    while (m >= 0 && n >= 0) {
        pnums1[p--] = pnums1[m] > pnums2[n] ? pnums1[m--] : pnums2[n--];
    }

    /*当m = 0的时候*/
    while (n >= 0) {
        pnums1[p--] = pnums2[n--];
    }
}

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
    int sum = nums1Size + nums2Size;
    int* nums12 = (int*)malloc(sum*sizeof(int));
    double result = 0.0;
    memset(nums12,0,sum);
    memcpy(nums12,nums1,nums1Size*sizeof(int));
    merge(nums12,nums1Size,nums2,nums2Size);
    if (sum % 2 == 0)
        result = (double)(nums12[sum/2 -1] + nums12[sum/2]) / 2;
    else
        result = (nums12[sum/2]);
    free(nums12);
    return result;
}

还有,这样的一个题目

c语言中怎么求出一句话(字符串)里的最长的单词?

https://www.zhihu.com/question/561203467/answer/2724830240

char str[] = "May there be enough clouds in your life to make a beautiful sunset";

我写了这样的一段代码

#include <stdio.h>
#include <string.h>

typedef struct {
  char* p;
  char len;
} world_t;


int main() {
  char str[] = "May there be enough clouds in your life to make a beautiful sunset";
  world_t max_t = {0},temp_t = {0};
  temp_t.p = str;
  for (int i=0;i<sizeof(str);i++) {
	if ((str[i] == ' ') || (str[i] == '\0')) {
		str[i] = '\0';
		if (max_t.len < temp_t.len) {
		  	max_t = temp_t;                        temp_t = (world_t){.p = &str[i+1],.len=0,};		}	
  	} else temp_t.len++;
  }
  
  printf("%d %s\n",max_t.len,max_t.p);
  return 0;
}

我愣是找不到我的程序出在了哪里

然后还是找呀找,最后发现temp_t 搞错了判断语句

判断里面的代码,修改成下面就好了

for (int i=0;i<sizeof(str);i++) {
	if ((str[i] == ' ') || (str[i] == '\0')) {
		str[i] = '\0';
		if (max_t.len < temp_t.len) {
		  	max_t = temp_t;
		}
		temp_t = (world_t){.p = &str[i+1],.len=0,};
  	} else temp_t.len++;
  }

这是我上周末写的两个挺愚蠢的代码

10538f9635fc999a6039f1cd7a966bce.jpeg

ce0b750634231b58b84e8388e2e2a2b8.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

输入输出系统

文章目录前言前置知识实验操作实验一实验二实验三实验四实验五前言 博客记录《操作系统真象还原》第十章实验的操作~ 实验环境&#xff1a;ubuntu18.04VMware &#xff0c; Bochs下载安装 实验内容&#xff1a; 添加关中断的方式保证原子性。用锁实现终端输出。从键盘获取输…

Docker中的网络模式

使用命令docker inspect 容器id/name能看到容器的ip地址&#xff0c;使用主机和其他容器ping这个地址发现都是可以ping通的&#xff0c;但是使用本地局域网内的其他机器是无法ping通的。 Docker的默认网络模式可以分为&#xff1a;Host 模式、Bridge 模式或者 None 模式。然后来…

word中导入zotero的参考文献

平时使用Zotero管理文献&#xff0c;使用Word写完论文后想用Zotero导入参考文献&#xff0c;也方便修改参考文献格式。 Zotero 打开Zotero找到编辑-首选项 打开首选项&#xff0c;下载国标格式&#xff0c;引用-获取更多样式-搜索框&#xff1a;China Word Word中打开写的…

APSIM练习 :机会种植

该练习是设置一个播种规则&#xff0c;根据条件情况&#xff0c;自动取使用哪种作物进行轮作。 在之前的练习中&#xff0c;我们每年都会重置起始条件。我们不打算在本练习中进行此重置。相反&#xff0c;我们将研究如何根据这些不同的起始条件改变播种的内容&#xff1b;具体…

Docker简介以及安装

官方链接&#xff1a; Docker官网 Docker仓库地址 1、基本要求 docker要求Linux内核系统64位&#xff0c;内核在3.8以上 cat /etc/redhat-release uname -r 2、三要素 2.1、镜像 2.2、容器 2.3、仓库 镜像存放的地方,有点类似Maven仓库 3、安装步骤 官网指导&#xff…

最大比例(数论 最大公约数 辗转相减法)[第七届蓝桥杯省赛C++A/B组]

题目如下&#xff1a; 题解 or 思路&#xff1a; 假设题中所给的数据为 b1,b2,b3,⋅⋅⋅,bnb_1,b_2,b_3,⋅⋅⋅,b_nb1​,b2​,b3​,⋅⋅⋅,bn​,分别用第一项之后的项除以第一项&#xff0c;得到&#xff1a;b2b1,b3b1,⋅⋅⋅&#xff0c;bnb1\frac{b2}{b1},\frac{b3}{b1},⋅⋅…

【Axure教程】自动识别文件类型的上传列表

文件上传是系统中很常用的功能&#xff0c;所以今天作者就教大家在Axure中如何利用中继器&#xff0c;制作一个能自动识别常用的文件类型的上传列表。 一、效果展示 1、点击上传按钮&#xff0c;可以选择本地的文件进行上传 2、选择文件后&#xff0c;在上传列表中新增该文件…

学生用台灯应该选什么样的?看这一篇就够了~

学生在选购一款台灯时&#xff0c;最重要的考虑因素应该是什么&#xff1f;最重要是这款台灯是否真正护眼&#xff0c;价格和外观是次要的&#xff0c;可以根据预算、用途、家居风格来抉择&#xff0c;而是否护眼这一标准需要我们通过衡量台灯的光线指标来判断了。光线指标的五…

ORB-SLAM2 --- LoopClosing::SearchAndFuse函数

目录 1.函数作用 2. code及解析 3. ORBmatcher::Fuse函数解析&#xff08;闭环调用版&#xff09; 1.函数作用 将闭环相连关键帧组mvpLoopMapPoints 投影到当前关键帧组中&#xff0c;进行匹配&#xff0c;新增或替换当前关键帧组中KF的地图点。 2. code及解析 /*** brief 将…

第21章 随机游走

第21章 随机游走 随机游走的建模场景是某个对象按照随机选择的方向行走一个步数序列。 21.1赌徒破产 假设一个赌徒一开始有n美元赌注&#xff0c;他要进行一系列1美元投注。如果他赢得一局&#xff0c;则拿回他的赌注外加1美元。如果他输了&#xff0c;那么他将失去1美元。 …

MySQL中InnoDB的事务隔离

文章目录前言一、事务介绍二、事务的四大特性三、事务的隔离性四、事务隔离的实现前言 我们在实际开发中&#xff0c;执行某个业务&#xff0c;肯定不是简单的操作某一句SQL语句&#xff0c;而是多条SQL语句。那么这多条SQL语句必须是全部成功执行&#xff0c;或者全部失败。才…

[L1 - 10分合集]吃鱼还是吃肉

L1-063 吃鱼还是吃肉 分数 10 作者 陈越 单位 浙江大学 题目&#xff1a; 国家给出了 8 岁男宝宝的标准身高为 130 厘米、标准体重为 27 公斤&#xff1b;8 岁女宝宝的标准身高为 129 厘米、标准体重为 25 公斤。 现在你要根据小宝宝的身高体重&#xff0c;给出补充营养的建议…

最近发现关于计算机网络的1个秘密

最近闲着没啥事翻开之前谢希仁老师第7版的《计算机网络》这本书,结果发现了1个惊天的秘密。 首先是互联网与互连网的区别,一般我们常说的互联网是Internet,是指因特网,其起源于阿帕网。或许很多读者看到这里就觉得有什么秘密可言,不都是常识了吗?看你大惊小怪的。 我们不妨看看…

spring cloud、gradle、父子项目、微服务框架搭建---rabbitMQ延时队列(七)

总目录 https://preparedata.blog.csdn.net/article/details/120062997 文章目录总目录一、rabbit延时插件下载二、rabbit插件安装三、项目中配置延时队列四、定义消息通道五、生成消息六、监听消息&#xff0c;进行消费延时队列的配置是对上片文章的延伸扩展 https://prepare…

paddledetection推理代码结构

https://github.com/PaddlePaddle/PaddleDetection/blob/release%2F2.5/deploy/pipeline/README.mdhttps://github.com/PaddlePaddle/PaddleDetection/blob/release%2F2.5/deploy/pipeline/README.md GitHub - leeguandong/Xiaobao: videoclip&#xff0c;视频剪辑应用videocl…

Go 1.19.3 error原理简析

Go error是一个很痛的话题(真心难用) 标准库 error 的定义 // The error built-in interface type is the conventional interface for // representing an error condition, with the nil value representing no error. type error interface {Error() string }error 是一个…

windows10安装wireshark

win10安装wireshark并使用windows10安装wireshark下载WIRESHARK下载Win10Pcapwindows10安装wireshark 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知…

javaEE 初阶 — JUC(java.util.concurrent) 的常见类

文章目录1. Callable 接口1.1 Callable 的用法2. ReentrantLock2.1 ReentrantLock 的缺陷2.1 ReentrantLock 的优势3. 原子类4. 信号量 Semaphore5. CountDownLatch6. 相关面试题1. Callable 接口 类似于 Runnable 一样。 Runnable 用来描述一个任务&#xff0c;描述的任务没有…

【Spring源码】21. 关于循环依赖的N个问题

完成了applyMergedBeanDefinitionPostProcessors()方法&#xff0c;后面有一段关于判断Bean是否需要提前曝光的逻辑&#xff08;如下图红框框中部分&#xff09;在这段逻辑中涉及到了著名的循环依赖&#xff0c;提到循环依赖基本必讲三级缓存&#xff0c;好吧&#xff0c;这篇就…

CANOpen中SDO和PDO的COB-ID理解

CAN 总线是一种串行通信协议&#xff0c;具有较高的通信速率的和较强的抗干扰能力&#xff0c;可以作为现场总线应用于电磁噪声较大的场合。由于 CAN 总线本身只定义ISO/OSI 模型中的第一层&#xff08;物理层&#xff09;和第二层&#xff08;数据链路层&#xff09;&#xf…