偶然遇到了scanf输入字符时,前面与要加上空格

news2024/11/14 15:35:22

任务描述

本关任务:给定一个含有n个学生数据元素的数组a,用头插法来快速创建整个单链表。

相关知识

创建单链表有两种方法:

  1. 先初始化一个单链表,然后向其中一个一个地插入元素,通过调用基本运算算法来创建单链表。
  2. 还可以快速创建整个单链表,称为整体建表。整体建表常用方法有两种:头插法和尾插法。

头插法是将新增结点插入在头结点之后,单链表头插法创建过程示意图如下:

头插法创建单链表的

头插法创建单链表的算法思想:

  1. 从一个空单链表(含有一个L指向的头结点)开始,读取数组a(含有n个元素)中的一个元素,生成一个新结点p,将读取的数据元素存放到新结点的数据域中。
  2. 将新结点p插入到当前链表的表头后。
  3. 再读取数组a的下一个元素,采用相同的操作建立新结点p并插入到单链表L中,直到数组a中所有元素读完为止。

注意:头插法创建的单链表L中数据结点的次序与数组a的元素次序正好相反。

定义学生数据类型及输入、输出函数如下:

typedef struct date
{
int year;
int month;
int day;
}DATE;
typedef struct student
{
int num;
char name[20];
char sex;
DATE birthday;
float score;
}STUDENT;
typedef STUDENT ElemType;
void input(ElemType &s);
void output(ElemType s);

单链表结点类型定义如下:

typedef struct LNode // 结点类型定义
{
ElemType data; //数据域
struct LNode *next; //指针域
}LNode,*LinkList; // LinkList为结构指针类型

测试说明

平台会对你编写的代码进行测试。

测试输入:

5
10010
Liyi
M
2000 5 23
45
10020
Lier
M
2001 2 3
62.5
10030
Lisan
F
2000 10 14
92.5
10040
Lisi
F
2002 7 23
87
10050
Liwu
M
1999 8 6
78

输入说明: 第一行输入为学生的个数N; 第二行开始输入N个学生的具体信息。

预期输出:

学号:10050      姓名:Liwu       性别:M  出生日期:1999-8-6       成绩:78.0
学号:10040      姓名:Lisi       性别:F  出生日期:2002-7-23      成绩:87.0
学号:10030      姓名:Lisan      性别:F  出生日期:2000-10-14     成绩:92.5
学号:10020      姓名:Lier       性别:M  出生日期:2001-2-3       成绩:62.5
学号:10010      姓名:Liyi       性别:M  出生日期:2000-5-23      成绩:45.0

输出说明: 输出为学生数据创建的单链表;每行输出一个学生的信息,输出数据的次序与输入次序正好相反。

这是我的答案1:

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

typedef struct date{
	int year;
	int month;
	int day;
}DATE;
typedef struct student{
	int num;
	char name[20];
	char sex;
	DATE birthday;
	float score;
}STUDENT;

typedef STUDENT ElemType;
void input(ElemType &s);
void output(ElemType s);

typedef struct LNnode{
	ElemType data;
	struct LNnode *next;
}LNnode,*LinkList;
void CreateHeadList(LinkList &L,ElemType a[],int n);//根据数组使用头插法创建单链表
void InitList(LinkList &L); 
void ListTraverse(LinkList L,void(*vi)(ElemType));

int main(){
	int n;
	LinkList head;
	ElemType a[100];
	scanf("%d",&n);
	for(int i = 0;i<n;i++){
		input(a[i]);
	}
	CreateHeadList(head,a,n);
	ListTraverse(head,output);
	return 0;
} 

void input(ElemType &s){
	scanf("%d",&(s.num));
	scanf("%s",s.name);
	scanf(" %c",&(s.sex));//注意这里加了一个空格
	scanf("%d%d%d",&(s.birthday.year),&(s.birthday.month),&(s.birthday.day));
	scanf("%f",&(s.score));
}

void output(ElemType s){
	printf("学号:%d\t姓名:%s\t性别:%c\t",s.num,s.name,s.sex);
	printf("出生日期:%d-%d-%d\t成绩:%.1f\n",s.birthday.year,s.birthday.month,s.birthday.day,s.score);
}

void InitList(LinkList &L){
	L = new LNnode;
	L->next = NULL;
}

void ListTraverse(LinkList L,void(*vi)(ElemType)){
	LinkList p  = L->next;
	while(p){
		vi(p->data);
		p = p->next;
	}
	printf("\n");
}

void CreateHeadList(LinkList &L,ElemType a[],int n){
	InitList(L);
	for(int i = 0;i<n;i++){
		ElemType e = a[i];
		LNnode *A = new LNnode;
		A->data = e;
		A->next = NULL;
	
		A->next = L->next;
		L->next = A;
	}
}

scanf输入字符,前面加了空格没有出现任何问题。现在演示不接空格的情况

scanf("%c",&(s.sex));

看到没结果变得杂乱无章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot-vue的毕业论文管理系统

TOC springboot251基于springboot-vue的毕业论文管理系统 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化…

海康VisionMaster使用学习笔记1-本地图像导入及参数设置

前言 原计划直接学习海康相机二次开发,发现先学习使用海康VisionMaster很有必要,与其他相机工具还有用法不太相同.开始记录一下海康VisionMaster使用学习笔记. 本地图像导入及参数设置 本地图像导入 在工具箱中找到采集 拖取图像源模块到流程编辑区域 双击图像源,选择图像源…

STM32cubeMX配置Systick的bug

STM32cubeMX版本&#xff1a;6.11.0 现象 STM32cubeMX配置Systick的时钟&#xff0c;不管选择不分频 还是8分频。 生成的代码都是一样的&#xff0c;代码都是不分频。 即不管选择不分频还是8分频&#xff0c;Systick都是使用的系统时钟 函数调用 HAL_Init() → HAL_Init…

【深度学习】单层神经网络

单层神经网络 神经元感知机 1943年&#xff0c;心理学家McCulloch和数学家Pitts共同发表了神经网络的开山之作A Logical Calculus of the Ideas Immanent in Nervours Activity1&#xff0c;提出了神经网络的第一个数学模型——MP模型。该模型也成为了人工神经网络的基础。 神经…

ELK学习笔记

ElasticStack分布式日志系统概述 Elasticsearch: 一个分布式搜索引擎&#xff0c;能够快速存储、搜索和分析大量数据。核心概念包括索引&#xff08;Index&#xff09;、文档&#xff08;Document&#xff09;和分片&#xff08;Shard&#xff09;。使用 RESTful API 进行数据操…

滑动窗口记录左右的最大值

前言&#xff1a;看到这个题目的时候分析了一下&#xff0c;就是最大值问题&#xff0c;但是要注意分类讨论 以后遇到离散化的问题&#xff0c;还可以开一个map来记录存在的点&#xff0c;免得二分查找的点不存在 #include<bits/stdc.h> using namespace std;const int …

欧科云链研究院对话:风浪越大鱼越贵—链上数据洞悉加密市场规律

作者 Hedy 出品 OKG Research “我们从来就不是理性人。但可以用最简单的工具——链上数据做‘最猛’的分析。” 在经历了超级宏观周之后&#xff0c;金融市场产生了巨大的震荡&#xff0c;加密市场的表现也越来越受到宏观经济因素的影响。欧科云链研究院OKG Research 集结多…

【多模态大模型】LLaMA in arXiv 2023

一、引言 论文&#xff1a; LLaMA: Open and Efficient Foundation Language Models 作者&#xff1a; Meta AI 代码&#xff1a; LLaMA 特点&#xff1a; 该方法在Transformer的基础上增加了Pre-normalization (RMSNorm)、SwiGLU activation function (SwiGLU)、Rotary Embed…

Redis远程字典服务器(5) —— list类型详解

目录 一&#xff0c;基本情况 二&#xff0c;list常用命令 2.1 lpush&#xff0c;lrange 2.2 对于“下标越界”的思考 2.3 lpushx&#xff0c;rpush&#xff0c;rpushx 2.4 lpop&#xff0c;rpop 2.5 lindex&#xff0c;linsert&#xff0c;llen 2.6 lrem 2.7 ltrim…

【JavaEE】深入浅出:Spring Boot配置文件全解析

目录 SpringBoot 配置⽂件配置⽂件作⽤SpringBoot配置⽂件 配置⽂件快速⼊⼿配置⽂件的格式properties 配置⽂件说明properties 基本语法读取配置⽂件properties 缺点分析 yml 配置⽂件说明yml 基本语法yml 使⽤进阶yml 配置不同数据类型及 null配置对象配置集合配置Map yml优缺…

clickhouse集群+Zk优化-解决只读模式,主节点磁盘增长快

问题1&#xff1a;数据库进入只读模式 最近在项目中使用clickhouse的时候&#xff0c;遇到了一个批量插入后报错的问题。报错的内容是数据库进入了只读模式&#xff0c;导致数据写不进去。发现有大量的批量写入报错日志信息。&#xff08;关键异常信息&#xff1a;DB::Exceptio…

数据库行转列

一、行转列 1、使用case…when…then 2、使用SUM(IF()) 生成列 3、使用SUM(IF()) 生成列 WITH ROLLUP 生成汇总行 4、使用SUM(IF()) 生成列&#xff0c;直接生成汇总结果&#xff0c;不再利用子查询 5、使用SUM(IF()) 生成列 UNION 生成汇总行,并利用 IFNULL将汇总行标题…

【安卓】Service生命周期与前台活动

文章目录 Service生命周期使用前台Service 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站。 Service生命周期 在项目的任何位置调用了Context的startService()方法&#xff0c;相应的Se…

安卓好软-----开源的跳开屏广告工具 无需root 权限

GKD 开源项目。 目前最新版本是1.8.0 这款工具是一款免费开源简洁多规则的自动跳过广告的软件。简而言之&#xff0c;基于预设的定时更新订阅规则快照功能&#xff0c;实现识别并自动点击跳过任何开屏广告及点击关闭应用内部任何弹窗广告&#xff0c;如关闭某些APP开屏和内含推…

ITSS服务经理与ITSS服务工程师的岗位职责分析

信息技术服务标准&#xff08;ITSS&#xff09;是一套全面而系统的规范&#xff0c;旨在指导和标准化信息技术服务的提供。 由信息技术服务标准工作组精心制定&#xff0c;这些标准不仅总结了行业的最佳实践&#xff0c;还提升了从事信息技术服务研发与应用的各类组织自主创新…

iOS的App启动详细过程(底层知识)

1.虚拟内存 & ASLR 在早期计算机中数据是直接通过物理地址访问的&#xff0c;这就造成了下面两个问题 1.内存不够用 2.数据安全问题 内存不够 ---> 虚拟内存 虚拟内存就是通过创建一张物理地址和虚拟地址的映射表来管理内存&#xff0c;提高了CPU利用率&#xff0c;…

【Python快速入门和实践012】Python常用脚本-目标检测之查看数据集标签类别及对应数量

一、功能介绍 这段代码的功能是从指定的目录中读取所有的XML文件&#xff0c;并统计这些文件中特定标签&#xff08;<object>标签内的<name>标签&#xff09;的内容和出现次数。 二、代码 import os import xml.etree.ElementTree as ET import globdef count_nu…

SAK-TC277TP-64F200N DC:32位RAM微控制器、常用于消费者应用

描述&#xff1a; SAK-TC277TP-64F200N DC属于第一代Aurix TC27xT产品。其创新多核心架构基于多达三个独立32位TriCore CPU&#xff0c;专为满足极高的安全标准&#xff0c;同时大幅提高性能而设计。TC27xT系列产品配备200 MHz TriCore、5V 或3.3V 单电压供电和强大的通用定时器…

【Linux】中的软件安装:深入探索RPM、SRPM与YUM

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Linux的起源与发展 2、RPM、SRPM与YUM的简要介…

【Redis】数据类型详解及其应用场景

目录 Redis 常⻅数据类型预备知识基本全局命令小结 数据结构和内部编码单线程架构引出单线程模型为什么单线程还能这么快 Redis 常⻅数据类型 Redis 提供了 5 种数据结构&#xff0c;理解每种数据结构的特点对于 Redis 开发运维⾮常重要&#xff0c;同时掌握每种数据结构的常⻅…