C语言填空题库:构建取奇数位数字的程序

5星 · 超过95%的资源 需积分: 46 27 下载量 151 浏览量 更新于2024-07-22 2 收藏 386KB DOC 举报
"C语言程序填空题库,用于帮助准备计算机二级C语言考试的练习" C语言是一种广泛使用的编程语言,尤其在计算机二级考试中,C语言是重要的考核内容。填空题是考试中常见的一种题型,它要求考生根据程序的功能需求,填写正确的代码片段。下面将对给定的两道程序填空题进行详细解析。 ### 第1题 该题目的目标是设计一个函数`fun`,从一个长整型变量`s`中提取出从低位开始的奇数位数字,并按原顺序构成一个新数放在`t`中。给出的代码部分已经完成了大部分工作,但需要补全四个空白处。 1. `*t=s%10;` 这里用 `%` 运算符取`s`除以10的余数,即得到最低位的数字,将其赋值给`t`。 2. `s=s/100;` 在下一次循环中,我们需要跳过下一个偶数位,所以`s`应该除以100,丢弃两位。 3. `*t=s%10*sl+*t;` 用`s`除以10的余数与当前`sl`的乘积加上`t`的当前值,然后赋值给`t`,这样`t`中就包含了新的奇数位数字。 4. `sl=sl*10;` 更新`sl`,使其每次乘以10,为下一次循环存储下一个奇数位的权重。 完整的`fun`函数应该是这样的: ```c void fun(long s, long *t) { long sl = 10; s /= 10; *t = s % 10; while (s > 0) { s = s / 100; *t = s % 10 * sl + *t; sl = sl * 10; } } ``` ### 第2题 这道题目要求编写一个程序,计算人口翻倍的年份。给定初始人口`p1`(1982年的10.3亿人),年增长率`r`(5%),以及起始年份`1982`,我们需要找到人口翻倍的年份。 ```c int main() { double p1 = 10.3, p2, r = 0.05; int year = 1982; p2 = p1 * (1 + r); // 计算下一年的人口数量 while (p1 < p2 * 2) { // 循环直到人口翻倍 p1 = p2; p2 = p1 * (1 + r); year++; } printf("人口翻一番是在公元%d年。\n", year); return 0; } ``` 这个程序首先计算了1983年的人口数,然后进入一个循环,每次循环都将当前年份加1,并更新人口数量。当人口数达到初始人口的两倍时,循环结束,输出年份。 以上两题的解答涵盖了C语言中的基本算术运算、条件判断、循环控制、指针操作以及简单的数学模型应用,这些都是C语言编程基础中的关键知识点。通过类似这样的练习,考生可以提高对C语言的理解和编程能力,更好地应对计算机二级C语言考试。