| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 716 人关注过本帖
标题:为何这段代码在Windows下编译通不过?
取消只看楼主 加入收藏
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
结帖率:91.43%
收藏
已结贴  问题点数:20 回复次数:1 
为何这段代码在Windows下编译通不过?
这段代码是我在Linux系统下写的,在Linux平台下编译能通过,运行也正常。可是发给同学的时候同学却说编译没办法通过。该同学用的是vc 6.0

我又发给了另外一个同学,他用的貌似是vs。
编译也没能通过,而且错误信息和刚刚那位同学还不一样。

这是我的代码:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define MEMBER_MALLOC (struct member*)malloc(sizeof(struct member))

struct member
{
    int num;
    int password;
    struct member *next;
};

struct member* input(int *count_ptr, int *M_ptr)
{
    int i = 1;
    struct member *head = NULL, *tail = NULL;
    printf("请输入人数: ");
    scanf("%d", count_ptr);
    printf("请输入M: ");
    scanf("%d", M_ptr);
    printf("请依次输入密码");
    
    //创建循环链表
    for (; i <= *count_ptr; i++)
    {
        struct member *node = MEMBER_MALLOC;
        scanf("%d", &(node->password));
        node->num = i;
        node->next = NULL;

        if (NULL == head)
            head = tail = node;
        else
        {
            tail->next = node;
            tail = node;
        }

        //如果是最后一个节点,则把它的Next指向头节点
        if (i == *count_ptr)
            node->next = head;
    }
    return head;
}

void run(struct member* list, int *count_ptr, int *M_ptr)
{
    int ct = 0;             //计数器
    
    //让last指向最后一个元素,让current指向第一个元素
    struct member *current, *last;
    last = current = list;

    while (last->next != current)
        last = last->next;

    //开始删人
    while (1 != (*count_ptr - ct))
    {
        int flag;

        //找到要删除的人
        for(flag = 1; flag != *M_ptr; flag++)
        {
            current = current->next;
            last = last->next;
        }
        
        //删人,从链表中移除,计数器加一
        ct++;
        struct member* temp = current;
        current = current->next;
        last->next = current;
        printf("%d\n", temp->num);
        *M_ptr = temp->password;
        free(temp);
    }
    printf("%d\n", current->num);
    //删除最后一个人
    free(current);
}
int main()
{
    int count;              //人数
    int M;                  //M
    struct member *list = NULL;
    list = input(&count, &M);
    run(list, &count, &M);
    return 0;
}


源代码也能在这里看到:
各位同学能不能帮我编译下

[ 本帖最后由 thlgood 于 2012-9-4 16:21 编辑 ]
搜索更多相关主题的帖子: Linux member Windows 
2012-09-04 16:19
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
回复 6楼 newdos
额。。。。对对,应该是这里的问题。。我用的是gcc,变量可以不在作用域最前面声明

o(∩∩)Linux & Python 群:187367181
2012-09-05 17:09
快速回复:为何这段代码在Windows下编译通不过?
数据加载中...
 
   



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

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