当前位置: 首页 > article >正文

【2023.10.27练习】C语言-字符串转换

计算机能力挑战初赛2020.17题

题目描述:

有一组均由字符A~Z和a~z组成的字符串,其中要求将字符串中各字符按如下要求进行转换:

A<->z、B<->y、C<->x、...... 、X<->c、Y<->b、Z<->a

输入: 第一行输入字符串(长度<=10000)

输出: 输出转换之后的字符串。

样例输入: Algorithm

样例输出: zOTLIRGSN

样例输入: Hello

样例输出: sVOOL            


题目分析:

显然将输入的字符转化为ASCII码

根据观察得出输入的字符ASCII码 = 187 -  输出的字符ASCII码。

int main(void) {
	char str_1[5000];/*str_1表示输入的字符串*/
	scanf("%s", str_1);/*输入字符串*/

	char str_2[5000];
	/*for (int i = 0; p != 0; i++) {
		str_2[i] = 187 - str_1[i];
		p++;
		};*/

	for (int i = 0; i <= strlen(str_1); i++) {
		if (i < strlen(str_1)) {
			str_2[i] = 187 - str_1[i];
		}
		else {
			str_2[i] = 0;
		}
	}
	printf("%s", str_2);
	return 0;
}

但是还不够,定义的字符串长度是有限的,使用动态顺序表让输入可以无限长。


最终代码:

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

int main(void) {

	/*str_1表示输入的字符串*/
	char* str_1 = NULL;
	int capacity = 5;
	int size = 0;
	str_1 = (char*)malloc(capacity * sizeof(char));

	int flag = 0;
	for(int i = 0;flag == 0;i++){
		if (size == capacity) {
			int newcapacity = capacity * 2;
			char * str = (char*)realloc(str_1,newcapacity * sizeof(char));
			str_1 = str;
			capacity = newcapacity;
		}

		str_1[i] = getchar();/*输入字符串*/
		size++;
		if (str_1[i] == '\n') {
			flag = 1;
			str_1[i] = 0;/*str_1由字符数组转为字符串*/
		}
	}

	char* str_2 = NULL;
	str_2 = (char*)malloc(size * sizeof(char));

	for (int i = 0; i <= strlen(str_1); i++) {
		if (i < strlen(str_1)) {
			str_2[i] = 187 - str_1[i];
		}
		else {
			str_2[i] = 0;
		}
	}
	printf("%s", str_2);

	free(str_1);
	str_1 = NULL;
	free(str_2);
	str_2 = NULL;

	return 0;
}


http://www.kler.cn/news/107691.html

相关文章:

  • exFAT文件系统的目录与文件存储
  • 京东平台数据分析(京东销量):2023年9月京东吸尘器行业品牌销售排行榜
  • 抢占式调度是如何发生的
  • 大厂面试题-JVM为什么使用元空间替换了永久代?
  • Spring Cloud Gateway + Knife4j 4.3 实现微服务网关聚合接口文档
  • golang工程——grpc-gateway 转发http header中自定义字段到grpc上下文元数据
  • 原始流,缓冲流性能比较
  • 淘宝API接口获取商品信息,订单管理,库存管理,数据分析
  • 计算机网络重点概念整理-第七章 网络安全【期末复习|考研复习】
  • 场效应管器件
  • 【C语言数据结构——————排序(1万字)】
  • VSCode 自动格式化
  • elementUI 特定分辨率(如1920*1080)下el-row未超出一行却换行
  • debian 10 安装apache2 zabbix
  • 五、Qt中的常用类
  • 前端学习之Babel转码器
  • C语言 位操作符 >> << | ^
  • IPv6的主要优势有哪些?
  • Python-pptx教程之一从零开始生成PPT文件
  • TSINGSEE青犀睡岗离岗检测算法——确保加油站安全运营
  • 数据安全的重要性:如何解密[thekeyishere@cock.li].Elbie勒索病毒
  • springboot + redis实现签到与统计功能
  • RabbitMQ消息中间件
  • Linux C语言开发-D7D8运算符
  • python excel接口自动化测试框架
  • vue3 源码解析(2)— ref、toRef、toRefs、shallowRef 响应式的实现
  • 【Linux】虚拟机安装Linux、客户端工具,MobaXterm的使用,Linux常用命令
  • redis archive github
  • 数据结构之队列
  • 消息队列中间件面试笔记总结RabbitMQ,Kafka,RocketMQ