| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1675 人关注过本帖
标题:关于程序运行错误,但是自己测试时输入输出却没问题
只看楼主 加入收藏
七雀
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2016-11-19
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:14 
关于程序运行错误,但是自己测试时输入输出却没问题
有一个程序,自己测试时结果都正确,但是提交完显示有运行错误的问题,自己怎么也看不出来,希望有人能帮我看看,稍微指点一下!

题目如下:
有个叫做队列的数据结构,这个队列有4 种操作:
1、将一个数字插入队尾;
2、将一个数字从队头取出并输出这个数字*131 的值;
3、将一个数字从队头取出并输出这个数字*121 的值;
4、询问现在队列有多少个元素。
数据输入
第一行一个n(0<=n<=10000),表示有n 个操作
接下来n 行有n 个操作
在进行操作2、3 的时候保证队列里至少有一个元素
数据输出
输入示例
5
1 1
1 2
2
3
4
输出示例
131
242
0
代码如下:
#include<stdio.h>
int main()
{
    int n,i,y,a[10001]={0},m=1,x,c=0,h=0;//h用以计算现存元素,c用来计算全部元素,m用来表示队首元素
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&x);
        if(x==1)
        {
            scanf("%d",&y);    //若输入的第一个数为1,则继续输入第二个数,全部元素加一,现存元素加一
            c=c+1;
            a[c]=y;
            h=h+1;
        }
        if(x==2)
        {
            if(h==0)continue;   //若输入的第一个数为2,判断是否还有现存元素,若无,不执行操作。
            else                  
            {
                printf("%d\n",a[m]*131);      //若有,输出此时的队首元素*131
                m=m+1;                         //将队首的位置向后移动一位
                h=h-1;                          //现存元素减一
            }
        }
        if(x==3)
        {
            if(h==0)continue;
            else
            {
                printf("%d\n",a[m]*121);
                m=m+1;
                h=h-1;
            }
        }
        if(x==4)printf("%d\n",h);
    }
    return 0;
}

感激不尽!!!

搜索更多相关主题的帖子: 元素 
2017-04-11 14:43
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:5 
看了一会儿,你的程序好复杂,看不懂。


[此贴子已经被作者于2017-4-11 14:51编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-11 14:49
七雀
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2016-11-19
收藏
得分:0 
回复 2楼 renkejun1942
是要删除值的 所以样例中第四步输出结果为0
我的队列就是我的数组 通过m的变化来改变队首的位置(即删除用过的元素)
2017-04-11 14:51
七雀
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2016-11-19
收藏
得分:0 
回复 2楼 renkejun1942
……orz 可能我想的复杂了 谢谢
2017-04-11 14:53
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 4楼 七雀
不知道你是否感兴趣,但还是推销一下队列的基本操作吧。
返回队列中的元素,增加一个相应的函数就行了,取read-frnot的绝对值就行了。

https://bbs.bccn.net/thread-475582-1-1.html

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-11 15:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:5 
//2、将一个数字从队头取出并输出这个数字*131 的值;
//3、将一个数字从队头取出并输出这个数字*121 的值;
总觉得有点儿奇怪,都是“队头”?
如果能贴url就好了
2017-04-11 15:02
七雀
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2016-11-19
收藏
得分:0 
回复 6楼 rjsp
是的,此时a[m]就是队头
2017-04-11 15:04
七雀
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2016-11-19
收藏
得分:0 
回复 5楼 renkejun1942
谢谢!我会去学习的~
2017-04-11 15:07
NiuYoohoo
Rank: 4
等 级:业余侠客
威 望:2
帖 子:65
专家分:216
注 册:2016-10-8
收藏
得分:5 
首先题目未给出插入时数据的范围 你假定为 num*131 < MAX_INI //有可能测试数据是个大数

2017-04-11 15:16
NiuYoohoo
Rank: 4
等 级:业余侠客
威 望:2
帖 子:65
专家分:216
注 册:2016-10-8
收藏
得分:0 
其实你的想法挺好的用数组构建队列,{虽然利用率低}//程序中应该用if else 语句或者switch 虽然都用if没错但是其执行效率会大大折扣。
2017-04-11 15:19
快速回复:关于程序运行错误,但是自己测试时输入输出却没问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027746 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved