2001年程序员下午试题:字符串比较、矩阵操作与链表操作
需积分: 9 199 浏览量
更新于2024-08-13
收藏 37KB PDF 举报
2001年度程序员级下午试题涵盖了一些基础的C语言编程概念和算法设计。以下是对两个试题的详细解析:
试题一:
1. 函数strcmp()的实现涉及到字符串比较。首先,它遍历字符串s和t,每次迭代检查当前字符是否都为'\0'(字符串结束标志),只有当两者同时不为空时才会继续比较。此处缺失的是条件判断,应该填入`(*s==*t)`,表示如果当前字符相等则继续。当有一个字符串的某个字符小于另一个时,循环结束,函数会根据之前字符的比较结果返回相应的数值:`*s<*t`返回负数,`*s=*t`返回0,`*s>*t`返回正数。因此,填入的完整代码是:
```c
while(*s && *t && (*s == *t)) {
s++;
t++;
}
return *s < *t ? -1 : *s > *t ? 1 : 0;
```
2. 程序1.2的功能是找出一个n行n列矩阵中每行最大值中的最小值。这里涉及数组遍历和条件判断。`if`语句的三个部分分别对应于比较当前元素是否大于当前行的最大值、是否小于当前最小值、以及两者都不满足的情况。填入的完整代码可能是:
```c
if (a[row][col] > max) {
max = a[row][col];
} else if (a[row][col] < min) {
min = a[row][col];
} else {
// 如果当前元素等于最大值,不做更新
}
```
最终,程序会在循环结束后输出最小的最大数。
试题二:
1. 在函数first_insert()中,需要在已知链表头部插入一个新节点。首先分配新节点空间并设置其值,然后将新节点的指针链接到原头节点前,最后更新头指针。这部分代码应该是:
```c
q->next = *p;
*p = q;
```
2. 函数reverse_copy()需要复制链表并反转链接顺序。这里缺失了新节点的指针连接,以及将新链表的头指针赋值给函数返回值。完整代码可能如下:
```c
*q->next = (*p)->next; // 将原链表的下一个节点指向前一个节点
*q = (*p)->next; // 更新q指向新链表的当前节点
*p = q; // 更新原链表头指针,指向新链表的头
```
3. 函数print_link()和free_link()用于链表操作,具体实现依赖于链表结构和操作细节,但未给出详细代码。
这两个试题考察了C语言基础语法、字符串和数组处理、链表操作、算法设计等重要知识点,考生需要具备扎实的编程基础和逻辑思维能力来解答。
2017-12-25 上传
点击了解资源详情
2023-11-26 上传
2023-09-30 上传
2023-10-12 上传
2023-10-17 上传
2024-01-11 上传
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
Aliang1984
- 粉丝: 0
- 资源: 3
最新资源
- 解决Eclipse配置与导入Java工程常见问题
- 真空发生器:工作原理与抽吸性能分析
- 爱立信RBS6201开站流程详解
- 电脑开机声音解析:故障诊断指南
- JAVA实现贪吃蛇游戏
- 模糊神经网络实现与自学习能力探索
- PID型模糊神经网络控制器设计与学习算法
- 模糊神经网络在自适应PID控制器中的应用
- C++实现的学生成绩管理系统设计
- 802.1D STP 实现与优化:二层交换机中的生成树协议
- 解决Windows无法完成SD卡格式化的九种方法
- 软件测试方法:Beta与Alpha测试详解
- 软件测试周期详解:从需求分析到维护测试
- CMMI模型详解:软件企业能力提升的关键
- 移动Web开发框架选择:jQueryMobile、jQTouch、SenchaTouch对比
- Java程序设计试题与复习指南