国二c语言笔试题库(专升本会出40分的题) 下载本文

10.下列程序执行后的输出结果是( )。 void func(int *a, int b[ ]) {b[0]=*a+6;} main() {int a, b[5]; a=0; b[0]=3; func(&a, b);

printf(\}

A) 6 B) 3 C) 8 D) 9 11.下列程序执行后的输出结果是( )。 main()

{int a[3][3], *p, i; p=&a[0][0];

for(i=0; i<9; i++) p[i]=i+1; printf(\}

A) 3 B) 6 C) 9 D) 随机数 12.请选出正确的程序段( )。

A) int *p; B) int *s, k; C) int *s, k; D) int *s, k; scanf(\ *s=100; char *p, c; char *p, c;

s=&k; s=&k; p=&c; p=&c; *p='a'; s=p; *s=1; 13.已知指针p的指向如下图所示,则执行语句 *- -p; 后*p的值是( )。 a[0] a[1] a[2] a[3] a[4] 10 20 30 40 50 p A) 30 B) 20 C) 19 D) 29

14.设已有定义: char *st=\下列程序段中正确的是( )。 A) char a[11], *p; strcpy(p=a+1, &st[4]); B) char a[11]; strcpy(++a, st); C) char a[11]; strcpy(a, st); D) char a[ ], *p; strcpy(p=&a[1], st+2);

15.以下程序的输出结果是( )。 main( )

{int i, x[3][3]={9, 8, 7, 6, 5, 4, 3, 2, 1}, *p=&x[1][1]; for(i=0; i<4; i+=2) printf(\}

A) 5 2 B) 5 1 C) 5 3 D) 9 7

16.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是( )。 A) i=*p; B) *p=*&j; C) i=&j; D) i=**p;

17.以下定义语句中,错误的是( )。 A) int a[ ]={1,2}; B) char *a[3]; C) char s[10]=\ D) int n=5,a[n]; 18.下列程序段的输出结果是( )。 void fun(int *x, int *y)

{printf(\main()

{int x=1,y=2; fun(&y, &x);

printf(\}

A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 19.下列程序的输出结果是( )。 main()

{char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(\}

A) 非法 B) a[4]的地址 C) 5 D) 3 20.下列程序的运行结果是( )。 void fun(int *a, int *b) {int *k;

k=a; a=b; b=k; }

main()

{int a=3, b=6, *x=&a, *y=&b; fun(x, y);

printf(\}

A) 6 3 B) 3 6 C) 编译出错 D) 0 0 21.下面程序的输出结果是( )。 main()

{int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; p=a;

printf(\}

A) 0 B) 1 C) 10 D) 9 22.假定以下程序经编译和连接后生成可执行文件PROG . EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROG ABCD EFGH IJKL<回车>,则输出结果为( )。 main( int argc, char *argv[ ])

{while(--argc>0) printf(\ printf(\}

A) ABCDEFGH B) IJHL C) ABCDEFGHIJKL D)

IJKLEFGHABCD

23.对于基类型相同的两个指针变量之间,不能进行的运算是( )。 A) < B) = C) + D) - 24.有以下函数: char * fun (char *p) {return p;}

该函数的返回值是( )。

A) 无确切的值 B) 形参p中存放的地址值 C) 一个临时存储单元的地址 D) 形参p自身的地址值 25.若有以下说明和定义 fun(int *c){?} main()

{int (*a)()=fun,*b(),w[10],c; ┆ }

在必要的赋值之后,对fun函数的正确调用语句是( )。

A) a=a(w); B) (*a)(&c); C) b=*b(w); (b);

26.有如下说明

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是( )。

A) *p+9 B) *(p+8) C) *p+=9 D) p+8 27.有如下程序: main()

{char ch[2][5]={“6937”,“8254”},*p[2]; int i,j,s=0;

for(i=0;i<2;i++) p[i]=ch[i]; for(i=0;i<2;i++)

for(j=0;p[i][j]>‘\\0’;j+=2) s=10*s+p[i][j]-‘0’; printf(“%d\\n”,s); }

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

A) 69825 B 63825 C) 6385 D) 693825 28.若有以下定义和语句: char *s1=“12345”,*s2=“1234”; printf(“%d\\n”, strlen(strcpy (s1, s2))); 则输出结果是( )。

A) 4 B) 5 C) 9 D) 10 29.下面程序的输出结果是( )。 main( )

{char *s=“121”; int k=0, a=0, b=0; do

D) fun {k++;

if(k%2= =0) {a=a+s[k]-?0?; continue;} b=b+s[k]-?0?; a=a+s[k]-?0?; }

while(s[k+1]);

printf(“k=%d a=%d b=%d\\n”, k, a, b); }

A) k=3 a=2 b=3 B) k=3 a=3 b=2 C) k=2 a=3 b=2 D) k=2 a=2 b=3 30.若有以下的定义:

int a[ ]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=a; 则值为3的表达式是( )。

A) p+=2,*(p++) B) p+=2,*++p C) p+=3,*p++ D) p+=2,++*p

31.以下程序的输出结果是( )。 #include

sub1(char a, char b) {char c; c=a; a=b; b=c;} sub2(char *a, char b) {char c; c=*a; *a=b; b=c;} sub3(char *a, char *b) {char c; c=*a; *a=*b; *b=c;} main() {char a, b;

a=?A?; b=?B?; sub3 (&a, &b); putchar(a); putchar(b); a=?A?; b=?B?; sub2 (&a, b); putchar(a); putchar(b); a=?A?; b=?B?; sub1 (a, b); putchar(a); putchar(b); }

A) BABBAB B) ABBBBA C) BABABA D) BAABBA 32.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( )。

A) k=*p1+*p2; B) p2=k; C) p1=p2; D) k=*p1*(*p2);

33.设有如下定义:

int arr[ ]={6, 7, 8, 9, 10}; int *ptr; 则下列程序段的输出结果是( )。 ptr=arr;

*(ptr+2)+=2;

printf(“%d, %d\\n”, *ptr, *(ptr+2));

A) 8,10 B) 6,8 C) 7,9 D) 6,10 34.以下程序的输出结果是( )。 main()

{char a[ ]=“programming”, b[ ]= “language”; char *p1, *p2; int i;

p1=a; p2=b;

for(i=0; i<7; i++)