吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1648|回复: 27
收起左侧

[求助] 这题该怎么做,一点思路都没有

[复制链接]
回帖奖励 27 CB吾爱币 回复本帖可获得 1 CB吾爱币奖励! 每人限 1 次
Leon19960120 发表于 2021-12-12 18:53
1、  编写函数void fun(char * strFrom, char*strTo),其功能是:把字符串strFrom中的小写字母改成原字母的大写字母,大写字母改成原字母的小写字母,其它字母不变,其结果赋给指针strTo。如:输入字符串 a1234HnB则函数值应为 A1234hNb

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

HonorHunter 发表于 2021-12-12 19:42

回帖奖励 +1 CB吾爱币

'X'+32='x',往ascii值的运算上想
大方 发表于 2021-12-12 19:44
Soldsix 发表于 2021-12-12 19:52

回帖奖励 +1 CB吾爱币




printf("%c",char(int(ch)-32));
//小写改大写


printf("%c",char(int(ch)+32));
//大写改小写
ytfrdfiw 发表于 2021-12-12 19:56

回帖奖励 +1 CB吾爱币

这个逻辑相对不难吧。对每个字符进行判断,如果在'a'与'z'之间,减指定值就行了。
Raohz520 发表于 2021-12-12 19:59

回帖奖励 +1 CB吾爱币

遍历这个字符串 然后进行转换 赋值给你那个指针
苏紫方璇 发表于 2021-12-12 20:02

回帖奖励 +1 CB吾爱币

[C++] 纯文本查看 复制代码
#include <stdio.h>

void fun(char * strFrom, char*strTo)
{
	char c;
	while (*strFrom != 0)
	{
		c = *strFrom;
		if (c >= 'A' && c <= 'Z')
		{
			*strTo = *strFrom + 0x20;
		}
		else if (c >= 'a' && c <= 'z')
		{
			*strTo = *strFrom - 0x20;
		}
		else
		{
			*strTo = *strFrom;
		}
		strFrom++;
		strTo++;
	}
}


int main()
{
	char test[] = "a1234HnB";
	char result[9] = {0};

	fun(test, result);

	printf(result);
	getchar();
	return 0;
}
weikun444 发表于 2021-12-12 20:05

回帖奖励 +1 CB吾爱币

伪码:
ret="";
for int i=1 to len(str)
{
temp=str[i];
if asc(str[i])小写范围
temp=大写(str[i]);
elseif asc(str[i])大写范围
temp=小写(str[i]);
ret=ret+temp;
}
print ret;
搜索曾经的回忆 发表于 2021-12-12 20:07

回帖奖励 +1 CB吾爱币

[C] 纯文本查看 复制代码
while(strFrom!=0){
  *strTo=*strFrom;
  if(!(tmp>='0'&&tmp<='9')){
     *strTo^=0x20;
  }
  strTo++;
  strFrom++;
}

不晓得对不对,应付题肯定没问题

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
苏紫方璇 + 1 + 1 异或,学到了

查看全部评分

wangyujie96 发表于 2021-12-12 20:10

回帖奖励 +1 CB吾爱币

[C++] 纯文本查看 复制代码
// 正常思路版
void fun(const char* from, char* to)
{
	int i = 0;
	do
	{
		if ('A' <= from[i] && from[i] <= 'Z')
			to[i] = from[i] - 'A' + 'a';
		else if ('a' <= from[i] && from[i] <= 'z')
			to[i] = from[i] - 'a' + 'A';
		else
			to[i] = from[i];
	} while (from[i++] != 0);
}

// 映射优化版
void fun_2(const char* input, char* output)
{
	char map[256];
	for (int i = 0; i < 256; ++i)
		map[i] = i;  // 初始化映射

	for (int i = 'A'; i <= 'Z'; ++i)  // 大写换小写
		map[i] = i - 'A' + 'a';

	for (int i = 'a'; i <= 'z'; ++i)  // 小写换大写
		map[i] = i - 'a' + 'A';

	int i = 0;
	do {
		output[i] = map[input[i]];
	} while (input[i++] != 0);
}

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-19 05:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表