11. 设int b[ ]={1,2,3,4},y,*p=b; 则执行语句y=*p++;之后,变量y的值为( )
A)1 B)2 C)3 D)4
二、填空题:
1. 以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。 请填空。
#include \ main()
{int *a,*b,*c,num,x,y,z; a=&x;b=&y;c=&z;
printf(\输入3个整数:\ scanf(\
printf(\ num=*a;
if(*a>*b)__num=*b____; if(num>*c)_num=*c____;
printf(\输出最小整数:%d\\n\ }
2. 下面程序段的运行结果是__hELLO!______. char s[80],*sp=\ sp=strcpy(s,sp); s[0]='h'; puts(sp);
3. 下面程序段的运行结果是___ef_____. char str[]=\ printf(\若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是__4____. *(a+5)的值是____12_____.
4. 若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是__8___. *(*(a+1)+0))的值是____8____.
5. 以下程序将数组a中的数据按逆序存放,请填空。 #define M 8 void main()
{int a[M],i,j,t;
for(i=0;i t=*(a+i);_*(a+i)=*(a+j)_______;*(__a+j_____)=t; i++;j--; } for(i=0;i 6. 若有定义:int a[3][5],i,j;(且0<=i<3,0<=j<5),则a数组中任一元素可用 五种形式引用。它们是: (1)a[i][j] (2)*(a[i]+j) (3)*(*(a+i)+j); (4)(*(a+i))[j] (5)*(__*a__+5*i+j) 7. 下面程序的运行结果是_Coble dBase C language Pascal________. void main() {char *a[]={\ char (**p)[]; int j; p=a+3; for(j=3;j>=0;j--)printf(\ } 8. char (*pa)[10];则pa的类型是:__数组指针_ ___。 9. 设int a[10],b[3][3];数组元素a[5]和b[1][2]分别用指针表示的形式是____*(a+5)_________和_____*(*(b+1)+2)________。 第6章 函数 习题 1. 有如下程序 #include {if(n>2) return(fib(n-1)+fib(n-2)); else return(2); } void main( ) { printf(\,fib(3));} 该程序的输出结果是( ) A、2 B、 4 C、 6 2. 在C语言中,函数的隐含存储类别是( ) A、 auto B、 static C、 extern 3. 以下所列的各函数首部中,正确的是( ) A、 void play(var:Integer,var b:Integer) B、 void play(int a,b) C、 void play(int a,int b) D、 Sub play(a as integer,b as integer) 4. 以下程序的输出结果是( ) A、 0 B、 29 C、 31 fun(int x,int y,int z) { z=x*x+y*y;} main( ) { int a=31; fun(5,2,a); printf(\,a); } 5. 以下程序的输出结果是( ) f(int b[ ],int m,int n) {int I,s=0; for(i=m;i main( ) {int x,a[ ]={1,2,3,4,5,6,7,8, x=f(a,3,7); D、8 D、 无存储类别 D、 无定值 9}; printf(\ } A、10 B、18 C、8 D、15 6. 以下程序的输出结果是( ) A、1 B、2 C、3 D、4 long fun( int n) { long s; if(n==1 || n==2) s=2; else s=n-fun(n-1); return s;} main( ) { printf(\\\n\; } 7. 以下程序的输出结果是( ) int f( ) { static int i=0; int s=1; s+=i;i++; return s; } main( ) { int i,a=0; for(i=0;i<5;i++) a+=f(); printf(\,a); } A、20 B、24 C、25 D、15 8. 以下程序的功能是调用函数fun计算:m=1-2+3-4+?+9-10,并输出结果。请填空。 int fun( int n) { int m=0,f=1,i; for(i=1; i<=n; i++) { m+=i*f; f= __-f___________ ; } return m; } main() { printf(\f(10)______ ); } 9. 以下程序输出的最后一个值是______120_______ int ff(int n) { static int f=l; f=f*n; return f; } main( ) { int i; for(i=1;i<=5;i++ ) printf(\\\n\,ff(i)); } 10. 以下函数的功能是:求x的y次方,请填空。 double fun( double x,int y) { int i; double z; for(i=1, z=x; i 11. 以下正确的说法是( ) A、用户若需要调用标准库函数,调用前必须重新定义 B 、用户可以重新定义标准库函数,如若此,该函数将失去原有定义 C 、系统不允许用户重新定义标准库函数 D 、用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。 12. C 语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是( ) A、地址传递 B 、值传递 C 、有实参传给形参,再由形参传给实参 D 、由用户指定传递方式 13. 下面程序的输出是( ) int i=2 ; printf(“%d%d%d”,i*=2,++i,i++) ; A、 8 , 4 , 2 B 、 8 , 4 , 3 C、 4 , 4 , 5 D 、 4 , 5 , 6 14. 以下不正确的说法是( ) A 、 register 变量可以提高变量使用的执行效率 B 、 register 变量由于使用的是 CPU 的寄存器,其数目是有限制的 C 、 extern 变量定义的存储空间按变量类型分配 D 、全局变量使得函数之间的 “ 耦合性 ” 更加紧密,不利于模块化的要求 15. C 语言函数返回类型的默认定义类型是___int_________ 16. 函数的实参传递到形参有两种方式:_____传值_______ 和_____传址______ 。 17. C 语言变量按其作用域分为____全局变量________和___局部变量_________ 。按其生存期分为____静态________和___动态________ 。 18. 已知函数定义 : { ?? }, 其函数声明的两种写法为__ void dothat(int n,double x);__________ , _____ void dothat(int ,double );_______ 。 19. C 语言变量的存储类别有____auto________ ,_____static_______ ,____register________ 和______extern______ 。 20. 在一个 C 程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为 ____extern________。