2018年自考《C语言程序设计》试题六
21.对字符数组str赋初值,str不能作为字符串使用的一个是____。
A) char str[]='shanghai';
B) char str[]={'shanghai'};
C) char str[9]={'s','h','a','n','g','h','a','i'};
D) char str[8]={ 's','h','a','n','g','h','a','i'};
22.如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为____。
A) 静态变量 B) 动态变量 C) 外部变量 D) 内部变量
23.在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要使用的存储类别是____。
A) extern B) register C) auto D) static
24.定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是____。
A) swapa(int x,int y) B) swapb(int *x,int *y)
{ int temp; { int temp;
temp=x;x=y;y=temp; temp=x;x=y;y=temp;
} }
C) swapc(int *x,int *y) D) swapd(int *x,int *y)
{ int temp; { int *temp;
temp=*x;*x=*y;*y=temp; temp=x;x=y;y=temp;
} }
25.在下列结论中,只有一个是错误的,它是____。
A) C语言允许函数的递归调用
B) C语言中的continue语句,可以通过改变程序的结构而省略
C) 有些递归程序是不能用非递归算法实现的
D) C语言中不允许在函数中再定义函数
26.说明语句'int (*p)( );'的含义是____。
A) p是一个指向一维数组的指针变量
B) p是指针变量,指向一个整型数据
C) p是一个指向函数的指针,该函数的返回值是一个整型
D) 以上都不对
27.设有说明int (*p)[4];其中的标识符p是____。
A) 4个指向整型变量的指针变量
B) 指向4个整型变量的函数指针
C) 一个指向具有4个整型元素的一维数组的指针
D) 具有4个指向整型变量的指针元素的一维指针数组
28.已知:char s[10], *p=s,则在下列语句中,错误的语句是____。
A) p=s+5; B) s=p+s; C) s[2]=p[4]; D) *p=s[0];
29.已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*ptr)[3]=a,*p=a[0];
则以下能够正确表示数组元素a[1][2]的表达式是____。
A) *(*(a+1)+2) B) *(*(p+5)) C) (*ptr+1)+2 D) *((ptr+1)[2])
30.已知:int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;则值为3的表达式是____。
A) p+=2,*(p++) B) p+=2,*++p C) p+=2,*p++ D) p+=2,++*p
32.函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是____。
A) funa (int *x, int *y) B) funb (int x, int y)
{ int *p; { int t;
p=x;*x=*y;*y=*p; t=x;x=y;y=t;
} }
C) func (int *x, int *y) D) func (int *x, int *y)
{ *x=*y;*y=*x; { *x=*x+*y;*y=*x-*y;*x=*x-*y;
} }
33.有定义如下:
struct sk
{ int a;
float b;
}data ,*p;
如果 p=&data;则对于结构变量data的成员a的正确引用是____。
A)(*).data.a B) (*p).a C) p->data.a D) p.data.a
34.已知:
struct st
{ int n;
struct st *next;
};
static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},*p;
如果下述语句的显示是2,则对p的赋值是____。
printf('%d',++(p->next->n));
A) p=&a[0]; B) p=&a[1]; C) p=&a[2]; D) p=&a[3];
35.fscanf函数的正确调用形式是____。
A) fscanf (文件指针, 格式字符串, 输出列表);
B) fscanf (格式字符串, 输出列表, 文件指针);
C) fscanf (格式字符串, 文件指针, 输出列表);
D) fscanf (文件指针, 格式字符串, 输入列表);
36.使用fgetc函数,则打开文件的方式必须是____。
A) 只写 B) 追加 C) 读或读/写 D) 参考答案B和C都正确
37.已知宏定义
#define N 3
#define Y(n) ((N+1)*n)
执行语句z=2*(N+Y(5+1));后,变量z的值是____。
A) 42 B) 48 C) 52 D) 出错
38.已知宏定义 #define SQ(x) x*x,执行语句printf('%d',10/SQ(3));后的输出结果是____。
A) 1 B) 3 C) 9 D) 10