
齐齐哈尔大学C语言题库:程序改错与字符串连接实践
版权申诉
92KB |
更新于2024-07-07
| 67 浏览量 | 举报
收藏
本资源是一份关于齐齐哈尔大学C语言题库的部分题目,主要涉及两个程序改错练习。第一个题目是关于在一维整型数组中找出最大数及其下标的程序。原程序中有四处错误,分别是:
1. 函数声明错误:`intfun` 应改为 `floatfun`,因为题目要求返回的是最大数,而函数名与返回类型不匹配。
2. 变量初始化错误:在 `fun` 函数中,应将 `int c` 初始化为 `*a`,而不是 `max=*a`,因为 `max` 是用于保存最大值的,而非循环变量。
3. 输入错误:在 `main` 函数中,两次调用 `scanf` 时都对同一个数组元素 `a[i]` 进行读取,应分别读取,正确格式应为 `scanf("%d", &a[i])`。
4. 返回值未赋值:在主函数中,第一次调用 `fun` 后没有正确更新 `max` 的值。
第二个题目是关于连接两个字符串的 `fun` 函数。程序中存在的错误包括:
1. `scat` 函数内部,两次循环条件判断语句错误地检查了 `s1` 和 `s2` 的结束标志,应只检查其中一个字符串的结束标志。
2. 字符串连接操作应该逐个字符复制,而不是同时交换 `s1[i]` 和 `s2[j]` 的值。
3. 结束字符串添加错误:在连接完成后,`s2` 的末尾应添加空字符 `\0`。
修复这些错误后的程序如下:
对于第一个题目:
```c
float fun(int *a, int *p, int n) {
float max = *a;
for (int c = a + 1; c < a + n; c++) {
if (*c > max) {
max = *c;
*p = c - a;
}
}
return max;
}
main() {
int a[10], i, max, p = 0;
printf("please enter 10 integers:\n");
for (i = 0; i < N; i++) {
scanf("%d", &a[i]);
}
max = fun(a, &p, N);
printf("max=%f, position=%d", max, p);
}
```
对于第二个题目:
```c
#include <stdio.h>
main() {
char s1[80], s2[80];
void strcat(s1[], s2[]);
gets(s1);
gets(s2);
strcat(s1, s2);
puts(s1);
}
void strcat(char s1[], char s2[]) {
int i = 0, j = 0;
while (s1[i] != '\0') i++;
while (s2[j] != '\0') {
s1[i++] = s2[j++];
}
s1[i] = '\0';
}
```
这两个修复后的程序可以正确执行各自的任务。通过学习并改正这些错误,可以帮助理解C语言的基本语法、数据结构处理以及函数的正确调用等关键知识点。
相关推荐





筱筱笎琞
- 粉丝: 11
最新资源
- Asp.net试题库管理系统源码参考与分析
- Java实现23种设计模式详解及代码示例
- 深入了解WCF:构建聊天室软件案例分析
- RTX WEB实现部门自主管理 提升工作效率
- 掌握SQLServer2005:数据库查询性能提升攻略
- 掌握HideWnd:轻松自定义快速隐藏桌面窗口工具
- 掌握ASP.NET 2.0与C# 2005开发动态网站的基础
- 深入理解nachos小型操作系统项目
- Hibernate Api介绍与资源索引
- Red Hat Linux 9.0基础教程详解
- 探索SharePoint 2007:演示文稿共享与管理新功能
- 掌握GridView使用技巧:实例详解
- 探索Linux 1.0源代码的历史与价值
- JavaEE学习实践:Struts2与Hibernate整合实现网上银行模拟
- Cypress USB编程实用程序的详细介绍与应用
- 掌握C/C++编程技巧,以实例提升开发能力
- C++编程新手指南:高级程序员的实践经验
- 利用CSS和JavaScript实现网页中的jQuery随机头像
- 完整网上订购系统教程:JSP+JavaBean实现
- Castle AR技术深入学习与实践
- Java程序员基础入门指南
- VB印刷行内软件包:一键设定多种印刷种类
- Silverlight2.0动态相册源码分享与下载指南
- Firebird数据库链接库(dll)文件的安装与应用