C语言程序设计综合练习题 下载本文

} main()

{ int x=3, y=8, z=6, r; r=fun(fun(x,y), 2*z); printf(\}

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) ; }

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) ; }

第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

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]={\

第16页(共23页)

则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的标准函数是 。 2.若有说明:char s1[4]=\则我们称指针变量 ptr指向数组s1的 ,而

*(ptr+1)的值是 3.对于char str[ ] = “1234”, *p = str; 则 *(p + 2)的结果是 。 4.已知:int a[5]={1,2,3,4,5}, *p=a+2; 则*P的值是 。

5.若有说明:char *s=\则我们称指针变量S指向字符串的 ,而S[2]的值是

三、读程序,写出程序执行结果

第17页(共23页)

1.void main()

{ char *p, str[20]=\ p=\ strcpy(str+1 , p+1) ; printf(\} 2.void main()

{ char *p=”abcdba”,*q; int flag=1; q=p+strlen(p)-1;

while(p

}

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(\} 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]); }

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));

第18页(共23页)

}

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);

}

7. main()

{ int a,k,*p=&a; a=6;

for(k=1;k<=(*p);k++)

if((*p)%k!=0)printf(“]”,k); }

8. void main()

{ char x[]=\char *ptr;

for(ptr=&x[2];ptr

9.void main()

{ char a[]=\

int k=0; while(*p)

{ if(*p

10. void main()

{ int k,a[10],*p=a ;

for(k=1;k<10;k++) *(p+k-1)=k; for(k=0;k<5;k++) *(p+9-k)=*(p+k); for(k=0;k<10;k++) printf(“=”,*p++); }

11.void main()

{ char *p=”China University of Petroleum!”, *p1; int n=1; p1=p;

while(*++p)n++;

printf(%s ,%d\\n”,p1+20,n); }

12.void fun(char *c,int d)

{ *c=*c+1;d=d+1;

第19页(共23页)

printf(“%c,%c,”,*c ,d);

}

main()

{ char a='A',b='a';

fun(&b,a); printf(\}

13. fun(char *w, int n)

{ char t, *s1, *s2; s1=w; s2=w+n-1;

while(s1

main()

{ char *p=\fun(p, strlen(p)); puts(p); }

14.int fun(char *s1,char *s2) { int i=0;

while(s1[i]==s2[i] && s2[i]!='\\0') i++;

return (s1[i]=='\\0' && s2[i]=='\\0'); }

main()

{ char p[10]=”abcdef”, q[10]=”ABCDEF” printf(“%d\\n”,fun(p,q)); } 15.main()

{ int a[10],*p,*s,i; for(i=0;i<10;i++) scanf(%d”,a+i);

for(p=a,s=a;p-a<10;p++) if(*p>*s)s=p;

printf(“max=%d,index=%d\\n”,*s, s-a);

}

简述上列程序完成的功能: 16.fun(char *p2, char *p1)

{ while((*p2=*p1)!='\\0'){ p1++;p2++; } } 简述此函数完成的功能:

第11章 结构体 一、选择题

1.若有以下说明,则对结构体变量stu1中成员age的不正确的引用方式是

struct student

第20页(共23页)