C语言编程:字符串大小写转换与字符比较
需积分: 10 2 浏览量
更新于2024-12-07
收藏 914KB DOC 举报
"国家计算机考试二级C语言南开大学100题"
在这份资源中,主要涉及了两个C语言编程题目,分别属于填空题和改错题类型,旨在考察考生对C语言基本语法、字符串操作以及ASCII码的理解与应用。
1. 填空题:
题目要求编写一个函数,将输入的字符串中所有的小写字母转化为大写字母,并保持其他字符不变。提供的部分代码定义了一个main函数,以及一个未完成的函数fun。我们需要填充函数fun的空白部分。
- 首先,注意到代码中有一个for循环的初始化部分缺失,可以填入`for(j=0; ;j++)`,这个循环将遍历字符串直到遇到空字符'\0'。
- 第二个空白处,要求将小写字母转换为大写,可以通过在其ASCII值上加上32来实现,因此填写`*(pf+j)+='A'-'a'`,因为'A'到'Z'的ASCII值比'a'到'z'大32。
- 最后一个空白处,由于循环结束后需要继续检查下一个字符,所以填写`j++`。
完整的fun函数应如下所示:
```c
void fun(char* pf)
{
int j = 0;
while (*(pf + j))
{
if (*(pf + j) >= 'a' && *(pf + j) <= 'z')
{
*(pf + j) += 'A' - 'a';
j++;
}
else
{
j++;
}
}
}
```
2. 改错题:
题目提供了一个比较两个字符串并构建新字符串的fun函数。错误在于比较字符和更新指针的位置。在原始代码的两处注释`/******found*********/`下,需要修改。
- 第一处错误:while循环条件应该同时检查两个字符串是否到达末尾,即`while(*p&&*q)`,确保在其中一个字符串结束时停止比较。
- 第二处错误:在更新指针时,无论字符是否相等,都应向前移动。因此,两个`if`语句应该改为`p++, q++;`,这样可以保证两个指针同步前进。
修复后的fun函数应如下所示:
```c
void fun(char* p, char* q, char* c)
{
int k = 0;
while (*p && *q)
{
if (*p <= *q)
c[k] = *q;
else
c[k] = *p;
p++;
q++;
k++;
}
}
```
这两个题目都涉及到C语言的基础知识,包括字符串操作、指针使用、ASCII码转换以及条件判断。解决这些问题需要扎实的C语言基础和逻辑思维能力。
104 浏览量
2009-03-10 上传
254 浏览量
2021-10-12 上传
2007-07-01 上传
2009-07-03 上传
2014-05-06 上传
2012-11-14 上传
2009-12-16 上传