C语言编程练习:圆周长、数字积与整数筛选

需积分: 10 4 下载量 41 浏览量 更新于2024-09-03 收藏 235KB DOCX 举报
"该文档是一个计算机二级C语言的上机考试题库,包含了填空题、改错题和编程题三种类型的题目,旨在帮助学习者巩固C语言的基础知识,特别是循环、函数调用以及条件判断等核心概念。" 在计算机二级C语言的学习中,掌握基本的语法和编程技巧至关重要。题库中的填空题、改错题和编程题都是常见的练习形式,能够有效提升学习者的编程能力和问题解决能力。 1. 填空题: 题目要求实现一个计算1/4圆周长的函数。圆周长公式为 `L = Πd`,其中 `d` 代表直径。题目给出的函数 `fun` 已经定义了计算圆周长的部分,只需要将常量 π 的值(3.14159)乘以直径 `d` 再除以4即可。在实际编程中,可以使用 `#define` 预处理器指令来定义π的值,以提高代码可读性,如 `#define PI 3.14159`。 ```c #include<stdio.h> #define PI 3.14159 double fun(double d) { return PI * d / 4.0; } main() { double z; printf("请输入圆的直径:"); scanf("%lf", &z); printf("L=%lf\n", fun(z)); } ``` 2. 改错题: 题目要求计算正整数m的各位数字之积。原始代码中,函数 `fun` 通过 `do...while` 循环实现了这一功能,但需要注意的是,循环条件应改为 `while(n > 0)`,以确保在m为0时也能正确结束循环。同时,为保持原程序结构不变,我们需要保留原有代码结构,只修改循环条件。 ```c #include<stdio.h> #include<conio.h> long fun(long n) { long r = 1; do { r *= n % 10; n /= 10; } while (n > 0); // 修改循环条件为 n > 0 return(r); } main() { long m; printf("\n请输入一个数字:"); scanf("%ld", &m); printf("\n%ld\n", fun(m)); } ``` 3. 编程题: 本题要求编写一个函数 `fun`,找出1到m之间(含m)所有能被7或11整除的整数,并存储在数组 `b` 中,通过指针 `n` 返回这些数的个数。使用两个嵌套循环可以达到目的,外层循环遍历1到m,内层循环检查是否能被7或11整除。如果满足条件,将数字存入数组 `b` 并增加计数器 `j`。 ```c #include<conio.h> #include<stdio.h> #define N 100 void fun(int m, int b[], int *n) { int i, j = 0; *n = 0; for (i = 1; i <= m; i++) { if (i % 7 == 0 || i % 11 == 0) { b[j] = i; j++; } } *n = j; } main() { int a[N], n, i; FILE *out; fun(20, a, &n); for (i = 0; i < n; i++) { if ((i + 1) % 10 == 0) // 每10个数换行输出 printf("\n"); printf("%d ", a[i]); } printf("\n"); } ``` 通过解答这些题目,学习者不仅可以加深对C语言基本语法的理解,还能锻炼到条件判断、循环控制、函数调用以及数组操作等技能,为后续更复杂的编程任务打下坚实基础。