赵yyyyy 发表于 2022-8-3 23:44:55

【C++】打卡帖假如语句会说话3:函数(2)(群聊版)

本帖最后由 赵yyyyy 于 2022-8-14 09:33 编辑

(小张,小王已被群管理员“C++编译器”移出群聊。)
int:int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
int:int a11,a12,a13,a14,a15,a16,a17,a18,a19,a20;
int:int a21,a22,a23,a24,a25,a26,a27,a28,a29,a30;
int:int a31,a32,a33,a34,a35,a36,a37,a38,a39,a40;
编译器:int,本群禁止刷屏,否则禁言!
int:我没在刷屏,我在执行我的代码。呜呜……
编译器:这是神马东西,怎么定义这么多变量!
int:我哪知道啊,据说是要找出1000以内所有素数,小王又作妖,打算定义1000个变量,我快气死了,他把数组弄出来不香吗?
编译器:我也快气死了,昨天我指导了这俩家伙半天,结果不知道写出什么玩意儿。
编译器:我现在才给这两人挑错呢!
编译器:哎?我昨天爆出一堆错,这两人连错都没处理完,就开始搞新的了?
int[]:可不是,现在这两人不弄函数了,又玩儿开数组了。
int:int数组,你可来了,我现在得定义1000个变量,真不知道哪来这种搞法,快帮帮我吧!
编译器:你俩先等等吧,反正他俩一时搞不成,先帮我看一下这程序有几处错。
#include<iostream>
using namespace std;
int s(int a,int b);//交换两数
{
        int tmp;
        tmp=a;
        a=b;
        return 0;
}
int s(int a,int b)//找两数最大公约数并输出
{
        int tmp;
        if(a<b){
                s(a,b)
                //TODO
        }
        while(b!=0){
                tmp=a%b;
                a=b;
                b=tmp;        //TODO
        }
        cout<<a<<endl;
        return a;
}
int s(int a,int b,int c)//找最小公倍数并输出
{
        c=a*b/s(a,b);
        return c;
        cout<<c<<endl;
}
void main()
{
        int a,b;
        bool c;
        while(cout<<"是否进行计算?如是,选择1,反之选0"<<endl,cin>>c,c!=0){
                cout<<"请输入a,b。"<<endl;
                s(a,b);//找最大公约数
                s(a,b,c);//找最小公倍数
                //TODO
        }
        return 0;
}
int:好吧,你是老大,又给我们整活了。下次能换个人来干这些事吗?
编译器:没办法,谁让每个程序都有你。还有,把这些错全找出来的有奖励哦
int:太好了老大!不会是坑吧?
编译器:绝对不会
int[]:绝(yi)对(ding)不(hui)会(you)
int[]:这是菜鸟程序员迷惑行为大赏?
int:差不多吧,咱俩先看看这些东西。
int[]:三个函数都命名成了s?要是没注释,鬼知道这些函数是干什么的。
编译器:反正我没搞明白那个是那个。
int:这应该有一处二义性错误吧?第三个有三个参数,而第一、第二个都有两个参数,会导致混淆,应该有一个二义性错误。
int[]:难道不是三个混淆?我实在看不出第三个函数中c有什么作用,还不如直接去掉,在下面定义一个中间量。
int:没作用不代表不存在,c的参与让第三个函数的参量变成了三个,和其他两个区分开来,要是去了或者赋值为一个常量,那就成三个混淆了。
int:最合理的改法应该是重起一个函数名。
int:这三个s实在看不出是什么意思。
编译器:据说第一个s是swap的意思,第二、三个s都是sort。
int:估计第二、三个函数是一个人写的。多写几个字母会疯吗?
int[]:好,这是一处,还有没有?
int:当然还有,你看第一个函数。
int[]:没问题呀?
int:老大让我们找的是错误,而不是语法错误。
int[]:没毛病呀?
int:这个函数是干什么的?
int[]:奥,我明白了,这是传值和传引用的问题,这个函数是传值的。这个函数执行完后 ,还是诸神归位,根本交换不了数。
int[]:应该改成传引用,这样这两个数就可以被交换了。
int[]:老大,应该有两处错。
编译器:你确定吗?
int[]:我确定。
编译器:给你一次机会,再说一遍,你确定吗?
int[]:我觉得没毛病。
编译器:毛病多了去了,你还说没毛病,这也太自信了吧?
int[]:嗯……我再看看
int:void什么时候跑出来定义主函数了?
void:我上次看,这样写没毛病呀?
void:那次编译器老大都通过了。
int:void,原来你在线
编译器:我可没某些编译器那么好说话,现在最新的编译器几乎都不支持void main这种写法!!!!!!!!
void:我错了[哭脸]
int:第三个函数也有点毛病。
int:只要执行到return,函数终止,也就是说这个语句根本不会被执行。
int:还有,交换数没必要返回值吧?这个函数用void定义更好,省空间。
int[]:还得你厉害,现在有五处错了。int,还有吗?
int:我再看看……好像没了。
int[]:大哥,一共五处出错。
编译器:真的吗?
int[]:没毛病。
编译器:毛病多了去了。
int:?
int[]:?+1
编译器::提示一下,有些标点有点奇怪。
int[]:emmm……靠!
https://www.chncert.cn/forum.php?mod=viewthread&tid=674&fromuid=1072162 (出处: 红客联盟)]【C++】打卡帖假如语句会说话2:函数(剧本版) https://www.chncert.cn/forum.php?mod=viewthread&tid=674&fromuid=1072162 (出处: 红客联盟)

赵yyyyy 发表于 2022-8-3 23:46:38

提示一下,C++和c都对标点有要求,,该用英文标点的使用中文标点会报错。

suhaochen 发表于 2022-8-6 07:57:01

提示一下你应该搞点最基础的,比如告诉他们哪个是固定值这种

赵yyyyy 发表于 2022-8-6 18:38:00

suhaochen 发表于 2022-8-6 07:57
提示一下你应该搞点最基础的,比如告诉他们哪个是固定值这种

好的,我会考虑的,也许在下期或留言。谢谢提醒。

932547734 发表于 2022-8-8 11:51:00

确实基础一点的比较好
页: [1]
查看完整版本: 【C++】打卡帖假如语句会说话3:函数(2)(群聊版)