1、编写一个返回两个浮点数平均值的函数。编写一个小程序来测试该函数并记录输出。接着,将该函数放在一个单独的源文件中,但“忘记”在包含主程序的文件中声明该函数,会发生什么?现在将函数声明添加到包含主程序的文件中,并验证该声明是否解决了问题。
函数定义与调用注意事项
编写函数时,可定义一个函数接收两个浮点数参数,返回它们的平均值:
double average(double a, double b) {
return (a + b) / 2.0;
}
测试程序可在主函数中调用该函数并输出结果:
#include <stdio.h>
int main() {
double result = average(3.5, 4.5);
printf("Average: %f\n", result);
return 0;
}
函数声明的重要性
若将函数放在单独源文件且不在主程序文件声明,编译器和链接器可能不报错,但会出现以下问题:
- 函数接收浮点参数时会收到垃圾值
- 返回浮点类型值时也会返回垃圾值
解决方案
添加函数声明后,可解决此问题,确保函数正常接收参数和返回值。应在主程序文件或对应的头文件中添加如下声明:
double average(double a, double b);
这样编译器在编译阶段就能正确识别函数的参数类型和返回类型,保证程序的正确执行。
2、假设你有一个函数 int FlipCoin() ,它随机返回 1 代表正面,返回 0 代表反面。解释以下代码片段是如何工作的: int flipResult; if ( flipResult = FlipCoin() ) printf("Heads is represented by %d\n", flipResult ); else printf("Tails is represented by %d\n", flipResult );
代码先声明一个整型变量 flipResult ,接着调用 FlipCoin() 函数,该函数随机返回 0 或 1,并将返回值赋给 flipResult 。然后判断 flipResult 的值:
- 若为 1(代表正面),执行
if语句块,输出Heads is represented by 1; - 若为 0(代表反面),执行
else语句块,输出Tails is represented by 0。
3、编写一个程序,计算并存储一个4×4的单位矩阵。当程序完成矩阵计算后,应以格式良好的方阵形式输出结果。
以下是一个用C语言编写的示例程序来实现该功能:
#include <stdio.h>
#define SIZE 4
int main() {
int matrix[SIZE][SIZE];
// 计算4x4单位矩阵
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
if (i == j) {
matrix[i][j] = 1;
} else {
matrix[i][j] = 0;
}
}
}
// 输出格式化的方阵
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
该程序首先定义了一个4×4的二维数组 matrix ,然后使用嵌套循环将对角线上的元素设为1,其余元素设为0,最后再次使用嵌套循环将矩阵按方阵形式输出。
4、斐波那契数列(http://en.wikipedia.org/wiki/Fibonacci_number)是一个在自然界和数学中多处出现的数字序列。前两个斐波那契数定义为 0 和 1。第 n 个斐波那契数是前两个斐波那契数之和:Fn = Fn - 1 + Fn - 2。编写一个程序,计算并存储前 20 个斐波那契数。计算完这些数字后,程序应将它们逐行输出,并显示其索引。输出行应类似如下格式:斐波那契数 2 是:1。使用 #define 来控制程序生成的斐波那契数的数量,以便于修改。
以下是一个满足需求的 C 语言程序示例:
#include <stdio.h>
#define NUM_FIBONACCI 20
int main() {
int fib[NUM_FIBONACCI];
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i < NUM_FIBONACCI; i++) {
fib[i] = fib[i - 1] + fib[i - 2];

最低0.47元/天 解锁文章
8万+

被折叠的 条评论
为什么被折叠?



