#include <stdio.h> void fun(int b) { if(b<9) fun(b+1); printf("%d",b); } void main( ) { int a=5; fun(a); }
时间: 2024-06-02 16:10:58 浏览: 57
这段代码的输出结果为:56789。
代码分析:
1. 在 `main` 函数中,将变量 `a` 赋值为 5。
2. 调用 `fun(a)` 函数,将 `a` 作为参数传递给 `fun` 函数。
3. 在 `fun` 函数中,如果参数 `b` 小于 9,会递归调用 `fun` 函数,并将参数 `b+1` 作为新的参数传递进去。
4. 如果参数 `b` 大于等于 9,则直接输出参数 `b`。
5. 因为在递归调用 `fun` 函数时先输出后递归,所以最后的输出结果为 56789。
相关问题
#include<stdio.h> void fun(int a, int b) { if(a==b) printf("%d", a); else fun(a+1,b); } int main() { fun(1, 2); return 0; }
这段代码是一个 C 语言程序,实现的是一个递归函数的示例。
首先,定义了一个名为 fun 的递归函数,该函数接受两个整型参数 a 和 b。如果 a 等于 b,则输出 a 的值。否则,递归调用 fun 函数,并将 a 加 1 作为新的参数传入。
在 main 函数中,调用 fun 函数,将 1 和 2 作为参数传入。
在这个示例中,fun 函数的作用是输出从 a 到 b 之间的所有整数,如果 a 和 b 相等,则只输出一个数。由于 fun 函数是递归调用的,因此在每次调用中都会将 a 加 1,直到 a 等于 b。因此,在本例中,fun 函数将输出 1。
#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> #include<unistd.h> #include<pthread.h> int var=0; void *fun(void *); int main() { pthread_t id; int res = pthread_create(&id,NULL,fun,NULL); assert(res == 0); for(int i = 0;i < 10000; i++) { var++; printf("parent is %d\n",var); } exit(0); } void* fun(void *arg) { for(int i = 0;i < 10000; i++) { var--; printf("child is %d\n",var); } }
这是一个使用 pthread 线程库的 C 语言程序,其中包含了一个主线程和一个子线程。
主函数中创建了一个线程 id,并调用 pthread_create 函数创建一个新的线程。该函数的第一个参数是线程 id,第二个参数是线程属性,第三个参数是线程函数,最后一个参数是传给线程函数的参数。在这个程序中,线程属性为 NULL,线程函数为 fun,传递的参数为 NULL。
主线程和子线程都有一个 for 循环,循环的次数为 10000,每次循环都将变量 var 的值加一或减一,并输出当前的 var 值。可以看到,主线程和子线程交替执行,输出的结果也是交替的。
由于主线程和子线程是并发执行的,因此输出的结果可能会出现不同的顺序,这是正常的现象。
阅读全文