ferocitas 发表于 2021-8-2 16:50:56

寻找两段功能相同代码的差异

有人可以帮忙看一下这两段代码有什么差异吗
在一个OJ平台上1号代码不能通过调试


1号    #include<stdio.h>
struct queue
{
      int data;
      int head,tail;
};
int main()
{
      struct queue q;
      int i,n;
      scanf("%d",&n);
      q.head=1;q.tail=1;
      for(i=1;i<=n;i++){
         scanf("%d",&q.data);
                q.tail++;}
      
      while(q.head<q.tail){
                printf("%-d ",q.data);
                q.head++;
                q.data=q.data;
                q.tail++;
                q.head++;}
      return 0;
}


2号      #include<stdio.h>

//定义队列结构体

struct Queue{

int data;

        int head;

        int tail;

};

int main()

{

        int n,i;

        //初始化队列

        struct Queue q;

        q.head=1;

        q.tail=1;

        scanf("%d",&n);//读入n

        for(i=1;i<=n;i++){//接收数据

                scanf("%d",&q.data);

                q.tail++;

        }

        //进行解密

        while(q.head<q.tail){

          //输出队首元素

                printf("%d ",q.data);

                q.head++;//队首出队

                //将下一个数移到队尾

                q.data=q.data;

                q.tail++;//队尾指针向后移动

                //再将队首出队

                q.head++;

        }

        return 0;

}
      

大马强 发表于 2021-8-2 18:59:59

一号我这里能够运行
不知道我输入的方式对不对,两个得到的结果是一样的,我就发一张图了
https://static01.imgkr.com/temp/b7a913996e0b4611be2951fee1364dd6.jpg

大马强 发表于 2021-8-2 19:26:24

#include<stdio.h>
struct queue
{
      int data;
      int head,tail;
};
int main()
{
      struct queue q;
      int i,n;
      scanf("%d",&n);
      q.head=1;q.tail=1;
      //假设接受的数据为1 2 3 4
                //即当前head=1,tail=4
      for(i=1;i<=n;i++){
         scanf("%d",&q.data);
                q.tail++;}
      
      while(q.head<q.tail){
                printf("%d ",q.data); //第一次输出 1 ||第二次输出 3 ||第三次输出 2 第三次输出 4
                q.head++; //head=2 || head =4 || head=6|| 8
                q.data=q.data; //q.data = 2 || q.data = 4 || q.data = 2 || null
                q.tail++; // tail = 6 || tail = 7 ||tail = 8|| 9
                q.head++; // head=3 || head = 5 || head = 7 || 9
                                }
      return 0;
}
做了一些注释,不太清楚它的作用,看你的二号,难道是密码学的?

ferocitas 发表于 2021-8-2 21:27:00

大马强 发表于 2021-8-2 18:59
一号我这里能够运行
不知道我输入的方式对不对,两个得到的结果是一样的,我就发一张图了

不好意思啦,可能是我没有说清楚。
对于某些数据他们都是能够运行,但是1号代码呢他可能某些数据就无法运行,所以他通不过OJ平台的测试。
但是问题是我不知道错漏在哪里,也不知道应该如何进行全面的测试

大马强 发表于 2021-8-2 21:28:58

我用dev可以运行,没有报错

ferocitas 发表于 2021-8-2 21:29:19

大马强 发表于 2021-8-2 19:26
做了一些注释,不太清楚它的作用,看你的二号,难道是密码学的?

不是。
1号和2号都是同一个目的。这两个都是根据一种规则对一组数进行重新排序
不过在一个OJ平台上1号不能通过调试。我不知道问题出在哪里

大马强 发表于 2021-8-2 21:29:43

OJ平台是啥?求科普

大马强 发表于 2021-8-2 21:55:35

那我也帮不来了,没用过,知识盲区了

ferocitas 发表于 2021-8-4 16:48:58

大马强 发表于 2021-8-2 21:29
OJ平台是啥?求科普

啊哈算法

ferocitas 发表于 2021-8-4 16:49:35

大马强 发表于 2021-8-2 21:29
OJ平台是啥?求科普

不是,是啊哈添柴
页: [1]
查看完整版本: 寻找两段功能相同代码的差异