关键动量 2021-03-13 12:43 采纳率: 0%
浏览 40

链表输入后,输不出结果

输入后,输不出结果怎么回事?

 

#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;

  • 写回答

1条回答 默认 最新

  • cpp_learners 2021-03-13 14:05
    关注

    肯定输不出结果啊,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;
    
    }
    评论

报告相同问题?

悬赏问题

  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,
  • ¥15 spaceclaim模型变灰色
  • ¥15 求一份华为esight平台V300R009C00SPC200这个型号的api接口文档
  • ¥15 就很莫名其妙,本来正常的Excel,突然变成了这种一格一页
  • ¥15 字符串比较代码的漏洞
  • ¥15 欧拉系统opt目录空间使用100%
  • ¥15 ul做导航栏格式不对怎么改?