C语言综合练习题 下载本文

78、已知有下列宏定义:

#define PI 3.1415 #define s(r) PI*r*r

则对s(a+b)进行宏展开的结果是( D )。

A、PI*(a+b)*(a+b) B、PI*a+b*a+b

C、3.1415*(a+b)*(a+b) D、3.1415*a+b*a+b 79、int a[10];合法的数组元素的最小下标值为( D )。

A、10 B、9 C、1 D、0 80、若有以下程序:

void main()

{ char *name[]={\

char **p; p=name+1;

printf(\}

程序输出结果是( B )。

A、C Language B、Programming C、C D、P

81、下列定义数组的语句中正确的是( A )。

A、#define size 10

char str1[size],str2[size+2]; B、char str[]; C、int num['10'];

D、int n=5; int a[n][n+2];

82、若有定义:int a[8]; 则以下表达式中不能代表数组元素a[1]的地址的是(A、&a[0]+1 B、&a[1] C、&a[0]++ D、a+1 83、以下定义语句中,错误的是( D )。

A、int a[]={1,2}; B、char *a[3]; C、char s[10]=\ D、int n=5,a[n];

84、用数组名作为函数调用时的参数,实际上传送给形参的是( A )。

A、数组首地址 B、数组的第一个元素值 C、数组中全部元素的值 D、数组元素的个数 85、C语言程序中,当调用函数时( A )。

A、实参和虚参各占一个独立的存储单元 B、实参和虚参可以共用存储单元 C、可以由用户指定是否共用存储单元

D、计算机系统自动确定是否共用存储单元 86、设有如下函数定义:

int f(char *s) { char *p=s;

while(*p!= '\\0') p++; return (p-s); }

如果在主程序中用下面的语句调用上述函数,则输出结果是( C )。- 13 -

C )。

printf(\

A、3 B、6 C、8 D、9 87、在C语言中,形参的缺省存储类是( A )。

A、auto B、register C、static D、extern 88、下列程序的运行结果是( B )。

#include int fun(int a[][3]) { int i,j,sum=0;

for(i=0;i<3;i++) for(j=0;j<3;j++) { a[i][j]=i+j;

if(i==j) sum=sum+a[i][j]; }

return (sum); }

void main()

{ int a[3][3]={1,3,5,7,9,11,13,15,17},sum;

sum=fun(a);

printf(\}

A、sum=4 B、sum=6 C、sum=8 D、sum=10 89、若需要明确表示函数“不带回返回值”,则( B )。

A、在函数定义时,函数名前不加类型说明符 B、在函数定义时,函数名前加“void”类型说明符 C、函数中无return语句

D、在函数的return语句中表示

90、关于return语句,下列正确的说法是( C )。

A、不能在主函数中出现且在其他函数中均可出现 B、必须在每个函数中出现

C、可以在同一个函数中出现多次

D、只能在除主函数之外的函数中出现一次 91、下列程序的运行结果为( B )。

#include

change(int x,int y){ int t=x;x=y;y=t; return; } void main()

{ int x=2,y=3;

change(x,y);

printf(\}

A、x=3,y=2 B、x=2,y=3 C、x=2,y=2 D、x=3,y=3

92、若使用一维数组名作函数实参,则以下正确的说法是( A )。

A、必须在主调函数中说明此数组的大小 B、实参数组类型与形参数组类型可以不匹配

- 14 -

C、在被调用函数中,不需要考虑形参数组的大小 D、实参数组名与形参数组名必须一致

93、int x,*pb; 则以下正确的赋值表达式是( A )。

A、pb=&x B、pb=x C、*pb=&x D、*pb=*x 94、以下函数调用语句中实参的个数是( A )。

exce((v1,v2),(v3,v4,v5),v6);

A、3 B、4 C、5 D、6

95、若有以下定义和语句:int s[4][5],(*ps)[5]; ps=s; 则对s数组元素的正确引用形式是

( C )。

A、ps+1 B、*(ps+3) C、ps[0][2] D、*(ps+1)+3 96、下列选项中正确的语句组是( D )。

A、char s[8]; s={\B、char *s; s={\C、char s[8]; s=\D、char *s; s=\

97、以下程序的输出结果是( A )。

#include void main()

{ int a[3]={1,3,5};

int *p1=a,*p2=&a[1]; *p1=*(p2-1)+2; *(p1+1)=*p1-2; printf(\}

A、1 B、3 C、5 D、7 98、下列关于指针定义的描述,( B )是错误的。

A、指针是一种变量,该变量用来存放某个变量的地址值的 B、指针是一种变量,该变量用来存放某个变量的值 C、指针变量的类型与它所指向的变量类型一致 D、指针变量的命名规则与标识符相同

99、执行以下程序段后,m的值是( D )。

static int a[]={7,4,6,3,10}; int m,k,*ptr;

m=10; ptr=&a[0];

for(k=0;k<5;k++) m=(*(ptr+k)

A、10 B、7 C、4 D、3 100、函数的形式参数隐含的存储类型说明是( D )。

A、extern B、static C、register D、auto

101、若定义: int a=511,*b=&a; 则printf (\的输出结果是( D A、无确定值 B、a的地址 C、512 D、511

102、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(A、函数调用可以作为独立的语句存在 B、函数调用可以作为一个函数的实参 C、函数调用可以出现在表达式中

- 15 -

D )。 )

D、函数调用可以作为一个函数的形参 103、设有如下定义: int arr[]={6,7,8,9,10}; int *ptr; 则下列程序段的输出结果是( D )。

ptr=arr; *(ptr+2)+=2;

printf(\

A、8,10 B、6,8 C、7,9 D、6,10

104、若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是( C )。

A、int p=&x; B、int *p=x; C、int *p=&x; D、*p=*x; 105、下列程序的运行结果是( A )。

#include int x=3; void incre()

{ static int x=1;

x*=x+1;

printf(\ \}

void main() { int i;

for(i=1;i

A、2 6 B、2 2 C、12 12 D、6 6

106、C语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为( A、void B、double C、int D、char 107、语句int (*p)(); 说明( C )。

A、p是指向int型数据的指针变量

B、p是一个函数名,该函数的返回值是指向int型数据的指针 C、p是指向函数的指针,该函数返回一个int型数据 D、p是指向一维数组的指针变量

108、C语言的if语句嵌套时,if与else的配对关系是( A )。

A、每个else总是与它上面的最近的if配对 B、每个else总是与最外层的if配对 C、每个else与if的配对是任意的 D、每个else总是与它上面的if配对 109、下面程序的运行结果是( B )。

#include void main()

{ int a=1,b=2,c;

c=f1(a,b);

printf(\}

int f1(int x,int y) { int c,s,t;

s=x+y;

- 16 -

C )。