文章教程

全国计算机等级考试二级C语言9.6综合自测

8/22/2020 10:24:52 PM 人评论 次浏览

9.6 综合自测

一、选择题

1.在说明语句:int*f();中,标识符f代表的是(  )。

A.一个用于指向整型数据的指针变量    B.一个用于指向一维数组的行指针

C.一个用于指向函数的指针变量    D.一个返回值为指针型的函数名

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

#include <stdio.h>

#include <string.h>

main()

{ char *p="abcde\0fghjik\0";

printf("% d\n",strlen(p));

A.12    B.15    C.6    D.5

3.设有以下语句,则不是对a数组元素的正确引用的是( ),其中0≤i<10。

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

A.a[p-a]    B.*(&a[i])    C.p[i]    D.*(*(a+i))

4.以下程序段的输出结果是(  )。

int *var,ab;

ab=100;var=&ab;ab=*var+10;

printf("% d\n",*var);

A.110    B.100    C.0    D.出现错误

5.设有以下的程序段:

char str[ ] ="Hello";

char *ptr;

ptr=str;

执行上面的程序段后,*(ptr+5)的值为( )。

A.'o'    B.'\0'    C.不确定的值    D.'o'的地址

6.若有以下定义和语句:

#include<stdio.h>

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;

7.下面函数的功能是(  )。

sss(s,t)

char *s,*t;

{ while((*s)&&(*t)&&(*t++ == *s++));

return(*s-*t);

A.求字符串的长度    B.比较两个字符串的大小

C.将字符串s复制到字符串t中    D.将字符串s接续到字符串t中

8.有以下程序:

#include<stdlib.h>

#include<stelio.h>

main()

{ char*p,*q;

p=(char*)malloc(sizeof(char)*20);q=p;

scanf("% s% s",p,q);printf("% s% s\n",p,q);

若从键盘输入:abcdef<回车>,则输出结果是(  )。

A.defdef    B.abcdef    C.abcd    D.d d

9.若有以下说明和定义:

typedef int *INTEGER;

INTEGER p,*q;

以下叙述正确的是(  )。

A.p是int型变量    B.p是基类型为int的指针变量

C.q是基类型为int的指针变量    D.程序中可用INTEGER代替int类型名

10.说明语句int*(*p)();的含义是(  )。

A.p是一个指向int型数组的指针

B.p是指针变量,它构成了指针数组

C.p是一个指向函数的指针,该函数的返回值是一个整型

D.p是一个指向函数的指针,该函数的返回值是一个指向整型的指针

11.已知char*p,*q;,正确的语句是(  )。

A.p*=3;    B.p /=q;    C.p+=3;    D.p+=q;

12.已知inti,x[3][4];,则不能将x[1][1]的值赋给变量i的语句是(  )。

A.i=*(*(x+1)+1);  B.i=x[1][1];  C.i=*(*(x+1));  D.i=*(x[1] +1);

13.下列程序的输出结果是(  )。

#include <stdio.h>

int b=2;

int func(int *a)

{ b + = *a;return(b);

main()

{ int a=2,res=2;

res + = func(&a);

printf("% d \n",res);

A.4    B.6    C.8    D.10

14.有以下程序段:

int*p,a=10,b=1;

p=&a;a=*p+b;

执行该程序段后,a的值为(  )。

A.12    B.11    C.10    D.编译出错

15.对于基类型相同的两个指针变量之间,不能进行的运算是(  )。

A.<    B.=    C.+    D.

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

#include <stdio.h>

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

17.当调用函数时,实参是一个数组名,则向函数传递的是(  )。

A.数组的长度    B.数组的首地址

C.数组每一个元素的地址    D.数组每个元素中的值

18.若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入3个整数分别赋给变量a、b、c的语句是(  )。

A.scanf("%d%d%d",&a,&b,d);    B.scanf("%d%d%d",&a,&b,&d);

C.scanf("%d%d%d",a,b,d);    D.scanf("%d%d%d",a,b,*d);

19.若定义:inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为(  )。

A.无确定值    B.a的地址    C.512    D.511

二、操作题

1.下列给定程序中,函数fun()的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为def35adh3kjsdf7,执行后结果为def3*5*adh3*kjsdf7*。

请在标号处填入正确的内容,使程序得出正确的结果。

注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构。

试题程序

#include <stdio.h>

void fun(char *s)

{ int i,j,n;

for(i=0;s[i]!= '\0';i++)

if(s[i] > = '0'【1】s[i] < = '9')

{ n=0;

while(s[i+1+n]!=【2】)

n++;

for(j=i+n+1;j>i;j--)

s[j+1] =【3】;

s[j+1] = '*';

i=i+1;

main()

{ char s[60] ="ba3a54cd23a";

printf("\nThe original string is:% s\n",s);

fun(s);

printf("\nThe result is:% s\n",s);

2.下列给定程序中函数fun()的功能是:将s所指字符串中出现的与t1所指字符串相同的子串全部替换为t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同。

例如,当s所指字符串中的内容为“abcdabfab”,t1所指子串中的内容为“ab”,t2所指子串中的内容为“99”时,在w所指的数组中的内容应为“99cd99f99”。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序

#include <stdlib.h>

#include <conio.h>

#include <stdio.h>

#include <string.h>

void fun(char *s,char *t1,char *t2,

char *w)

{ char *p,*r,*a;

strcpy(w,s);

while(*w)

{ p=w;r=t1;

/*****found*****/

while(r)

if(*r==*p){r++;p++;}

else break;

if(*r== '\0')

{ a=w;r=t2;

while(*r)

/*****found*****/

{ *a=*r;a++;r++}

w+ =strlen(t2);

else w++;

void main()

{ char s[100],t1[100],t2[100],w[100];

printf("\nPlease enter string S:");

scanf("% s",s);

printf("\nPlease enter substring t1:");

scanf("% s",t1);

printf ( " \ nPlease enter substring t2:");

scanf("% s",t2);

if(strlen(t1)==strlen(t2))

{ fun(s,t1,t2,w);

printf("\nThe result is:% s\n",w);

else printf("Error:strlen(t2)\n");

教程类别