C语言填空题库:构建取奇数位数字的程序
![](https://csdnimg.cn/release/wenkucmsfe/public/img/starY.0159711c.png)
"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语言考试。
360 浏览量
189 浏览量
2169 浏览量
189 浏览量
2169 浏览量
344 浏览量
112 浏览量
2021-10-08 上传
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
qq_25750743
- 粉丝: 0
最新资源
- LINUX集群部署指南:环境、服务与配置详解
- SOA架构详解:服务导向与构件实现
- 20条关键法则:深度解析商业需求分析
- DOS命令大全:网络连接、用户管理与服务控制
- DSP硬件设计详解:从原理图到PCB
- phpMyAdmin中字符集与整理的含义详解
- .NET面试题解析:高级开发者篇
- Jboss EJB3.0实战教程:从入门到精通
- 构建开源GIS系统:Tomcat+Geoserver+MapBuilder+uDig+PostGIS的详细教程
- Java面试题库:接口、异常、垃圾回收与线程同步详解
- WTL开发文档深度解析:BmpView示例与功能详解
- WTL开发文档:从基础到优势,对比MFC详解
- Oracle数据库启动与关闭详解
- 优化SNMP动态MIB结构:多路径树与高效查找算法
- AS3.0 API详解:核心类与错误处理
- Tomcat配置指南:JSP、Servlet与JavaBean的部署