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;
}

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

发布了58 篇原创文章 · 获赞 3 · 访问量 2187

猜你喜欢

转载自blog.csdn.net/weixin_43936250/article/details/103758525
今日推荐