为什么后面两个循环过程不让我输入就终止了
#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;
} 因为你的程序有问题。
scanf中%c只能接收一个字符,你却输入了一个字符串,然后后面的%d就接受错误了,就跳出来了。
另外scanf中几个格式化字符中间一般是不添加任何字符的。
一会儿我帮你修改一下试试 sunrise085 发表于 2020-4-28 12:25
因为你的程序有问题。
scanf中%c只能接收一个字符,你却输入了一个字符串,然后后面的%d就接受错误了,就 ...
感谢大佬{:10_298:} 你的程序有很多小问题。不一一列举了。
帮你修改了。你自己看一下吧。
#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]