void main( )
{ printf(\5 12 12
10. int f( )
{ int s=1; static int i=0; s+=i; i++;
return s ; }
void main() { int i,a=0;
for(i=0;i<5;i++) a+=f( ); printf(\
} 15
11. int f( )
{ int s=1; static int i=0; s+=i; i++; return s ; } main() { int i,a=0;
for(i=0;i<5;i++) a+=f( ); printf(\}
15
12. int a=5;
fun(int b)
{ static int a=10; a+=b++;
printf(\}
main() { int c=20; fun(c); a+=c++;
printf(\}
30 25
13.fun(int a, int b)
{ if(a>b) return(a);
第16页(共41页)
else return(b);
} main()
{ int x=3, y=8, z=6, r; r=fun(fun(x,y), 2*z); printf(\} 12
14. int a=100,b=200;
void f( )
{ printf(“%d,%d\\n”,a,b); a=1;b=2; }
void main()
{ int a=5,b=7 ; f( );
printf(“%d,%d\\n”, a,b) ; }
100,200 5,7
15. fun( int x)
{ static int a=3;
a+=x ; return a ; }
void main ( ) { int k=2,m=1,n; n=fun(k) ; n=fun(m);
printf(“%d\\n”,n) ; } 6
第10章 指针 一、选择题
1.设有定义 int a[ ]={1,5,7,9,11,13}, *p=a+3; 则*(p-2) , *(a+4) 的值是
A)5 11 B)1 9 C)5 9 D)有错误
2. 设有定义 int a[ ]={1,5,7,9,11,13}, *p=a+3; 则*(p-3) , *(a+2) 的值是
A)5 11 B)1 7 C)5 9 D)有错误
3.对于int a[ ] = {1,2,3,4,5,6}, p; p=a; *(p+3)+ = 2; 则*p, *(p+3)的值为 A) 1 5 B) 1 3 C) 1 4 D) 1 6
第17页(共41页)
4. 设有定义 char *p=“abcde\\Ofghjik\\0”; 则printf(“%d\\n”,strlen(p));输出结果是
A) 12 B) 15 C) 6 D) 5 5.下程序段: char s[20 ]=\的输出结果是 A) abcdABCD B) ABCDabcd C) ABCD D) abcd 6. 设有定义语句:char str[][20]={\
则printf(\输出结果是
A)0 B) 5 C)7 D)20 7.能正确运用指针变量的程序段是
A)int *i=NULL; B) float *f=NULL;
scanf(\ *f=10.5; C)char t='m', *c=&t; D) long *L;
*c=&t; L='\\0';
8.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。 #define N 10
void arrin(int x[N]) { int i=0; while(i scanf(\ } 在下划线处应填入的是 A)x+i B)&x[i+1] C)x+(i++) D)&x[++i] 9.若有以下定义和语句:int a=4,b=3,*p,*q, *w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是 A)*q=0; B)w=p; C)*p=a; D)*p=*w; 10.下列选项中正确的语句组是 A)char s[8]; s={\ B)char *s; s={\C)char s[8]={\ D)char *s; s=\11.若有: int a[10],*p=&a[0];,关于数组名a的不正确的说法是 A)a是个数组指针 B)数组名a表示数组的首地址 C)数组名a与a[0]等价 D)a和p都指向同一个存储单元 12.已定义以下函数 fun(int *p) { return *p; } 该函数的返回值是 A)不确定的值 B)形参p中存放的值 C)形参p所指存储单元中的值 D)形参p的地址值 二、填空题 1.char str1[10],str2[10]={\,则能将字符串books赋给数组str1的标准函数是 strcpy(str1, str2) 2.若有说明:char s1[4]=\则我们称指针变量 ptr指向数组s1的首地址 , 而*(ptr+1)的值是2 3.对于char str[ ] = “1234”, *p = str; 则 *(p + 2)的结果是3。 4.已知:int a[5]={1,2,3,4,5}, *p=a+2; 则*P的值是3。 第18页(共41页) 5.若有说明:char *s=\则我们称指针变量S指向字符串的首地址 ,而S[2]的值是C 三、读程序,写出程序执行结果 1.void main() { char *p, str[20]=\ p=\ strcpy(str+1 , p+1) ; printf(\} xABCDEFG 2.void main() { char *p=“abcdba”,*q; int flag=1; q=p+strlen(p)-1; while(p no 3. void fun(char *a, char *b) { a=b; (*a)++; } main() { char c1='A',c2='a',*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf(\} Ab 4.void f(int *s , int n1 , int n2) { int i , j , t ; i=n1; j=n2; while(i { t=*(s+i) ; *(s+i)=*(s+j) ; *(s+j)= t ; i++ ; j- - ; } } main() { int a[]={11,55,66,77,88,99},i; f(a,1,5); for(i=0;i<6;i++)printf(“=”,a[i]); } 11 99 88 77 66 55 第19页(共41页) 5. f(int *x,int n) { int *p, *s; for(p=x,s=x;p-x } main() { int a[5]={1,12,10,16,8}; printf(“%d\\n”,f(a,5)); } 16 6.void main ( ) { char a[20]=“very lucky”, c ; int i, j; j= strlen(a)-1 ; for (i=0; j>i; i++,j--) { c=*(a+i); *(a+i)=*(a+j); *(a+j)=c; } puts(a); } ykcul yrev 7. main() { int a,k,*p=&a; a=6; for(k=1;k<=(*p);k++) if((*p)%k!=0)printf(“]”,k); } 4 5 8. void main() { char x[]=\char *ptr; for(ptr=&x[2];ptr 9.void main() { char a[]=\ int k=0; while(*p) { if(*p 第20页(共41页) 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库石大在线C语言综合复习题(4)在线全文阅读。
相关推荐: