标题:测试时发现未知错误,请大家帮帮忙,看下我程序哪里错了
只看楼主
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
结帖率:66.67%
已结贴  问题点数:10 回复次数:6 
测试时发现未知错误,请大家帮帮忙,看下我程序哪里错了
这是我的操作系统实验作业,要求模拟磁盘的移臂调度,使用的是电梯调度算法。但我在输入测试数据后未得到理想结果,请大家帮帮忙。
这是代码:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define Maxsize 100
typedef struct      //磁头信息
{
    int cur;     //当前磁头所处柱面号,初始值为53
    int direction;  //磁头移动方向 1代表由外往内,-1代表由内往外
}citou;
typedef struct       //用来储存柱面信息
{
    int a[Maxsize];
    int len;
}list;
list c1;             //储存大于磁头初始柱面的请求访问柱面,顺序由小到大
list c2;             //储存小于磁头初始柱面的请求访问柱面,顺序由大到小
void creat()
{

    int x;
    int i,j=0;
    printf("\n请输入访问柱面序列(以-1结束):\n");
    scanf("%d",&x);
    while(x!=-1)
    {
        if(x>=53)
        {
            c1.a[i++]=x;
            c1.len=i;
        }
        else
        {
            c2.a[j++]=x;
            c2.len=j;
        }
        scanf("%d",&x);
    }
    int temp;
    //将c1中的柱面序列由小到大排序
    for(i=0;i<c1.len-1;i++)
        for(j=0;j<c1.len-1-i;j++)
            if(c1.a[j]>c1.a[j+1])
            {
                temp=c1.a[j];
                c1.a[j]=c1.a[j+1];
                c1.a[j+1]=temp;
            }
    //将c2中的柱面序列由大到小排序
    for(i=0;i<c2.len-1;i++)
        for(j=0;j<c2.len-1-i;j++)
            if(c2.a[j]<c2.a[j+1])
            {
                temp=c2.a[j];
                c2.a[j]=c2.a[j+1];
                c2.a[j+1]=temp;
            }
}
void print(list *a)
{
    int i;
    printf("\n页面序列:");
    for(i=0;i<a->len-1;i++)
        printf("%d  ",a->a[i]);
}
int main()
{
    creat();
    print(&c1);
    print(&c2);

}
//测试数据: 98 183 37 122 14 124 65 67 -1

运行结果:

搜索更多相关主题的帖子: 测试 int temp list for 
2020-05-24 15:39
JabinZ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:34
专家分:180
注 册:2020-5-7
得分:8 
你的 c1,c2,x,i 什么的变量都初始化一下,再试试
2020-05-24 16:05
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
得分:0 
回复 2楼 JabinZ
感觉不是这个问题,x没有初始化的必要,我主要没把c1,c2初始化,当我把c1,c2初始化(设置len=0)运行结果还是一样的。

[此贴子已经被作者于2020-5-24 16:36编辑过]

2020-05-24 16:30
JabinZ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:34
专家分:180
注 册:2020-5-7
得分:0 
create 里面的 int i,j =0 改为 int i = 0, j = 0, 再试试吧, i 你也没初始化,

你的代码在我这里, 把main函数的 return 加上就可以跑
2020-05-24 17:04
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
得分:2 
print函数   i<a->len-1 会少输出1个的
2020-05-24 17:08
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
得分:0 
回复 4楼 JabinZ
谢谢!应该就是这个i没初始化的原因。
2020-05-24 18:22
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
得分:0 
回复 5楼 fulltimelink
谢谢!
2020-05-24 18:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501772-1-1.html




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

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