news 2026/6/23 15:40:04

12.10小结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
12.10小结

解题思路:

1.首先将a[21]中所有元素初始化为零,且每次输入不同组数组时都初始化为零,防止影响输出结果;

2.其次写一个循环输入数据,同时用a[x]++,记录本数据出现的次数并存储下来;

3.最后输出循环输出a[i],得出1-20分别出现的次数。

为什么写a[21],而不是a[20]?

如果将计数数组定义为a[20],下标范围是0-19,无法直接对应数字1-20,会导致统计逻辑混乱甚

至数组越界错误。a[20]的长度不足以“容纳”1-20的数字下标,而a[21]通过牺牲一个下标0的空间。

​ #include <stdio.h> #include <string.h> int main() { int n,x; while(scanf("%d",&n)!=EOF) { int a[21]={0}; for(int i=0;i<n;i++) { scanf("%d",&x); a[x]++; } for(int i=1;i<=20;i++) { printf("%d:%d\n",i,a[i]); } } return 0; } ​

定义结构体数组:

解题思路:

1.设一个结构体数组,数组中包含3个元素;

2.每个元素中的信息应包括候选人的姓名(字符型)和得票数(整型);

3.输入被选人的姓名,然后用strcmp函数与数组元素中的姓名成员比较,如果相同,就给这个元素中的“得票数”成员的值加1;

4.输出所有元素的信息。

#include <string.h> #include <stdio.h> struct Person { char name[20]; int count; }leader[3]={“Li”,0,“Zhang”,0,“Sun”,0}; int main() { int i,j; char leader_name[20]; for (i=1;i<=10;i++) { scanf(“%s”,leader_name); for(j=0;j<3;j++) if(strcmp(leader_name, leader[j].name)==0) leader[j].count++; } for(i=0;i<3;i++) printf("%5s:%d\n“,leader[i].name, leader[i].count); return 0; }

指向结构体数组的指针:

解题思路:用指向结构体变量的指针处理

1.声明struct Student,并定义结构体数组、初始化;

2.定义指向struct Student类型指针p;

3.使p指向数组首元素,输出元素中各信息;

4.使p指向下一个元素,输出元素中各信息;

5.再使p指向结构体数组的下一个元素,输出它指向的元素中的有关信息。

#include <stdio.h> struct Student { int num; char name[20]; char sex; int age; }; struct Student stu[3]={{10101,"Li Lin",'M',18}, {10102,"Zhang Fun",'M',19}, {10104,"Wang Min",'F',20} }; int main() { struct Student *p; printf(" No. Name sex age\n"); for(p=stu;p<stu+3;p++) printf(“%5d %-20s %2c %4d\n”, p->num, p->name, p->sex, p->age); return 0; }

用结构体变量和结构体变量的指针作函数参数:

解题思路:

1.将n个学生的数据表示为结构体数组。按照功能函数化的思想,分别用3个函数来实现不同的功能

2. 用input函数输入数据和求各学生平均成绩;

3.用max函数找平均成绩最高的学生;

4.用print函数输出成绩最高学生的信息;

5.在主函数中先后调用这3个函数,用指向结构体变量的指针作实参。

6.最后得到结果。本程序假设n=3

#include <stdio.h> #define N 3 struct Student { int num; char name[20]; float score[3]; float aver; }; int main() { void input(struct Student stu[]); struct Student max(struct Student stu[]); void print(struct Student stu); struct Student stu[N],*p=stu; input(p); print(max(p)); return 0; } void input(struct Student stu[ ]) { int i; printf("请输入各学生的信息:学号、姓名、三门课成绩:\n"); for(i=0;i<N;i++) { scanf("%d %s %f %f %f", &stu[i].num,stu[i].name, &stu[i].score[0],&stu[i].score[1],&stu[i].score[2]); stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; } } struct Student max(struct Student stu[]) { int i,m=0; for(i=0;i<N;i++) if (stu[i].aver>stu[m].aver) m=i; return stu[m]; } void print(struct Student stud) { printf("\n成绩最高的学生是:\n"); printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n”, stud.num, stud.name,stud.score[0], stud.score[1],stud.score[2],stud.aver); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 9:24:33

爬虫数据增量更新:时间戳、offset、WebSocket 长连接方案

在数据采集领域&#xff0c;增量更新是提升爬虫效率、降低目标服务器压力的核心技术手段。相比于全量爬取&#xff0c;增量更新仅获取两次采集之间新增或变更的数据&#xff0c;既能节省带宽与存储资源&#xff0c;也能避免因重复请求触发反爬机制。本文将深入解析三种主流的爬…

作者头像 李华
网站建设 2026/6/22 10:08:28

Java-元注解 (Meta-Annotations)

1. Target(ElementType.METHOD)作用&#xff1a;规定注解的使用位置。含义&#xff1a;这行代码限制了你的自定义注解只能标记在方法&#xff08;Method&#xff09;上。效果&#xff1a;如果你尝试把这个注解加在类&#xff08;Class&#xff09;、字段&#xff08;Field&…

作者头像 李华
网站建设 2026/6/23 11:37:17

@Component

在 Spring 框架中&#xff0c;Component 是一个最基础、最核心的注解。用一句话总结&#xff1a;它的作用是把一个普通的 Java 类&#xff0c;变成 Spring 容器管理的“Bean”。如果把 Spring 容器比作一家公司&#xff0c;普通的 Java 类就是路人&#xff0c;而加上 Component…

作者头像 李华
网站建设 2026/6/22 17:32:09

力扣-94.二叉树的中序遍历(Java递归)

文章目录 94.二叉树的中序遍历(力扣题目) 题目描述 问题理解 题解 时间复杂度分析 图示解析 总结 94.二叉树的中序遍历(力扣题目) 题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3]…

作者头像 李华
网站建设 2026/6/22 11:40:37

综合素质面试hr面

个人对大模型的了解基于深度学习的超大规模参数模型&#xff0c;通常拥有数十亿到数万亿的参数&#xff0c;依赖海量数据和算力训练而成。它们的代表是 GPT 系列、Claude、Gemini、文心一言、通义千问等。大模型的核心能力&#xff1a;1、自然语言理解与生成 2、跨任务泛化 3、…

作者头像 李华