出自:国家开放大学C语言程序设计

假定一个函数的数组参数说明为char a[],与之等价的指针参数说明为( )。1B
单选题 (2 分) 2分
A.
char a

B.
char* a

C.
char& a

D.
char**a
假定一个函数的二维数组参数说明为char w[][N],与之等价的指针参数说明为( )。
单选题 (2 分) 2分
A.
char (*w)[N]

B.
char *w[N]

C.
char (*w)N

D.
char**a
在C语言中,一个函数由函数头和函数体组成。
判断题 (2 分) 2分
A.对
B.错
在函数模块之外定义的变量称为全局变量,若没有被初始化则系统隐含对它赋初值0。
判断题 (2 分) 2分
A.对
B.错
如果一个函数只允许同一程序文件中的函数调用,则不应在该函数定义的开始前加上保留字static。
判断题 (2 分) 2分
A.对
B.错
如果在一个函数体中又出现对自身函数的调用,此种函数调用被称为递归调用。
判断题 (2 分) 2分
A.对
B.错
调用系统函数时,要先使用#include命令包含该系统函数的原型语句所在的系统头文件。
判断题 (2 分) 2分
A.对
B.错
函数形参变量不属于局部变量。
判断题 (2 分) 2分
A.对
B.错
假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为46。
判断题 (2 分) 2分
A.对
B.错
假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为25。
判断题 (2 分) 2分
A.对
B.错
假定p所指对象的值为25,p+1所指对象的值为46,则执行*(p++)运算后,p所指对象的值为46。
判断题 (2 分) 2分
A.对
B.错
假定a是一个指针数组,则a+i所指对象的地址比a地址大4*i字节。
判断题 (2 分) 2分
A.对
B.错
若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为(char*)p。
判断题 (2 分) 2分
A.对
B.错
假定一个数据对象为int*类型,则指向该对象的指针类型仍为int*类型。
判断题 (2 分) 2分
A.对
B.错
假定x为一个简单变量,则&x表示x的地址。
判断题 (2 分) 2分
A.对
B.错
若p指向x,则*p与x的值不同。
判断题 (2 分) 2分
A.对
B.错
NULL是一个符号常量,通常作为空指针值,它代表的值为0。
判断题 (2 分) 2分
A.对
B.错
#include<stdio.h>


int WF(int x, int y) {


x=x+y;


y=x+y;


return x+y;


}


void main() {


int x=5, y=7;


int z=WF(x,y);


printf("z=%d\n",z);


}
#include<stdio.h>


#include<string.h>


void fun(char ss[]);


void main( ) {


char s[15]="0123456789";


fun(s);


printf("%s\n",s);


}


void fun(char ss[]) {


int i, n=strlen(ss) ;


for(i=0; i<n/2; i++) {


char c=ss[i];


ss[i]=ss[n-1-i];


ss[n-1-i]=c;


}


}
#include<stdio.h>


int Count(int a[], int n, int x)


{


int i,c=0;


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


if(a[i]>x) c++;


return c;


}


void main() {


int a[8]={20,15,32,47,24,36,28,70};


int b=Count(a,8,30);


printf("b=%d\n",b);


}
0


int a[8]={3,5,7#include<stdio.h>


int LA(int *a, int n, int x) {


int i,s=0;


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


if(a[i]<x) s+=a[i];


return s;


}


void main() {


int a[8]={5,10,15,8,12,3,9,20};


int b=LA(a,5,10);


int c=LA(a+2,6,10);


printf("%d %d\n",b,c);


}
double SF(double x, int n) { //n为正整数


double p=1,s=1;


int i;


for(i=1;i<=n;i++) {


p*=x;


s+=p;


}


return s;


}
int SG(int x) { //x为大于等于2的整数


int i=2;


while(i*i<=x) {


if(x%i==0) break;


i++;


}


if(i*i<=x) return 0; else return 1;


}
int WB(int a[], int n, int x) {


for(int i=0;i<n;i++)


if(a[i]==x) return 1;


return 0;


}

int fun(int m, int n) {


int c=0;


static int b=2;


if(m<b || n<b) return m*n;


else if(m%b==0 && n%b==0) {c=b; return c*fun(m/b,n/b);}


else {b++; return fun(m,n);}


}
int LK(double a[], int n) {


double s=0;


int i,m=0;


for(i=0;i<n;i++) s+=a[i];


s/=n;


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


if(a[i]>=s) m++;


return m;


}
假定有“struct BOOK{char title[40]; float price;}; struct BOOK book;”,则不正确的语句为( )。
单选题 (2 分) 2分
A.
struct BOOK *x=malloc(book);

B.
struct BOOK x={"C++ Programming",27.0};

C.
struct BOOK *x=malloc(sizeof(struct BOOK));

D.
struct BOOK *x=&book;
假定有“struct BOOK{char title[40]; float price;} book;”,则正确的语句为( )。
单选题 (2 分) 2分
A.
struct BOOK x= &book;

B.
struct BOOK *x=&book;

C.
struct BOOK x=calloc(BOOK);

D.
struct BOOK *x=BOOK;
在结构类型的定义中,不同数据成员的定义项之间采用的分隔符是( )。
单选题 (2 分) 2分
A.
句点

B.
冒号

C.
分号

D.
逗号
假定一个结构类型的定义为 “struct A{int a,b; double c;};”,则该类型的长度为( )。
单选题 (2 分) 2分
A.
8

B.
10

C.
12

D.
16
假定一个结构类型的定义为 “struct D{int a; D* next;};”,则该类型的长度为( )。
单选题 (2 分) 2分
A.
4

B.
8

C.
12

D.
16
假定要访问一个结构指针变量x中的数据成员a,则表示方法为( )。
单选题 (2 分) 2分
A.
a

B.
x->a

C.
x(a)

D.
x{a}
与结构成员访问表达式x.name等价的表达式为( )。
单选题 (2 分) 2分
A.
x->name

B.
&x->name

C.
(&x)->name

D.
(*x)->name
假定一个链表中结点的结构类型为“struct AA{int data, struct AA *next;};”,则next数据成员的类型为( )。
单选题 (2 分) 2分
A.
struct AA

B.
struct AA*

C.
AA

D.
int
假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表头插入一个地址为p的结点时,应执行的操作为( )。
单选题 (2 分) 2分
A.
p->next=f

B.
p->next=f和f=p

C.
f=p->next

D.
f->next=p和f=p
标准输入设备键盘的文件流标识符是( )。
单选题 (2 分) 2分
A.
stdin

B.
stdout

C.
stderr

D.
stdio
表示文件结束符的符号常量为( )。
单选题 (2 分) 2分
A.
eof

B.
Eof

C.
EOF

D.
feof
C语言中打开一个数据文件的系统函数为( )。
单选题 (2 分) 2分
A.
fgetc()

B.
fputc()

C.
fclose()

D.
fopen()
从一个数据文件中读入以换行符结束的一行字符串的系统函数为( )。
单选题 (2 分) 2分
A.
gets()

B.
fgets()

C.
getc()

D.
fgetc()
向一个二进制文件中写入信息的函数fwrite()带有的参数个数为( )。
单选题 (2 分) 2分
A.
1

B.
2

C.
3

D.
4
在C语言中,为只写操作打开一个文本文件的方式为( )。
单选题 (2 分) 2分
A.
"a"

B.
"r+"

C.
"r"

D.
"w"
在结构类型的定义中,其中的数据成员可以是本身类型的直接对象。
判断题 (2 分) 2分
A.对
B.错
在结构类型的定义中,允许出现结构类型不完整的超前定义。
判断题 (2 分) 2分
A.对
B.错
定义结构类型的变量时,不能够同时进行初始化。
判断题 (2 分) 2分
A.对
B.错
使用一个结构类型时,必须一起使用关键字struct和类型标识符。
判断题 (2 分) 2分
A.对
B.错
假定一个结构类型的定义为 “struct A{int a,b; A* c;};”,则该类型的长度为12。
判断题 (2 分) 2分
A.对
B.错
假定一个结构类型的定义为 “struct B{int a[5]; char* b;};”,则该类型的长度为20。
判断题 (2 分) 2分
A.对
B.错
执行calloc(n,8)函数调用时,将动态分配得到8*n个字节的存储空间。
判断题 (2 分) 2分
A.对
B.错
执行malloc(sizeof(struct BB))函数调用时,得到的动态存储空间能够保存具有struct BB结构类型的一个对象。
判断题 (2 分) 2分
A.对
B.错
假定要访问一个结构对象x中的由a指针成员所指向的对象,则表示方法为x.a。
判断题 (2 分) 2分
A.对
B.错