2008年4月二级C语言上机考试题库解析

需积分: 9 125 下载量 91 浏览量 更新于2024-10-30 2 收藏 1.36MB DOC 举报
"该资源为二级C语言的上机考试真题集,共计100套题目,每套包括3道题目,分别涉及程序填空、程序修改和程序设计。考生在实际考试中会随机抽取一套进行答题。提供的示例题目是关于去除整数中偶数位的题目,要求考生填充程序中的空白处以实现功能。" 在这道题目中,我们需要理解C语言的基本语法和逻辑,以及如何处理整数的各个位数。首先,`fun`函数的目的是从给定的无符号长整型变量`n`中去除所有偶数位上的数字,保留奇数位的数字,并返回新数。以下是解题的关键点: 1. 第一处填写:`t=*n%__1__;` 这里要获取`n`的个位数,因此用`n`除以10的余数即为个位数,所以填写`10`。 2. 第二处填写:`if(t%2!=__2__)` 这个条件语句用来判断`t`是否为奇数,因为我们要去除偶数位,所以条件是`t`不能被2整除,所以填写`0`。 3. 第三处填写:`*n=__3__;` 在循环结束后,`n`应该更新为新形成的数`x`,所以填写`x`。 下面是完整的程序代码: ```c #include<stdio.h> void fun(unsigned long *n) { unsigned long x = 0, i; int t; i = 1; while (*n) { t = *n % 10; // 取个位数 if (t % 2 != 0) // 判断是否为奇数 { x = x + t * i; // 保留的奇数位累加到x i = i * 10; // 更新i,以便下次累加到正确的位置 } *n = *n / 10; // 去除最低位 } *n = x; // 更新n为新形成的数 } main() { unsigned long n = -1; while (n > 99999999 || n < 0) { printf("Please input (0 < n < 100000000): "); scanf("%ld", &n); } fun(&n); printf("\nThe result is: %ld\n", n); } ``` 通过这个例子,我们可以复习C语言的指针操作、条件语句、整数的位运算以及循环控制等基础知识。对于准备二级C语言上机考试的考生来说,理解和解答这类题目是必备的技能。练习这100套题目可以帮助考生熟悉考试的题型和提升编程能力。