C语言程序填空题.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
【3.1】该程序是为了实现两个数的对调,不使用第三个变量。填空如下: ```c #include <stdio.h> main(){ int a, b; scanf("%d%d", &a, &b); printf("a=%d,b=%d\n", a, b); a = a + b; // ① b = a - b; // ② a = a - b; // ③ printf("a=%d,b=%d\n", a, b); } ``` 这里的关键是利用加减运算来交换两个数的值。 【3.2】该程序通过近似公式计算π的值。填空如下: ```c #include <math.h> double pi(long n){ double s = 0.0; long i; for(i = 1; i <= n; i++) s = s + 1.0 / (i * i); // ① return 6.0 * s; // ② } ``` 程序通过累加1到n的平方分之一,然后乘以6来估算π。 【3.3】该程序用于寻找一维数组中的最小元素。填空如下: ```c findmin(int *s, int t, int *k){ int p; for(p = 0, *k = p; p < t; p++) if(s[p] < s[*k]) *k = p; // ① } main(){ int a[10], i, *k = &i; for(i = 0; i < 10; i++) scanf("%d", &a[i]); findmin(a, 10, k); printf("%d,%d\n", *k, a[*k]); } ``` 在循环中,当找到比当前最小值小的元素时,更新最小值的索引。 【3.4】该程序计算1-3+5-7+...-99+101的值。填空如下: ```c main(){ int i, t = 1, s = 0; for(i = 1; i <= 101; i += 2){ t *= (-1); // ① s = s + t; // 乘以(-1)以改变符号 t = i; // ② 更新t的值为当前i } printf("%d\n", s); } ``` 通过改变`t`的符号来实现奇数的加减。 【3.5】该程序段计算1/(1*2)+1/(2*3)+...+1/(n*(n+1))。填空如下: ```c s = 0.0; d = 1.0; // ① 初始化d为1.0 k = 0; do{ s = s + d; k++; // ② 增加k的值 d = 1.0 / (k * (k + 1)); // 计算下一个项 }while(k < n); // ③ 检查k是否小于n printf("%f\n", s); ``` 这里使用`do-while`循环来确保至少执行一次累加。 【3.6】该程序统计输入的成绩,找出最高和最低分。填空如下: ```c main(){ float x, amax, amin; scanf("%f", &x); amax = x; amin = x; while((!(x < 0))) { // ① 当输入不为负数时继续 if(x > amax) amax = x; if(x < amin) // ② 当x小于amin时更新amin amin = x; scanf("%f", &x); } printf("\namax=%f\namin=%f\n", amax, amin); } ``` 【3.7】该程序将十进制数转换为二进制,并返回二进制数组。填空如下: ```c fun(int x, int b[]){ int k = 0, r; do{ r = x % 10; // ① 取模 b[k++] = r; x /= 10; // ② 除以10 } while(x); } ``` 【3.8】该程序输出1到100之间满足条件的数。填空如下: ```c main(){ int n, k = 1, s = 0, m; for(n = 1; n <= 100; n++){ k = 1; s = 0; m = n; // ① 将n赋值给m while(m) { k *= m % 10; s += m % 10; m /= 10; // ② 除以10 } if(k > s) printf("%d", n); } } ``` 【3.9】该程序统计3位数的个数,每个数字不同且组成数大于其各位数之和。填空如下: ```c main(){ int i, j, k, count = 0; for(i = 1; i <= 9; i++) for(j = 0; j <= 9; j++) if(i == j) continue; // ① 如果i等于j,则跳过 else for(k = 0; k <= 9; k++) if(k != i && k != j) count++; // ② 如果k不等于i和j,计数器加1 printf("%d", count); } ``` 【3.10】该程序输出个位数为6且能被3整除的100以内所有数。填空如下: ```c main(){ int i, j; for(i = 0; i <= 9; i++) { // ① 由于个位是6,所以百位和十位的组合只需考虑0-9 j = i * 10 + 6; if(j % 3 != 0) continue; // ② 如果j不能被3整除,则跳过 printf("%d", j); } } ``` 【3.11】该程序使用辗转相除法(欧几里得算法)求最大公约数。填空如下: ```c hcf(int m, int n){ int r; if(m < n) { r = m; m = n; // ① 更新m为n n = r; // ② 更新n为r } r = m % n; while(r != 0) { m = n; // ③ 更新m为n n = r; // 更新n为余数r r = m % n; } return n; } ``` 以上是各个程序填空的解答,这些题目旨在帮助读者加深对C语言编程的理解,掌握基本的算法和逻辑思维。
剩余15页未读,继续阅读
- 粉丝: 9
- 资源: 20万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助