有返回值的子程序通常在C语言中通过`return`语句实现。下面是一个简单的例子,展示了如何编写一个带有返回值的子程序,并在主程序中调用它。
```c
include
// 声明子程序
int in(int elem, int s[], int size);
int main() {
int s[] = {1, 2, 3, 4, 5};
int x;
x = in(2, s, 5); // 调用子程序并传入参数
printf("x=%d
", x); // 打印子程序的返回值
return 0;
}
// 定义子程序
int in(int elem, int s[], int size) {
for (int i = 0; i < size; i++) {
if (elem == s[i]) {
return 0; // 如果找到元素,返回0
}
}
return 1; // 如果没有找到元素,返回1
}
```
在这个例子中,子程序`in`接受三个参数:一个整数`elem`,一个整数数组`s`,以及数组的大小`size`。子程序的目的是检查`elem`是否在数组`s`中。如果在,子程序返回0;如果不在,返回1。
主程序中,我们定义了一个数组`s`,然后调用子程序`in`,并将结果赋值给变量`x`。最后,我们打印出`x`的值,这是子程序的返回值。
注意:
1. 子程序中的`for`循环在找到匹配的元素后立即通过`return 0;`退出,并且由于`for`循环后面没有花括号,所以`return 0;`语句只执行到`return`这一句。
2. `return 1;`语句是必须的,因为它表示子程序正常结束,没有找到匹配的元素。
3. 子程序的参数列表和返回类型需要与调用时一致。在这个例子中,子程序返回一个整数。
这个例子展示了如何在C语言中编写和调用一个带有返回值的子程序。根据你的具体需求,你可以修改子程序的逻辑和参数列表。