输入后,输不出结果怎么回事?
#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
xt;char name;
int age;
struct Node* ne
}Node,*LinkList;
LinkList date(int n)
{
LinkList p, r=NULL, list=NULL;
char num1;
int num2;
for (int i = 0; i <n; i++)
{
printf("请输入姓名:");
scanf("%s", &num1);
printf("请输入年龄:");
scanf("%d",&num2);
p = (LinkList)malloc(sizeof(Node));
p->name = num1;
p->age = num2;
p->next = NULL;
if (list == NULL)
{
list = p;
}
else
r->next = p;
r = p;
}
return (list);
}
int main()
{
int a;
Node* q;
printf("请输入学生个数:");
scanf("%d", &a);
q = date(a);
printf("姓名 年龄\n");
while(q!=NULL)
{
printf("%s",q->name);
printf("%-4d",q->age);
q=q->next;
printf("\n");
}
return 0;
肯定输不出结果啊,char类型输入你用%s怎么行呢?
还有要记得,每次输入前都要清空输入缓冲区,否则会有问题!!!
下面是我帮你改好的代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
char name;
int age;
struct Node* next;
}Node, *LinkList;
LinkList date(int n) {
LinkList p = nullptr, r = NULL, list = NULL;
char num1;
int num2;
for (int i = 0; i < n; i++) {
char c; // 每次输入前清空输入缓冲区
while ((c = getchar()) != '\n');
printf("请输入姓名:");
//scanf("%s", &num1); // 是%c,不是%s
scanf_s("%c", &num1);
printf("请输入年龄:");
scanf_s("%d", &num2);
p = (LinkList)malloc(sizeof(Node));
p->name = num1;
p->age = num2;
p->next = NULL;
if (list == NULL) {
list = p;
} else
r->next = p;
r = p;
}
return (list);
}
int main() {
int a;
Node* q;
printf("请输入学生个数:");
scanf_s("%d", &a);
q = date(a);
printf("姓名 年龄\n");
while (q != NULL) {
//printf("%s", q->name); // 是%c,不是%s
printf("%c", q->name);
printf("%10d", q->age); // 这里改成%10d效果最好。不是%-4d
q = q->next;
printf("\n");
}
return 0;
}