CCF-GESP计算机学会等级考试2025年9月二级C++T2 菱形

B4412 [GESP202509 二级] 菱形

题目描述

小 A 想绘制一个菱形。具体来说,需要绘制的菱形是一个 nnn 行 nnn 列的字符画,nnn 是一个大于 111 的奇数。菱形的四个顶点依次位于第 111 行、第 111 列、第 nnn 行、第 nnn 列的正中间,使用 # 绘制。相邻顶点之间也用 # 连接。其余位置都是 .

例如,一个 555 行 555 列的菱形字符画是这样的:

..#.. .#.#. #...# .#.#. ..#.. 

给定 nnn,请你帮小 A 绘制对应的菱形。

输入格式

一行,一个正整数 nnn。

输出格式

输出共 nnn 行,表示对应的菱形。

输入输出样例 #1

输入 #1

3 

输出 #1

.#. #.# .#. 

输入输出样例 #2

输入 #2

9 

输出 #2

....#.... ...#.#... ..#...#.. .#.....#. #.......# .#.....#. ..#...#.. ...#.#... ....#.... 

说明/提示

对于所有测试点,保证 3≤n≤293 \leq n \leq 293≤n≤29 并且 nnn 为奇数。

解析

解法一,矩阵中左上到右下的斜线,行和列的差相等,右上到左下的斜线,行和列的和相等。判断是否位于四条斜线上,是就打印#,不是就打印’.',详见代码:

#include<bits/stdc++.h>usingnamespace std;intmain(){int n,m; cin>>n; m=n/2+1;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i+j==m+1||i-j==m-1||j-i==m-1||i+j==m*3-1){ cout<<'#';}else{ cout<<'.';}} cout<<endl;}return0;}

解法二,做一个二维的字符数组,在数组中依次把四条线写进去,然后打印整个数组,详见代码:

#include<bits/stdc++.h>usingnamespace std;char a[105][105];int n;intmain(){ cin>>n;for(int j=n/2+1,i=1;j>=1;j--,i++){ a[i][j]='#';}for(int j=n/2+1,i=1;j<=n;j++,i++){ a[i][j]='#';}for(int i=n/2+1,j=1;i<=n;j++,i++){ a[i][j]='#';}for(int i=n/2+1,j=n;i<=n;j--,i++){ a[i][j]='#';}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(a[i][j]==0){ cout<<'.';}else{ cout<<a[i][j];}} cout<<endl;}return0;}

Read more

C语言网络编程:TCP/IP协议栈、套接字、服务器/客户端通信深度解析

C语言网络编程:TCP/IP协议栈、套接字、服务器/客户端通信深度解析

C语言网络编程:TCP/IP协议栈、套接字、服务器/客户端通信深度解析 一、前言:为什么网络编程是C语言开发的重要技能? 学习目标 * 理解网络编程的本质:编写程序实现不同设备之间的网络通信 * 明确网络编程的重要性:支撑互联网、物联网、云计算等应用的基础 * 掌握本章学习重点:TCP/IP协议栈、套接字、服务器/客户端通信的开发方法、避坑指南、实战案例分析 * 学会使用C语言开发网络应用,实现数据传输和网络交互 重点提示 💡 网络编程是C语言开发的重要技能!互联网和物联网的普及,使得网络编程成为程序员的必备技能,C语言的高性能和可移植性使其在网络编程中具有重要地位。 二、模块1:TCP/IP协议栈基础 2.1 学习目标 * 理解TCP/IP协议栈的本质:用于网络通信的协议集合,分为应用层、传输层、网络层、数据链路层 * 掌握TCP/IP协议栈的结构:各层协议的功能和交互 * 掌握TCP/IP协议栈的常用协议:

By Ne0inhk

深入理解 Linux 网络 I/O 模型:从阻塞到纯异步的演进

在网络编程的世界里,我们经常会听到 BIO、NIO、epoll、AIO 这些名词。它们究竟是什么?为什么 Nginx 和 Redis 能支撑起海量的并发?这一切的答案,都藏在操作系统的网络 I/O 模型中。 今天,我们就来扒开表面看本质,深入聊聊 Linux 下的五种经典网络 I/O 模型。 核心前提:一次 I/O 到底经历了什么? 在讲解具体模型之前,我们必须先统一一个概念:在操作系统眼中,一次完整的网络读取操作,实际上分为两个截然不同的阶段。 1. 阶段一:等待数据准备就绪 (Waiting for data)。 网卡接收到网络传来的数据,然后操作系统内核将这些数据读取到内核缓冲区 (Kernel Buffer) 中。 2. 阶段二:将数据从内核空间拷贝到用户空间

By Ne0inhk
易语言核心自动化场景实战:办公、测试、数据抓取与基础游戏脚本开发

易语言核心自动化场景实战:办公、测试、数据抓取与基础游戏脚本开发

十一、易语言核心自动化场景实战:办公、测试、数据抓取与基础游戏脚本开发 11.1 引言 💡 自动化是易语言最受欢迎、应用最广泛的核心场景之一!很多人学习易语言的直接动力,就是为了解放双手,提高工作效率——比如批量处理Excel报表、自动登录办公系统、定时发送邮件、自动抓取网页数据,甚至为自己喜欢的单机/绿色窗口游戏写简单的挂机脚本。 前10篇我们已经掌握了易语言的基础语法、组件库、网络通信、数据库操作、多线程优化和高级底层编程,这些都是自动化开发的技术基础。本章将重点讲解四大高频自动化场景的全流程实战开发,帮助大家将所学知识应用到实际工作和生活中。 11.1.1 学习目标 * 掌握Windows GUI自动化的核心原理(窗口句柄查找、控件操作、消息发送) * 学会使用精易模块和大漠插件实现自动化操作 * 完成办公自动化实战(批量生成工资条、自动发送会议通知邮件) * 完成网页数据抓取自动化实战(自动抓取天气数据、自动抓取招聘网站职位信息) * 完成基础游戏脚本开发实战(⚠️仅用于学习,严禁开发/传播违法违规的游戏外挂) * 掌握自动化项目的通用开发流程,形成自

By Ne0inhk