寻找两段功能相同代码的差异
有人可以帮忙看一下这两段代码有什么差异吗在一个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;
}
一号我这里能够运行
不知道我输入的方式对不对,两个得到的结果是一样的,我就发一张图了
https://static01.imgkr.com/temp/b7a913996e0b4611be2951fee1364dd6.jpg #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;
}
做了一些注释,不太清楚它的作用,看你的二号,难道是密码学的? 大马强 发表于 2021-8-2 18:59
一号我这里能够运行
不知道我输入的方式对不对,两个得到的结果是一样的,我就发一张图了
不好意思啦,可能是我没有说清楚。
对于某些数据他们都是能够运行,但是1号代码呢他可能某些数据就无法运行,所以他通不过OJ平台的测试。
但是问题是我不知道错漏在哪里,也不知道应该如何进行全面的测试 我用dev可以运行,没有报错 大马强 发表于 2021-8-2 19:26
做了一些注释,不太清楚它的作用,看你的二号,难道是密码学的?
不是。
1号和2号都是同一个目的。这两个都是根据一种规则对一组数进行重新排序
不过在一个OJ平台上1号不能通过调试。我不知道问题出在哪里 OJ平台是啥?求科普 那我也帮不来了,没用过,知识盲区了 大马强 发表于 2021-8-2 21:29
OJ平台是啥?求科普
啊哈算法
大马强 发表于 2021-8-2 21:29
OJ平台是啥?求科普
不是,是啊哈添柴
页:
[1]