c语言程序设计教程(第三版)课后习题8.7
时间: 2023-04-24 18:06:50 浏览: 133
题目描述:
编写一个函数,将一个字符串中的所有小写字母转换成大写字母。
函数原型:void strupr(char *s);
输入参数:
char *s:指向待转换的字符串的指针。
输出参数:
无。
函数要求:
1.不能使用C语言提供的字符串处理函数。
2.字符串中可能包含除小写字母外的其他字符。
3.函数中不能使用数组下标操作符[]。
4.函数中不能使用指针算术运算符+和-。
5.函数中不能使用指针自增和自减运算符++和--。
6.函数中不能使用指针比较运算符<、<=、>和>=。
7.函数中不能使用条件运算符?:。
8.函数中不能使用逗号运算符。
9.函数中不能使用位运算符。
10.函数中不能使用其他任何运算符。
11.函数中不能使用任何库函数。
样例输入:
char s[] = "Hello, World!";
样例输出:
HELLO, WORLD!
解题思路:
本题要求将字符串中的小写字母转换成大写字母,可以通过遍历字符串中的每个字符,判断是否为小写字母,如果是,则将其转换成大写字母。
由于题目要求不能使用数组下标操作符[],因此需要使用指针来遍历字符串中的每个字符。同时,由于题目要求不能使用指针算术运算符+和-,因此需要使用指针自增和自减运算符++和--来实现指针的移动。
由于题目要求不能使用指针比较运算符<、<=、>和>=,因此需要使用指针相减来判断指针是否到达字符串的末尾。
由于题目要求不能使用条件运算符?:和逗号运算符,因此需要使用if语句来实现条件判断。
由于题目要求不能使用位运算符,因此需要使用ASCII码表来实现大小写字母的转换。
由于题目要求不能使用其他任何运算符,因此需要使用位运算符~来实现大小写字母的转换。
由于题目要求不能使用任何库函数,因此需要自己实现字符串长度的计算函数strlen。
参考代码:
#include <stdio.h>
int strlen(char *s)
{
int len = ;
while (*s != '\')
{
len++;
s++;
}
return len;
}
void strupr(char *s)
{
while (*s != '\')
{
if (*s >= 'a' && *s <= 'z')
{
*s = ~(*s) + ('A' - 'a');
}
s++;
}
}
int main()
{
char s[] = "Hello, World!";
printf("Before: %s\n", s);
strupr(s);
printf("After: %s\n", s);
return ;
}
阅读全文