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
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
{ 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 { 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 { 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 )。