changemoney 发表于 2020-4-28 12:15:34

为什么后面两个循环过程不让我输入就终止了

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

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

typedef int Status;
typedef struct data{
        char Cityname;
        int x,y;
}data;
typedef struct Citynode{
        data data;
        struct Citynode *next;
}Citynode;
typedef struct Citynode *Citylinklist;

void Creatcitylist(Citylinklist *L,int n)
{
        Citylinklist p;
        int i;
        *L=(Citylinklist)malloc(sizeof(Citynode));
        (*L)->next=NULL;
        for(i=0;i<n;i++)
        {
                printf("请输入第%d个城市的数据,依次为名称,横坐标,纵坐标,以空格隔开\n",i+1);
                p=(Citylinklist)malloc(sizeof(Citynode));
                scanf("%c %d %d",&p->data.Cityname,&p->data.x,&p->data.y);
                //getchar();
                p->next=(*L)->next;
                (*L)->next=p;
        }
}
int main()
{
        Citylinklist L;
        int n;
        printf("请输入你想创建城市的结点数\n");
        scanf("%d",&n);
        Creatcitylist(&L,n);
        return 0;
}

sunrise085 发表于 2020-4-28 12:25:08

因为你的程序有问题。
scanf中%c只能接收一个字符,你却输入了一个字符串,然后后面的%d就接受错误了,就跳出来了。
另外scanf中几个格式化字符中间一般是不添加任何字符的。
一会儿我帮你修改一下试试

changemoney 发表于 2020-4-28 12:29:43

sunrise085 发表于 2020-4-28 12:25
因为你的程序有问题。
scanf中%c只能接收一个字符,你却输入了一个字符串,然后后面的%d就接受错误了,就 ...

感谢大佬{:10_298:}

sunrise085 发表于 2020-4-28 13:58:19

你的程序有很多小问题。不一一列举了。
帮你修改了。你自己看一下吧。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

typedef int Status;
typedef struct Data{
      char Cityname;
      int x,y;
}data;
typedef struct Citynode{
      Data data;
      struct Citynode *next;
}citynode;
typedef struct Citynode* Citylinklist;

Citylinklist Creatcitylist(int n)
{
    Citylinklist p,q;
    Citylinklist L;
    int i;
    if (n==0){
      L=NULL;
      return L;
    }
    L=(Citylinklist)malloc(sizeof(Citynode));
    printf("请输入第1个城市的数据,依次为名称,横坐标,纵坐标,以空格隔开\n");
    scanf("%s%d%d",&L->data.Cityname,&L->data.x,&L->data.y);
    L->next=NULL;
    q=L;
    for(i=1;i<n;i++)
    {
      printf("请输入第%d个城市的数据,依次为名称,横坐标,纵坐标,以空格隔开\n",i+1);
      p=(Citynode*)malloc(sizeof(Citynode));
      scanf("%s%d%d",&p->data.Cityname,&p->data.x,&p->data.y);
      //printf("%s %d %d",p->data.Cityname,p->data.x,p->data.y);
      //getchar();
      p->next=NULL;
      q->next=p;
      q=p;
    }
    return L;
}
int main()
{
    Citylinklist L,p;
    int n;
    printf("请输入你想创建城市的结点数\n");
    scanf("%d",&n);
    L=Creatcitylist(n);
    return 0;
}
页: [1]
查看完整版本: 为什么后面两个循环过程不让我输入就终止了