C语言编程:字符串大小写转换与字符比较
需积分: 0 97 浏览量
更新于2024-07-31
收藏 1.29MB DOC 举报
“全国计算机等级考试二级C语言上机题及改错题解析”
这篇资源主要涉及的是计算机二级C语言考试的上机操作部分,包括填空题和改错题。下面是针对这两个题目进行的详细解释:
1. **填空题**:
题目要求编写一个函数,将输入字符串中的所有小写字母转换为大写字母,并保存在原字符串中。已给出部分源代码,需要补充完整。
- 在`main`函数中,首先调用了`system("CLS")`清屏,然后输出原始字符串。接下来,需要开始处理字符串。这里缺少了一个开始循环的语句,应该填写`for( ; j < N; j++)`,这样可以遍历整个字符串。
- 第二个空白处,需要将小写字母转换为大写字母。由于C语言中字符的ASCII码相差32(小写字母到大写字母的差值),可以写为`*(pf+j) -= 32`。
- 第三个空白处,对于非小写字母的字符,直接跳过不做处理,所以这里填写`continue;`。
完整的代码段应该是这样的:
```c
for( ; j < N; j++)
{
if(*(pf+j)>='a'&&*(pf+j)<='z')
{
*(pf+j) -= 32;
}
else
{
continue;
}
}
```
2. **改错题**:
这道题的目的是比较两个字符串的对应字符,把ASCII值小或相等的字符存入新的字符串。已给出的程序中有错误,需要找出并修正。
错误出现在`while`循环的条件以及其中的`if`语句。首先,`while(*p||*q)`这个条件会使得循环一直进行,即使其中一个字符串已经结束,导致程序出错。应该改为`while(*p&&*q)`,确保只有当两个指针都指向有效字符时才进行比较。
接下来,`if`语句的逻辑有问题,`if(*p<=*q)[if(*p=>*q)]`这部分应该是选择ASCII值较小或相等的字符。这里存在语法错误,应该修正为`if(*p<=*q)`,然后将正确的字符赋值给`c[k]`。
修正后的代码段应该是这样的:
```c
while(*p && *q)
{
if(*p <= *q)
{
c[k] = *p;
}
else
{
c[k] = *q;
}
if(*p) p++;
if(*q) q++;
}
```
当循环结束,`p`和`q`可能未到达字符串末尾,因此还需要处理可能剩下的字符。如果`*p`还有值,将其添加到`c`中,然后移动`p`;同样,如果`*q`有值,也执行相同操作。最后记得添加字符串结束符`\0`。
通过以上分析,考生可以更好地理解C语言中字符串操作、字符比较和条件判断的基本原理,这对于准备计算机二级C语言考试至关重要。
2010-03-05 上传
2022-12-06 上传
2022-02-28 上传
2021-10-27 上传
2013-04-05 上传
2008-09-08 上传
2011-12-06 上传
2013-03-25 上传
fangdng
- 粉丝: 0
- 资源: 3
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析