将输入的字符串中的大写改成小写再进行输出

该博客介绍了如何使用C语言编写一个程序,将输入的字符串中的所有大写字母转换为小写字母。程序通过判断字符是否在大写字母范围内,并进行相应的ASCII值偏移来实现转换。题目来源于广东技术师范大学的在线判题系统,适合初学者练习字符串操作和字符条件判断。

【C语言训练】大、小写问题
字符串操作
空间限制:16MB时间限制:1s总提交数:3299通过率:44.56%题目来源: 站点添加
输入一串字符,将其中的大写变成小写,若不为大写则原样输出。

任意字符串(长度在100以内)以回车表示输入结束。

将其中的大写 输出相应的小写,若不为大写则原样输出

Ab
ab

题目的编程来自于广东技术师范大学的在线判题系统,简称为OJ系统,
希望下载的浏览器是谷歌浏览器,这样可以更好体验我们学校的编程网站,
题目来源 广东技术师范大学在线判题网站http://www.gpnuacm.com/#/home

#include <stdio.h>
#include <string.h>
int main()
{	char b[21];
	int i,n;
	i=0;n=0;
	while(scanf("%s",&b)!=EOF)
	{
	n=strlen(b);
	for(i=0;i<n;i++)
	{
		if(b[i]>='A'&&b[i]<='Z'){
			b[i]+=32;
		}
	}
	printf("%s",b);
}
	return 0;
 } 
在C语言中,实现输入字符串后将大写字母改成小写字母、小写字母改成大写字母有多种方法,以下为你介绍几种常见的实现方式: #### 方法一:使用ASCII码值进行转换 ```c #include <stdio.h> #include <string.h> int main() { char a[100]; char b[100]; scanf("%s", a); strcpy(b, a); for (int i = 0; i < 100; i++) { if (b[i] >= 'a' && b[i] <= 'z') b[i] = b[i] - 32; else if (b[i] >= 'A' && b[i] <= 'Z') b[i] = b[i] + 32; else continue; } printf("%s\n", b); return 0; } ``` 该方法先读取输入字符串,复制到另一个数组中,然后遍历数组,根据字符的ASCII码值判断是大写字母还是小写字母,若是大写字母则加上32转换小写字母,若是小写字母则减去32转换大写字母,最后输出转换后的字符串[^3]。 #### 方法二:使用`gets()`和`puts()`函数 ```c #include <stdio.h> #include <stdlib.h> char a[1000]; int main() { gets(a); for(int i = 0; a[i] != '\0'; i++) { if(a[i] >= 'a' && a[i] <= 'z') a[i] -= 32; else if(a[i] >= 'A' && a[i] <= 'Z') a[i] += 32; else a[i] = a[i]; } puts(a); return 0; } ``` 此方法使用`gets()`函数获取输入字符串,遍历字符串,根据字符的ASCII码值进行大小写转换,最后使用`puts()`函数输出转换后的字符串。需要注意的是,`gets()`函数存在缓冲区溢出的风险,在实际使用中建议使用`fgets()`函数替代[^4]。 #### 方法三:使用标准库函数 ```c #include <stdio.h> #include <ctype.h> #include <string.h> int main() { char str[100]; fgets(str, sizeof(str), stdin); for (int i = 0; str[i] != '\0'; i++) { if (isupper(str[i])) str[i] = tolower(str[i]); else if (islower(str[i])) str[i] = toupper(str[i]); } printf("%s", str); return 0; } ``` 该方法使用`fgets()`函数获取输入字符串,然后遍历字符串,使用`isupper()`和`islower()`函数判断字符大写字母还是小写字母,使用`tolower()`和`toupper()`函数进行大小写转换,最后输出转换后的字符串。这种方法代码更简洁,可读性更高,并且避免了手动计算ASCII码值的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值