| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1973 人关注过本帖
标题:程序:比较a与b;vc编译器没有提示错误,但不能运行~~
只看楼主 加入收藏
hcanhong
Rank: 1
来 自:肇庆学院网络工程系
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-9-6
收藏
 问题点数:0 回复次数:10 
程序:比较a与b;vc编译器没有提示错误,但不能运行~~
//设A=(a1,a2...,an)和B=(b1,b2...,bn)均为顺序表,比较A与B大小
#include <stdio.h>
#include <stdlib.h>

#define LIST_INIT_SIZE 100
#define OVERFLOW 0
#define LEN sizeof(Sqlist)
typedef struct {
    char elem[LIST_INIT_SIZE];
    int length;
    int listsize;
}Sqlist;

void InitList_Sq(Sqlist *L) {
    /*构造一个空的线性表*/
    L=(Sqlist*)malloc(LEN);
    if (!L) exit(OVERFLOW);
    L->length = 0;
    L->listsize = LIST_INIT_SIZE;
} /*InitList_Sq*/

void Comparison_Sq1(int i, Sqlist *a, Sqlist *b) {
    /*比较a与b大小,其中a与b的元素数目相同*/
    int k;
    
    for(k=0;k<=i;k++) {
        if (a->elem[k] > b->elem[k]) {
            printf("A>B");break;}//if
        else if (a->elem[k] < b->elem[k]) {
            printf("A<B");break;}//else if
        else if (a->elem[k] == b->elem[k]) {
            if (i==k) printf("A=B");
            else return; }//else
    }//for
} /*Comparison_Sq1*/

void Comparison_Sq2(int i, int j, Sqlist *a, Sqlist *b) {
    /*比较a与b大小,其中a与b的元素数目不相同*/
    int k;

    if(i>j)
        for(k=0;k<=j;k++) {
            if (a->elem[k] > b->elem[k]) {
                printf("A>B");break;}//if
            else if (a->elem[k] < b->elem[k]) {
                printf("A<B");break;}//else if
            else if (a->elem[k] == b->elem[k]) {
                if (k==j) printf("A>B");
                else return;}//else
        }//for
    else if(i<j)
        for(k=0;k<=i;k++) {
            if (a->elem[k] > b->elem[k]) {
                printf("A>B");}//if
            else if (a->elem[k] < b->elem[k]) {
                printf("A<B");}//else if
            else if (a->elem[k] == b->elem[k]) {
                if (k==i) printf("A>B");
                else return;}//else
        }//for
}  /*Comparison_Sq2*/

void main()
{
    Sqlist *A=NULL, *B=NULL;
    int i=0,j=0;
    char flag;

    InitList_Sq(A); //构造空表A
    InitList_Sq(B); //构造空表B
    printf("请输入A的字母序列:\n");
    while(scanf("%c",&flag),A->listsize>=i) {
        if (flag == '\n') break;
        else {
                A->elem[i]=flag;  
                flag = NULL;
                A->length++;
                i++; }}
    printf("请输入B的字母序列:\n");
    while(scanf("%c",&flag),B->listsize>=j) {
        if (flag == '\n') break;
        else {
            B->elem[j]=flag;
            flag = NULL;
            B->length++;
            j++;} }
    /*比较:*/
    if (i==j) Comparison_Sq1(i, A, B);
    else  Comparison_Sq2(i, j, A, B);
    free(A);/*释放A*/
    free(B);/*释放B*/
}
vc编译器没有提示错误,但不能运行~~
莱鸟向高手请教为什么???
谢谢!!
搜索更多相关主题的帖子: 提示 编译 运行 
2008-09-07 17:07
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
自己调试

学习需要安静。。海盗要重新来过。。
2008-09-07 17:18
hcanhong
Rank: 1
来 自:肇庆学院网络工程系
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-9-6
收藏
得分:0 
回复 2# sunkaidong 的帖子
就是因为调试不成功,才发贴!不然,请教什么??
2008-09-07 17:19
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
是啊,调试不成功就理直气壮了不是?

提出你的疑问,不要老让别人帮你做这做那的。别人没有义务。

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-07 17:28
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
帮你把最大的问题改了吧,
其他还有一点小问题,你可以自己调试了。

void InitList_Sq(Sqlist **L) {
    /*构造一个空的线性表*/
    *L=(Sqlist*)malloc(LEN);
    if (!*L) exit(OVERFLOW);
    (*L)->length = 0;
    (*L)->listsize = LIST_INIT_SIZE;
} /*InitList_Sq*/

主函数中:
    InitList_Sq(&A); //构造空表A
    InitList_Sq(&B); //构造空表B
2008-09-07 17:58
twistheart
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-9-7
收藏
得分:0 
太长了,懒得看。

GPRS,CDMA,EDGE,WiFi,Zigbee,bluetooth,论文,尽在www.
2008-09-07 20:24
hcanhong
Rank: 1
来 自:肇庆学院网络工程系
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-9-6
收藏
得分:0 
回复 4# StarWing83 的帖子
并不是我不想调好这程序;只是我已经搞了好几天咯,都不行!!无奈之下,才向各位高手请教啊~~我们程序员总是在万不得已的情况下才去问的!!
好像编译器总是不通过:
 while(scanf("%c",&flag),A->listsize>=i) {
        if (flag == '\n') break;
        else {
                A->elem[i]=flag;  
                flag = NULL;
                A->length++;
                i++; }}
就算我改了算法,都不行!!
//设A=(a1,a2...,an)和B=(b1,b2...,bn)均为顺序表,比较A与B大小
#include <stdio.h>
#include <stdlib.h>

#define LIST_INIT_SIZE 100
#define OVERFLOW 0
#define LEN sizeof(Sqlist)
typedef struct {
    char elem[LIST_INIT_SIZE];
    int length;
    int listsize;
}Sqlist;

void InitList_Sq(Sqlist *L) {
    /*构造一个空的线性表*/
    L=(Sqlist*)malloc(LEN);
    if (!L) exit(OVERFLOW);
    L->length = 0;
    L->listsize = LIST_INIT_SIZE;
} /*InitList_Sq*/

void Comparison_Sq(Sqlist *a, Sqlist *b) {
    int i = 0;
    
    while( i < a->length  && i < b->length )
    {
    if( a->elem[i] < b->elem[i] )
    {
        printf("a < b");
        return ;
    }
    else if( a->elem[i] > b->elem[i] )
    {
        printf("a > b");
        return ;
    }
    else
    {
        i ++;
    }
    }
    if ( a->length < b->length )
    {
        printf("a < b");
        return ;
    }
    else if ( a->length > b->length )
    {
        printf("a > b");
        return ;
    }
    else
    {
        printf("a == b");
        return ;
    }
}

void main()
{
    Sqlist *a=NULL, *b=NULL;
    int i=0,j=0;
    char flag;

    InitList_Sq(a); //构造空表A
    InitList_Sq(b); //构造空表B
    printf("请输入A的字母序列:\n");
    while(scanf("%c",&flag),a->listsize>=i) {
        if (flag == '\n') break;
        else {
                a->elem[i]=flag;  
                flag = NULL;
                a->length++;
                i++; }}
    printf("请输入B的字母序列:\n");
    while(scanf("%c",&flag),b->listsize>=j) {
        if (flag == '\n') break;
        else {
            b->elem[j]=flag;
            flag = NULL;
            b->length++;
            j++;} }
    /*比较:*/
    Comparison_Sq(a, b);
    free(a);/*释放A*/
    free(b);/*释放B*/
}
2008-09-07 22:41
hcanhong
Rank: 1
来 自:肇庆学院网络工程系
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-9-6
收藏
得分:0 
[bo][un]StarWing83[/un] 在 2008-9-7 17:28 的发言:[/bo]

是啊,调试不成功就理直气壮了不是?

提出你的疑问,不要老让别人帮你做这做那的。别人没有义务。

我们初学程序员是不会随意请教高手的!
2008-09-07 22:46
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
LZ你虚心一点吧,我在5#已经帮你改好了,难道你就不能换到你的程序里试一下?还在这里斤斤计较,难道一定要给一个完整的程序你啊???

#include <stdio.h>
#include <stdlib.h>

#define LIST_INIT_SIZE 100
#define OVERFLOW 0
#define LEN sizeof(Sqlist)
typedef struct {
    char elem[LIST_INIT_SIZE];
    int length;
    int listsize;
}Sqlist;

void InitList_Sq(Sqlist **L) {
    /*构造一个空的线性表*/
    *L=(Sqlist*)malloc(LEN);
    if (!*L) exit(OVERFLOW);
    (*L)->length = 0;
    (*L)->listsize = LIST_INIT_SIZE;
} /*InitList_Sq*/

void Comparison_Sq(Sqlist *a, Sqlist *b) {
    int i = 0;
   
    while( i < a->length  && i < b->length )
    {
    if( a->elem[i] < b->elem[i] )
    {
        printf("a < b");
        return ;
    }
    else if( a->elem[i] > b->elem[i] )
    {
        printf("a > b");
        return ;
    }
    else
    {
        i ++;
    }
    }
    if ( a->length < b->length )
    {
        printf("a < b");
        return ;
    }
    else if ( a->length > b->length )
    {
        printf("a > b");
        return ;
    }
    else
    {
        printf("a == b");
        return ;
    }
}

void main()
{
    Sqlist *a=NULL, *b=NULL;
    int i=0,j=0;
    char flag;

    InitList_Sq(&a); //构造空表A
    InitList_Sq(&b); //构造空表B
    printf("请输入A的字母序列:\n");
    while(scanf("%c",&flag),a->listsize>=i) {
        if (flag == '\n') break;
        else {
                a->elem[i]=flag;  
                flag = NULL;
                a->length++;
                i++; }}
    printf("请输入B的字母序列:\n");
    while(scanf("%c",&flag),b->listsize>=j) {
        if (flag == '\n') break;
        else {
            b->elem[j]=flag;
            flag = NULL;
            b->length++;
            j++;} }
    /*比较:*/
    Comparison_Sq(a, b);
    free(a);/*释放A*/
    free(b);/*释放B*/
}
2008-09-07 23:01
hcanhong
Rank: 1
来 自:肇庆学院网络工程系
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-9-6
收藏
得分:0 
回复 9# woshiyun 的帖子
谢谢~用了指向指针的指针~~初学数据结构的我深感内疚~~~
2008-09-07 23:11
快速回复:程序:比较a与b;vc编译器没有提示错误,但不能运行~~
数据加载中...
 
   



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

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