C语言编程:2013年计算机二级考试斐波纳契数列与字符串处理

需积分: 0 0 下载量 116 浏览量 更新于2024-08-04 收藏 31KB DOC 举报
"2013年计算机二级考试《C语言》的上机试题及答案,包含填空题和改错题,旨在考察考生对C语言的理解和编程能力,特别是涉及斐波纳契数列的计算以及字符串处理和比较。" 这篇文档提供了两道编程题目,分别针对C语言的不同知识点进行测试。首先是一道填空题,涉及斐波纳契数列的实现。斐波纳契数列是一个序列,其中每个数是前两个数的和,通常以0和1开始。题目要求在给定的`fun`函数中填入适当的条件和表达式来生成这个数列。 填空题解答: ```c intfun(intn) { if(n==0 || 0==n || !n) // 第1处填空,判断n是否为0 return0; else if(n==1 || 1==n) // 第2处填空,判断n是否为1 return1; else return fun(n-1) + fun(n-2); // 第3处填空,递归调用,计算前两个数的和 } ``` 此函数通过递归方式实现了斐波纳契数列。当n为0或1时,直接返回对应的数;否则,返回前两个斐波纳契数的和。 接下来是一道改错题,目的是比较两个字符串的字符并根据ASCII值创建新的字符串。原始代码中存在错误,需要找出并修正。 改错题解答: ```c voidfun(char*p,char*q,char*c) { int k = 0; // 修改1:初始化k为0,而不是1,因为数组索引从0开始 while(*p != *q && *p != '\0' && *q != '\0') // 修改2:增加对字符串结束标志'\0'的检查 { if(*p < *q) c[k] = *q; else c[k] = *p; p++; q++; k++; } } ``` 在改错后的版本中,`k`被正确地初始化为0,表示数组的起始索引。同时,在`while`循环条件中,增加了对字符串结束标志`\0`的检查,确保在字符串结束时停止比较和填充新字符串。 这两个题目涵盖了C语言的基本概念,包括递归函数、条件判断、字符串操作和字符比较,这些都是C语言学习者必须掌握的关键技能。通过解决这样的问题,考生可以加深对C语言的理解,并提高实际编程能力。