【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;
}
相关推荐
飞飞-躺着更舒服12 分钟前
【QT】实现电子飞行显示器(改进版)
开发语言·qt
武昌库里写JAVA27 分钟前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
ZSYP-S1 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos1 小时前
c++------------------函数
开发语言·c++
yuanbenshidiaos1 小时前
C++----------函数的调用机制
java·c++·算法
唐叔在学习1 小时前
【唐叔学算法】第21天:超越比较-计数排序、桶排序与基数排序的Java实践及性能剖析
数据结构·算法·排序算法
程序员_三木1 小时前
Three.js入门-Raycaster鼠标拾取详解与应用
开发语言·javascript·计算机外设·webgl·three.js
是小崔啊1 小时前
开源轮子 - EasyExcel01(核心api)
java·开发语言·开源·excel·阿里巴巴
ALISHENGYA2 小时前
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(switch语句)
数据结构·算法
tianmu_sama2 小时前
[Effective C++]条款38-39 复合和private继承
开发语言·c++