【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码。

cpp 复制代码
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;
}

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


最终代码:

cpp 复制代码
#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;
}
相关推荐
Bona Sun19 分钟前
单片机手搓掌上游戏机(二十)—pico运行doom之编译环境
c语言·c++·单片机·游戏机
爱丽_1 小时前
深入理解 Java Socket 编程与线程池:从阻塞 I/O 到高并发处理
java·开发语言
我真不会起名字啊1 小时前
C、C++中的sprintf和stringstream的使用
java·c语言·c++
资深web全栈开发1 小时前
LeetCode 3625. 统计梯形的数目 II
算法·leetcode·组合数学
橘颂TA1 小时前
【剑斩OFFER】算法的暴力美学——外观数列
算法·leetcode·职场和发展·结构与算法
Liangwei Lin1 小时前
洛谷 P1434 [SHOI2002] 滑雪
算法
多敲代码防脱发2 小时前
为何引入Spring-cloud以及远程调用(RestTemplate)
java·开发语言
plmm烟酒僧2 小时前
TensorRT 推理 YOLO Demo 分享 (Python)
开发语言·python·yolo·tensorrt·runtime·推理
c#上位机2 小时前
halcon图像增强之自动灰度拉伸
图像处理·算法·c#·halcon·图像增强
rit84324992 小时前
压缩感知信号恢复算法:OMP与CoSaMP对比分析
数据库·人工智能·算法