嘻哈磕碜 2022-03-08 00:22 采纳率: 100%
浏览 70
已结题

为什么同样的代码在vs2022报错,vc6.0却可以


#include <stdlib.h> 
#include <string.h> 
#include <stdio.h> 
struct empNode{                /* 职工结点 */ 
    char name[20];            /* 姓名 */ 
    int salary;                /* 基本工资 */ 
    struct emp_node *next;    /* 结点指针 */ 
}; 
int size=sizeof(struct empNode); /* 结点大小 */ 
int main() 
{ 
    struct empNode *list,*p=NULL,*q=NULL,*tail=NULL; 
    char name[20]; 
    int salary,n=0; /* n: 计数器赋 0 */ 
    struct empNode * maxList(struct emp_node *list); /* 函数声明 */ 
 
    /* 建立链表 list */ 
    list=NULL; /* 设置链表为空表 */ 
    printf("输入姓名和工资(工资为 0,结束输入):\n");
    scanf("%s%d",name,&salary); 
    while(salary!=0)
    { 
        n++; /* 计数器加 1 */ 
        p=(struct empNnode *)malloc(size); /* 申请新结点 */ 
        strcpy(p->name,name);p->salary=salary;p->next=NULL; 
        if(n==1)list=p; else tail->next=p; /* 链入新结点 */ 
        tail=p; /* 尾指针后移 */ 
        scanf("%s%d",name,&salary); 
    } 
 
    /* 在两条星线间填入相应代码,调用 maxNode()函数查找链表中最高工资结点 */ 
    /**********************************************************************/ 
    
    q=maxList(list);

    /**********************************************************************/ 
 
    /* 输出查找结果 */ 
    printf("最高工资的职工信息:\n"); 
    printf("姓名:%s 工资:%d\n",q->name,q->salary); 
    return 0; 
}

struct empNode * maxList(struct empNode *list) /* 函数定义 */ 
{ 
    struct empNode *max=list,*p=list; /* max:指向最高工资结点  */ 

    /* 在两条星线间填入相应代码,查找链表中最高工资的职工信息   */ 
    /************************************************************/ 
    while(p!=NULL)    {
        if(p->salary>max->salary)
            max=p;
        p=p->next;
    }
    /************************************************************/ 
    return max; 
}
  • 写回答

1条回答 默认 最新

  • _GX_ 2022-03-08 00:37
    关注

    帮你修改好了

    
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    
    struct empNode
    {                         /* 职工结点 */
        char name[20];        /* 姓名 */
        int salary;           /* 基本工资 */
        struct empNode *next; /* 结点指针 */
    };
    
    struct empNode *maxList(struct empNode *list); /* 函数声明 */
    void destroy(struct empNode *list);
    
    int main()
    {
        struct empNode *list, *p = NULL, *q = NULL, *tail = NULL;
        char name[20];
        int salary, n = 0; /* n: 计数器赋 0 */
    
        /* 建立链表 list */
        list = NULL; /* 设置链表为空表 */
        printf("输入姓名和工资(工资为 0,结束输入):\n");
        scanf("%s%d", name, &salary);
        while (salary != 0)
        {
            n++;                                                  /* 计数器加 1 */
            p = (struct empNode *)malloc(sizeof(struct empNode)); /* 申请新结点 */
            strcpy(p->name, name);
            p->salary = salary;
            p->next = NULL;
            if (n == 1)
                list = p;
            else
                tail->next = p; /* 链入新结点 */
            tail = p;           /* 尾指针后移 */
            scanf("%s%d", name, &salary);
        }
    
        /* 在两条星线间填入相应代码,调用 maxNode()函数查找链表中最高工资结点 */
        /**********************************************************************/
    
        q = maxList(list);
    
        /**********************************************************************/
    
        /* 输出查找结果 */
        printf("最高工资的职工信息:\n");
        printf("姓名:%s 工资:%d\n", q->name, q->salary);
        destroy(list);
        return 0;
    }
    
    struct empNode *maxList(struct empNode *list) /* 函数定义 */
    {
        struct empNode *max = list, *p = list; /* max:指向最高工资结点  */
    
        /* 在两条星线间填入相应代码,查找链表中最高工资的职工信息   */
        /************************************************************/
        while (p != NULL)
        {
            if (p->salary > max->salary)
                max = p;
            p = p->next;
        }
        /************************************************************/
        return max;
    }
    
    void destroy(struct empNode *list)
    {
        while (list)
        {
            struct empNode *p = list;
            list = list->next;
            free(p);
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月8日

悬赏问题

  • ¥15 MddBootstrapInitialize2失败
  • ¥15 LCD Flicker
  • ¥15 Spring MVC项目,访问不到相应的控制器方法
  • ¥15 esp32在micropython环境下使用ssl/tls连接mqtt服务器出现以下报错Connected on 192.168.154.223发生意外错误: 5无法连接到 MQTT 代理,如何解决?
  • ¥15 关于#genesiscsheel#的问题,如何解决?
  • ¥15 Android aidl for hal
  • ¥15 STM32CubeIDE下载程序报错
  • ¥15 微信好友如何转变为会员系统?(相关搜索:小程序)
  • ¥15 c# 直接使用c++ 类库文件
  • ¥15 一个主机电脑有两个显示器,当前有两个软件主体是网页html打包的exe程序,如何通过cmd命令bat同时打开软件一个在主屏幕显示,另外一个软件在2副屏幕上显示