习题7-7 字符串替换 (15 分)

本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
在这里插入图片描述

输入格式:

输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

输出格式:

输出在一行中给出替换完成后的字符串。

输入样例:

Only the 11 CAPItaL LeTtERS are replaced.

输出样例:

Lnly the 11 XZKRtaO OeGtVIH are replaced.

题解:

#include<stdio.h>
int main ()
{
	char str [81];
	/* 
    char original_letter [] = {   字母参照表
	 	'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
	 };
    */
	char correspond_letter [] = { 
		'Z', 'Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A'
	}; //此处也可以循环赋值数组
	int i = 0; //循环变量

    /*循环给correspond_letter数组赋值倒序的字母(如需用这个方法上面定义的char correspond_letter要注释掉重新定义)*/
    // int j = 90;
    // char correspond_letter [26];
    // for (i = 0; i < 26; i++)
    //     correspond_letter [i] = j--;

	gets (str); //输入字符串到str数组里面
	int temp; //定义temp为该大写字母离A多少位

    /*循环替换大写字母*/
	for (i = 0; str [i] != '\0' ; i++) 
	{
		if (str [i] >= 'A' && str [i] <= 'Z') 
		{
			temp = (int)str[i] - 'A'; //相差多少位就是对应逆序后的字母(correspond_letter数组存放的是逆序的大写字母)
			str [i] = correspond_letter [temp]; //赋值
		}
	}
	puts (str); //输出str字符串
	
	return 0;
}
/*
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ZYXWVUTSRQPONMLKJIHGFEDCBA
*/

二、

/*方法二:*/
// #include<stdio.h>
// int main ()
// {
// 	char str [81];
// 	int i = 0; //循环变量

// 	gets (str); //输入字符串到str数组里面

//     /*循环替换大写字母*/
// 	for (i = 0; str [i] != '\0' ; i++) 
// 	{
// 		if (str [i] >= 'A' && str [i] <= 'Z') 
// 		{
// 			str [i] = 'Z' - ( (int)str[i] - 'A'); //找到大写字母直接赋值替换,最后一个大写字母ascii码90减去 A到str[i]的位数 就是逆序字母的ASCII码
// 		}
// 	}
// 	puts (str); //输出str字符串
	
// 	return 0;
// }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值