用结构体解决实际问题中构造数据类型

news2024/11/24 17:07:31

用结构体解决实际问题中构造数据类型。

  1. 实验内容

(1)题目:编写input()和output()函数输入,输出5个学生的数据记录。学生数据定义如下:

#define N 5

struct student

{ char num[6];

char name[8];

int score[4];

} stu[N];

 input(struct student stu[])

{

int i,j;

for(i=0;i<N;i++)

{

 printf("\n please input %d of %d\n",i+1,N);

printf("name:\n");

 scanf("%s",stu[i].name);

 printf("num:\n");

 scanf("%s",stu[i].num);

for(j=0;j<3;j++)

{

printf("score %d\n",j+1);

scanf("%d",&stu[i].score[j]);

}

printf("\n");

}

}

print(stu)

 struct student stu[];

{

 int i,j;

 for(i=0;i<N;i++){

 printf("%-6s%-10s",stu[i].num,stu[i].name);

 for(j=0;j<3;j++){

printf("%-8d",stu[i].score[j]);

}

printf("\n");

}

}

int main(){

input(stu);

output(stu);

}

实验结果:

 

(2)根据定义类型,找到年龄最大的人,并输出。

#define N 4

#include "stdio.h"

static struct man

{ char name[20];

int age;

} person[N]={"li",18,"wang",19,"zhang",20,"sun",22};

main()

{

struct man *q,*p;

int i,m=0;

p=person;

for (i=0;i<N;i++)

{

if(m<p->age)

q=p++;

m=q->age;

}

printf("%s,%d",(*q).name,(*q).age);

return 0;

}

实验结果:

 

(3)题目:看下面代码,写出运行结果(结构体变量传递)。

1.程序分析:     

2.程序源代码:

#include "stdio.h"

struct student

{ int x;

char c;

} a;

f(struct student b)

{

b.x=20;

b.c='y';

printf("%d,%c\n",b.x,b.c);

}

main()

{a.x=3;

a.c='a';

f(a);

printf("%d,%c\n",a.x,a.c);

}

(4)题目:有五个学生(定义如下),每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩并输出。

#include "stdio.h"

struct student

{ char num[6];

char name[8];

int score[3];

float avr;

} stu[3];

main()

{

int i,j,sum;

for(i=0;i<3;i++)

{

printf("\n please input No.%d score:\n",i);

printf("stuNo:");

scanf("%s,stu[i].num");

printf("name:");

scanf("%s,stu[i].name");

sum=0;

for(j=0;j<3;j++)

{

printf("score %d",j+1);

scanf("%d,stu[i].score[j]");

sum+=stu[i].score[j];



}

stu[i].avr=sum/3.0;

printf("average score %f",stu[i].avr);

 }

printf("score output\n");

}

  编写程序时,不可避免的会犯错误。每一个程序都离不开反复的调试、修改最终才能完成,所以说,调试程序是编程过程中必不可少的一个过骤,

1.语法错误

在计算机科学中,语法错误是指程序员的语法有误,编译器或解释器在词法分析时无法将其转换为适当的编程语言。在编程语言中,语法错误一定只在编译期出现。

每行包含了一个学生的学号(整数)、名字(长度不超过19的无空格字符串)和3门课程的成绩(0至100之间的整数)。

结构体变量作为函数参数[实参与形参]时,形参结构体变量成员值的改变不影响对应的实参构体变量成员值的改变。

    结构体数组或结构体指针变量作为函数参数时,形参结构体数组元素成员值的改变将影响对应的实参构体数组成员值的改变。


   结构体变量可作为函数的参数,函数可返回一结构体类数据

   p=&b; 使结构体指针变量p指向结构体变量b的空间。

  p->num:表示通过指针变量引用结构体变量b的成员num。

   p=a;或p=&a[0];将结构体指针变量指向结构体数组a。


2.语义(逻辑)错误
  与语法错误不同的是,语义错误符合语法规范,代码能通过编译,但逻辑思维有问题,运行结果与预期不符。语义错误的唯一表现就是错误的运


  可能是语句中出现了差错(比如公式写错)、算法中的错误,甚至选择了错误的算法。此外,还有一些其他的原因,如类型转换错误变量作用域错误、遗漏的代码段、对问题或需求的理解有误等等。

如果公式stu[i].avr=sum/3.0;错误,会导致运行结果与预期不符,所以一定要保证公式无误,才能的得出正确的结果。


 

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

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

相关文章

anaconda安装paddle(安装CUDA,CUDNN)

前言 为什么会写这样一篇呢&#xff0c;应该早晚会用到paddlelite&#xff0c;所以paddle还是要学的&#xff0c;与其在飞桨平台上跑&#xff0c;不如在自己电脑上跑。我以为安装paddle只需要三行代码&#xff1a; # 打开Anaconda Prompt conda create -n paddle python3.9 c…

C++异常及异常优缺点

&#x1f9f8;&#x1f9f8;&#x1f9f8;各位大佬大家好&#xff0c;我是猪皮兄弟&#x1f9f8;&#x1f9f8;&#x1f9f8; 文章目录一、C语言传统的处理错误的方式二、C异常1.throw catch2.异常的抛出和捕获3.异常的抛出和捕获原则4.函数调用链 异常 栈展开匹配原则5.异常的…

微信小程序怎样开发?【小程序开发】

说到微信小程序&#xff0c;很多公司企业商家都会有自己的微信小程序&#xff0c;已经是他们的标配了。那么还没有自己的微信小程序的小伙伴&#xff0c;也在筹备着开发小程序。那么微信小程序怎样开发的呢&#xff0c;今天就教大家一个比较简单的开发方法。 微信小程序怎样开…

Linux进程通信之共享内存

一、共享内存之原理 1.是在物理内存中开辟了一片空间&#xff1b; 2.不同的进程通过页表将物理内存空间映射到自己的进程虚拟地址空间之中 3.不同的进程可以通过操作自己的虚拟地址空间中的虚拟地址去操作共享内存&#xff08;物理地址&#xff09; 共享内存是最快的进程之间…

为什么计算机中的负数要用补码表示?

本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 提问。 前言 大家好&#xff0c;我是小彭。 在前面的文章里&#xff0c;我们聊到了计算机的冯诺依曼架构的 3 个基本原则。其中第 1 个原则是计算机中所有信息都是采用二进制格式的编…

【在Spring MVC框架中,关于限制请求方式】

目录 1.关于限制请求方式 2. 附&#xff1a;关于GET和POST请求方式 1.关于限制请求方式 在Spring MVC框架中&#xff0c;RequestMapping注解的主要作用是配置请求路径&#xff0c;除此以外&#xff0c;还可以配置请求方式&#xff0c;例如&#xff1a; RequestMapping(value…

【Linux常见指令1】

目录&#xff1a;前言常用指令ls指令whoami && pwdcdtouch &#xff08;触摸&#xff09;mkdir &#xff08;make directory&#xff09;rmdir && rm (remove)mv(move 移动)cp(copy 拷贝)stat &#xff08;统计&#xff09;nanoechogccman&#xff08;重要&…

如何在一台服务器同一个端口运行多个pgbouncer

PGbouncer是Postgresql数据库最常用的一款连接池软件&#xff0c;但是它是单进程的&#xff0c;所以只能占用一颗CPU资源&#xff0c;会造成CPU资源的浪费。PGbouncer有方法在同一台服务器的同一个端口运行多个进程实例&#xff0c;可以让资源得到充分利用。 先看下一个pgbounc…

【愚公系列】2022年12月 使用win11系统自带SSH,远程控制VMware中Liunx虚拟机系统

文章目录前言1.cpolar简介2.cpolar功能一、使用win11系统自带SSH&#xff0c;远程控制VMware中Liunx虚拟机系统1.注册cpolar账号2.下载最新版Ubuntu系统3.Ubuntu系统安装curl4.Ubuntu系统安装cpolar5.Ubuntu开启SSH6.WIN11测试SSH总结前言 身为开发人员&#xff0c;虚拟化系统…

Java基础之《netty(6)—NIO快速入门》

一、案例 1、编写一个NIO入门案例&#xff0c;实现服务器端和客户端之间的数据简单通讯&#xff08;非阻塞&#xff09; 2、目的&#xff1a;理解NIO非阻塞网络编程机制 3、代码 NIOServer.java package netty.niostart;import java.io.IOException; import java.net.InetSoc…

死锁问题【javaEE初阶】

什么是死锁&#xff1f; 所谓死锁&#xff0c;是指多个进程在运行过程中因争夺资源而造成的一种僵局&#xff0c;当进程处于这种僵持状态时&#xff0c;若无外力作用&#xff0c;它们都将无法再向前推进。 因此我们举个例子来描述&#xff0c;如果此时有一个线程A&…

【pen200-lab】10.11.1.217

pen200-lab 学习笔记 【pen200-lab】10.11.1.217 &#x1f525;系列专栏&#xff1a;pen200-lab &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月30日&#x1f334; &#x1f36d;作…

node.js的认识与安装

一、node.js的认识 &#x1f4d6; 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于 Chrome JavaScript 运行时建立的一个开源的、跨平台的JavaScript 运行时环境。 Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境&#xff0c;基于 Google 的 V8 引…

ZMQ之脱机可靠性--巨人模式

当你意识到管家模式是一种非常可靠的消息代理时&#xff0c;你可能会想要使用磁盘做一下消息中转&#xff0c;从而进一步提升可靠性。这种方式虽然在很多企业级消息系统中应用&#xff0c;但我还是有些反对的&#xff0c;原因有&#xff1a; 1、我们可以看到&#xff0c;懒惰海…

【JS】数据结构之栈

文章目录基本介绍代码实现基本介绍 内存中的堆栈和数据机构中的堆栈不是一个概念&#xff0c;内存中的堆栈是真实存在的物理区&#xff0c;数据结构中的堆栈是抽象数据存储结构。 栈&#xff1a;是一种受限制的线性表。他遵循后进先出的原则&#xff08;LIFO&#xff09;其限制…

神仙级编程神器,吹爆

Visual Studio 编程领域公认的“最强IDE”&#xff0c;Visual Studio是目前最流行的Windows平台应用程序的集成开发环境&#xff0c;提供了高级开发工具、调试功能、数据库功能和创新功能&#xff0c;帮助在各种平台上快速创建当前最先进的应用程序&#xff0c;开发新的程序。 …

【ODX介绍】-5-用于Flash刷写的ODX-F文件概述

总目录:(单击下方链接皆可跳转至专栏总目录) 《UDS/OBD诊断需求编辑工具》总目录https://blog.csdn.net/qfmzhu/article/details/123697014 共9页精讲:在第二章节中,附上了一个完整的,且详细的ODX-F文件层级结构图。 目录 1 什么是ODX-F?

【在Spring MVC框架和Spring Boot项目中,控制器的响应结果】

目录 1. 控制器的响应结果 2. 相关配置 3. 使用枚举优化代码 1. 控制器的响应结果 当控制器处理了请求之后&#xff0c;向客户端响应的结果中&#xff0c;应该至少包含&#xff1a; 业务状态码&#xff1a;通常是数值类型的&#xff0c;客户端可以根据此数值来判断操作成功…

docke部署nodejs程序及Dockerfile详解

目录参考一、Dockerfile二、部署1、程序结构2、新建Dockerfile3、新建.dockerignore4、构建镜像5、创建容器6、关闭镜像参考 重点参考&#xff1a;把一个 Node.js web 应用程序给 Docker 化 Docker部署Node.js的方法步骤&#xff08;nodejs docker部署&#xff09; 一、Docke…

Linux服务器启动tomcat的三种方式

直接进入主题&#xff0c;首先cd进入tomcat的bin文件夹下&#xff0c;然后可以尝试以下三种启动方式&#xff1a; 第一种&#xff08;当前会话启动&#xff09;&#xff1a; ./startup.sh 效果: 然后tomcat就在后台启动了&#xff0c;我们还可以在当前会话中继续输入其它指令…