c 语言基础题目:L1-039 古风排版

2023-10-17 00:04

本文主要是介绍c 语言基础题目:L1-039 古风排版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

输入格式:

        输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。

输出格式:

        按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。

输入样例:

4
This is a test case

输出样例:

asa T
st ih
e tsice s

程序源码: 

// 这一行用于关闭某些C运行时库的安全警告。  
#define _CRT_SECURE_NO_WARNINGS  // 包含标准输入输出库,本程序使用到的printf和scanf函数均来源于此库  
#include <stdio.h>  // 定义主函数,C语言程序的入口  
int main() {  // 定义一个字符数组,用于存储用户输入的字符串  char buf[1001];  // 定义一个整型变量,用于接收用户输入的整数N  int N;  // 使用scanf函数从标准输入读取一个整数并存储到N变量中  scanf("%d", &N);  // 使用gets函数(这个函数在最新的C标准中已被废弃,建议使用fgets代替)从标准输入读取一行字符串并存储到buf数组中  // 注意,这里没有任何输入过滤和错误处理,如果输入的字符串超过了buf的大小(1001),那么就可能导致缓冲区溢出,这是一个潜在的安全隐患  gets(buf);  // 再使用gets函数读取一次字符串,同样存在安全问题,且这部分代码实际上并未被使用,可以删除  gets(buf);  // 使用strlen函数计算字符串的长度  int len = strlen(buf);  // 计算N行的总行数,算法为len除以N,如果len除以N有余数,则总行数加1  int line = len/N+(len%N!=0?1:0);  // 外层循环,控制行数,从0到N-1  for (int i = 0; i < N; i++)  {  // 内层循环,控制每行的字符数,从0到line-1  for (int j = 0; j < line; j++)  {  // 判断如果((line - j - 1) * N) + i小于len,即这个字符在buf中存在,则打印这个字符,否则打印空格  if(((line - j - 1) * N) + i<len)  printf("%c",buf[((line-j-1) * N)+i]);  else  printf(" ");  }  // 每打印完一行后换行  printf("\n");  }     // 主函数返回0,表示程序正常结束  return 0;  
}

解题思路:

1.读取与存储:使用gets读取存储下来;

2.我们将其想象为一个二位的字符数组,根据下标的规律输出来即可。假定输入N=3 和012345678古风排版是

630
741
852

我们看到它的规律就是

(列数)*N......1*N0*N
(列数)*N+1......1*N+10*N+1
(列数)*N+2......1*N+20*N+2

        所以我们按这个规律输出即可,我们的列数是可以通过总字符的格式计算出来的,行数固定,通过列数=字符/行数,其中如果字符/行数不等与0,代表需要在加上一列。

第一列输出空格,这可以通过下标判断是否越界,如果越界输出空格,如果没有正常输出即可。

这篇关于c 语言基础题目:L1-039 古风排版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/221615

相关文章

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ