C语言:反转整个字符串,并将全部小写字母转换为大写字母

思路:设置两个指针,一个指向字符串的开头(p),一个指向末尾(q)。当p<q时,交换两个指针所指的字符,即可完成整个字符串的反转。

判断字符串的长度

判断字符串的长度可使用strlen函数,使用前应引头文件string.h

字符串中的大小写转换

ASCII码中英文字母的大小写相差32,大写字母在前,小写字母在后,因此将大写字母全部转换为小写应当加32,反之应当加32。

#include<stdio.h>
#include<string.h>
#define LENGTH 50

void reverseStringUpper(char *p, char *q, int len) {
	if ((p == NULL) || (q == NULL) || (len == 0))
		return;
	if (len == 1) {
		*p = *p - 32;
		return;
	}	
	char temp;
	
	//反转整个字符串   
	while (p < q) {
		temp = *p - 32;
		*p = *q - 32;
		*q = temp;
		p++;
		q--;
	}
	return;
}

测试函数

void test1() {   //测试句子
	char a[LENGTH] = "I love programming";

	int len = strlen(a);
	reverseStringUpper(&a, &a[len - 1], len);

	printf("%s\n", a);
}


void test2() {  //测试单词
	char a[LENGTH] = "programming";

	int len = strlen(a);
	reverseStringUpper(&a, &a[len - 1], len);

	printf("%s\n", a);
}

void test3() {   //测试单字母
	char a[LENGTH] = "a";

	int len = strlen(a);
	reverseStringUpper(&a, &a[len - 1], len);

	printf("%s\n", a);
}

void test4() {   //测试空字符串
	char a[LENGTH] = "";

	int len = strlen(a);
	reverseStringUpper(&a, &a[len - 1], len);

	printf("%s\n", a);
}
void test5() {   //测试空格
	char a[LENGTH] = " ";

	int len = strlen(a);
	reverseStringUpper(&a, &a[len - 1], len);

	printf("%s\n", a);
}

注意:reverseStringUpper函数中的指针设置为char型,因此调用时应使用&a和&a[len - 1],即某一个char型变量的地址。

int main() {
	test1();
	test2();
	test3();
	test4();
	test5();
	return 0;
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值