C语言编程:Fibonacci数列、删除数字字符、完数与数位乘积判断

需积分: 5 7 下载量 73 浏览量 更新于2024-08-03 收藏 165KB PDF 举报
本文介绍了四道C语言填空题,涵盖了数组、循环、条件判断、字符串处理和数学逻辑等基础知识。题目旨在考察对Fibonacci数列的理解,字符串操作,完数检测以及数字属性分析。 一、Fibonacci数列 在C语言程序中,Fibonacci数列的实现通过数组存储前10项。初始化`fib[0]`和`fib[1]`为1,然后使用循环计算后续项。循环内部的填空部分应填写`+`,表示将前两项相加赋值给当前项`fib[i]`。程序还包含一个打印输出部分,确保每行最多显示5个数,使得输出更易读。 ```c for (i = 2; i < 10; i++) fib[i] = fib[i - 2] + fib[i - 1]; // 填空处填写 "+" ``` 二、删除字符串中的数字字符 该题目的目的是从输入的字符串中移除所有数字。`fun`函数遍历字符串,遇到数字则跳过,非数字字符则复制到原字符串的前面。填空处`p++`后应填写`;`表示结束语句,`*s++=`后面填写`*p`,将非数字字符复制回字符串的起始位置,并更新指针。最后,调用`fun`函数处理字符串。 ```c void fun(char *s) { char *p = s; // 填空3分:初始化指针p while (*p) { if ((*p >= '0') && (*p <= '9')) p++; else *s++ = *p++, *s = 0; // 填空处填写 "*s = *p, *s = 0" } } ``` 三、输出1000以内的完数及其因子 此题要求找出1000以内所有完数,并打印其因子。遍历1到1000的整数,对每个数检查其因子之和是否等于数本身。使用两个嵌套循环,内层循环用于找到因子,当找到因子时,将其添加到数组`a`中,并累加到`s`。填空处应填写`break`,表示找到一个因子后跳出内层循环,`a[k++] = j;`表示将因子添加到数组并更新索引,`j < k`检查是否已经遍历完所有因子。 ```c for (j = 1; j < m; j++) { if (m % j == 0) { s = s + j; a[k++] = j; // 填空2分:将因子添加到数组 break; // 填空处填写 "break" } } ``` 四、输出符合条件的数 最后一个问题涉及找到1到100之间满足条件的数,即数字乘积大于数字之和。对于每个数字`n`,计算其各位数字的乘积`k`和和`s`,填空处应填写`*10 + m%10`,将数字的个位数添加到`n`的剩余部分,以便逐步处理每一位数字。 ```c while (m != 0) { s = s + m % 10; k = k * (m % 10); // 填空处填写 "m % 10",表示提取数字的个位 m = m / 10; } ``` 这四道题目综合了C语言的基本编程技巧和逻辑思维,是很好的期末复习练习。通过解决这些问题,学生可以巩固对C语言基础知识的理解。