Dotcpp  >  试卷列表  >  C语言对函数的进一步讨论

C语言对函数的进一步讨论


第1题

设有定义语句int(*f)(int);,则以下叙述中正确的是(   )。

共 5 分 

第2题

设有以下函数:

1
void fun(int n,char* s){……}

则下面对函数指针的定义和赋值均是正确的是()。

共 5 分 

第3题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int add(int a,int b)
{
    return (a+b);
}
main()
{
    int k, (*f)(),a=5,b=10;
    f=add;
    
}

则以下函数调用语句错误的是()。

共 5 分 

第4题

以下叙述中正确的是()。

共 5 分 

第5题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int fun(int n)
{
    if(n==1)
        return 1;
    else
        return(n+fun(n-1));
}
main()
{
    int x;
    scanf("%d",&x);
    x=fun(x);
    printf("%d\n",x);
}

执行程序时,给变量x输入10,程序的输出结果是()。

共 5 分 

第6题

有以下程序:

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int fun(int n)
{
    if(n)return fun(n-1)+n;
    else return 0;
}
main()
{
    printf("%d\n",fun(3));
}

程序的运行结果是()。

共 5 分 

第7题

有如下程序:

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
void convert(char ch)
{
if(ch<'D')convert(ch+1);
printf("%c",ch);
}
main()
{
convert('A');
printf("%\n");
}

程序运行后的输出结果是()。

共 5 分 

第8题

设有如下函数定义:

1
2
3
4
5
6
int fun(int k)
{
    if(k<1) return 0;
    else if(k==1) return 1;
    else return fun(k-1)+1;
}

若执行调用语句:n=fun(3);,则函数fun()总共被调用的次数是()。

共 5 分 

第9题

以下程序:

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
void fun(int x)
{
    if(x/2>1) fun(x/2);
    printf("%d",x);
}
main()
{
    fun(7);
    printf("\n");
}

程序运行后的结果是()。

共 5 分 

第10题

有以下程序:

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
void fun(int n)
{
    int i;
    if((i=n/10)!=0)
        fun(i);
    putchar(n%10+'0');
}
main()
{
    fun(256);
}

程序运行后的输出结果是()。

共 5 分 

第11题

有如下程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
void get_put()
{
    char ch;
    ch=getchar();
    if(ch!='\n')get_put();
    putchar(ch);
}
main()
{
    get_put();
    printf("\n");
}

程序运行时,输入1234<回车>,则输出结果是()。

共 5 分 

第12题

有如下程序:

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
void get_put()
{
    char ch;
    ch=getchar();
    if(ch!='\n')get_put();
    putchar(ch);
}
main()
{
    get_put();
}

程序运行时,输入ABCD<回车>,则输出结果是()。

共 5 分 

第13题

有以下程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
void fac2(int);
void fac1(int n)
{
    printf("*");
    if(n>0)fac2(n-1);
}void fac2(int n)
{
    printf("#");
    if(n>0)fac2(--n);
}
main()
{
    fac1(3);
}

程序的运行结果是()。

共 5 分 

第14题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int fun(int x)
{
    int p;
    if(x==0||x==1)
        return (3);
    p=x-fun(x-2);
    return p;
}
main()
{
    printf("%d\n",fun(7));
}

执行后的输出结果是()。

共 5 分 

第15题

有以下程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int f(int x)
{
    int y;
    if(x==0||x==1)
        return (3);
    y=x*x-f(x-2);
    return y;
}
main()
{
    int z;
    z=f(3);
    printf("%d\n",z);
}

程序的运行结果是()。

共 5 分 

第16题

有以下程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int f(int t[],int n);
main()
{
    int a[4]={1,2,3,4},s;
    s=f(a,4);
    printf("%d\n",s);
}
int f(int t[],int n)
{
    if(n>0)return t[n-1]+f(t,n-1);
    else return 0;
}

程序运行后的输出结果是()。

共 5 分 

第17题

有以下程序:

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int fun(int a,int b)
{
    if(b==0)return a;
    else return(fun(--a,--b));
}
main()
{
    printf("%d\n",fun(4,2));
}

程序运行的结果是()。

共 5 分 

第18题

若有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int f(int a[],int n)
{
    if(n>1)
    {
        int t;
        t=f(a,n-1);
        return t>a[n-1]?t:a[n-1];
    }
    else
        return a[0];
}
main()
{
    int a[]={8,2,9,1,3,6,4,7,5};
    printf("%d\n",f(a,9));
}

则程序的输出结果是()。

共 1 分 

第19题

有以下程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int f(int x[],int n)
{
    if(n>1)
    {
        f(&x[1],n-1);
        printf("%d,",x[0]);
    }
    else
        printf("%d,",x[0]);
}
main()
{
    int z[6]={1,2,3,4,5,6};
    f(z,6);
    printf("\n");
}

程序的运行结果是()。

共 5 分 

第20题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
void fun(int n,int *s)
{
    int f;
    if(n == 1)*s = n + 1;
    else
    {
        fun(n-1,&f);
        *s = f;
    }
}
main()
{
    int x = 0;
    fun(4,&x);
    printf("%d\n",x);
}

程序运行后的输出结果是()。

共 3 分 

第21题

有如下程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int sum(int *array,int len)
{
    if(len == 0)
        return array[0];
    else
        return array[0]+sum(array+1,len-1);
}
main()
{
    int array[5] = {1,2,3,4,5};
    int res = sum(array,4);
    printf("%d\n",res);
}

程序运行后的输出结果是()。

共 2 分