通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
第1题
设有定义语句int(*f)(int);,则以下叙述中正确的是( )。
f是指向函数的指针变量,该函数具有一个int类型的形参
f是基类型为int的指针变量
f是指向int类型一维数组的指针变量
f是函数名,该函数的返回值是基类型为int类型的地址
第2题
设有以下函数:
void fun(int n,char* s){……}
则下面对函数指针的定义和赋值均是正确的是()。
void(*pf)();pf=fun;
void * pf();pf=fun;
void * pf();* pf=fun;
void(* pf)(int,char);pf=&fun;
第3题
有以下程序
#include <stdio.h> int add(int a,int b) { return (a+b); } main() { int k, (*f)(),a=5,b=10; f=add; … }
则以下函数调用语句错误的是()。
k=*f(a,b);
k=add(a,b);
k=(*f)(a,b);
k=f(a,b);
第4题
以下叙述中正确的是()。
简单递归不需要明确的结束递归的条件
任何情况下都不能用函数名作为实参
函数的递归调用不需要额外开销,所以效率很高
函数既可以直接调用自己,也可以间接调用自己
第5题
#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,程序的输出结果是()。
55
54
65
45
第6题
有以下程序:
#include <stdio.h> int fun(int n) { if(n)return fun(n-1)+n; else return 0; } main() { printf("%d\n",fun(3)); }
程序的运行结果是()。
4
5
6
7
第7题
有如下程序:
#include <stdio.h> void convert(char ch) { if(ch<'D')convert(ch+1); printf("%c",ch); } main() { convert('A'); printf("%\n"); }
程序运行后的输出结果是()。
ABCDDCBA
ABCD
A
DCBA
第8题
设有如下函数定义:
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()总共被调用的次数是()。
2
3
第9题
以下程序:
#include <stdio.h> void fun(int x) { if(x/2>1) fun(x/2); printf("%d",x); } main() { fun(7); printf("\n"); }
程序运行后的结果是()。
137
731
73
37
第10题
#include <stdio.h> void fun(int n) { int i; if((i=n/10)!=0) fun(i); putchar(n%10+'0'); } main() { fun(256); }
256
652
2560
52
第11题
#include <stdio.h> void get_put() { char ch; ch=getchar(); if(ch!='\n')get_put(); putchar(ch); } main() { get_put(); printf("\n"); }
程序运行时,输入1234<回车>,则输出结果是()。
1234
4321
4444
1111
第12题
#include <stdio.h> void get_put() { char ch; ch=getchar(); if(ch!='\n')get_put(); putchar(ch); } main() { get_put(); }
程序运行时,输入ABCD<回车>,则输出结果是()。
DCDC
BABA
第13题
#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); }
*###
*##*
**##f
*#*#
第14题
#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)); }
执行后的输出结果是()。
0
第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); }
9
8
第16题
#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; }
10
14
第17题
#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)); }
程序运行的结果是()。
1
第18题
若有以下程序
#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)); }
则程序的输出结果是()。
第19题
#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"); }
6,5,4,3,2,1,
1,1
1,1,1,1,1,1,
1,2,3,4,5,6,
第20题
#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); }
第21题
#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); }
15
选择题(1 - 21题,共计100分)