1.若以下对fun函数的调用是正确的:
x=fun(fun(a,b,c),(a+b,a+c),a+b+c);
则fun函数的形参个数为()
A)3
B)4
C)5
D)6
2.若有说明:int*p, m=5; n;,以下正确的程序段是()
A)p=&m;
scanf("%d",&p)
B)p=&n;
scanf("%d",&p)
C)scanf("%d",&p)
p=&n;
D)p=&n;
p=&m;
3.以下程序调用findmax函数返回数组中的最大值
findmax(int*a,int n)
{ int*p,*s;
for(p=a,s=a;p-a if()s=p;
return(*s);
}
main()
{ intx[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下划线处应填入的是()
A)p>s
B)*p>*s
C)a[p]>a[s]
D)p-a>p-s
4.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是()
A)p=2*(int*)malloc(sizeof(int));
B)p=(int*)calloc(2*sizeof(int));
C)p=(int*)malloc(2* sizeof(int));
D)p=2*(int*)calloc(sizeof(int));
5.下列程序的输出结果是()
main()
{char *p1,*p2,str[50]="xyz";
p1="abcd";
p2="ABCD";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
}
A)xyabcAB
B)abcABz
C)Ababcz
D)XycdBCD
6.以下叙述中不正确的是()
A)一个变量的作用域完全取决于变量定义语句的位置
B)全局变量可以在函数以外的任何部位进行定义
C)局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用
D)一个变量说明为static存储类是为了限制其他编译单位的引用
7.交换两个变量的值,不允许用临时变量,应该使用下列哪一个位运算符()
A)~
B)&
C)^
D)|
8.下面的说法不正确的是()
A)函数调用时,先求出实参表达剑缓蟠胄尾巍6褂么蔚暮曛皇墙屑虻サ淖址婊?BR> B)函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时也要分配内存单元,进行值传递
C)对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题,宏名有类型
D)调用函数只可得到一个返回值,而用宏可以设法得到几个结果
9.fscanf函数的正确调用形式是()
A)fscanf(fp,格式字符串,输出表列);
B)fscanf(格式字符串,输出表列,fp);
C)fscanf(格式字符串,文件指针,输出表列);
D)fscanf(文件指针,格式字符串,输入表列);
10.以下程序的运行结果是()
# define MAX 10
int a[MAX],i;
main()
{ printf("\n");sub1();sub3(a);sub2();sub3(a);
}
sub2()
{ int a[MAX],i,max;
max=5;
for(i=0;i }
sub1()
{for(i=0;i }
sub3(int a[])
{ int i;
for(i=0;i printf("\n");
}
A)0 2 4 6 8 10 12 14 16 18
0 1 2 3 4
B)0 1 2 3 4
0 2 4 6 8 10 12 14 16 18
C)0 1 2 3 4 5 6 7 8 9
0 1 2 3 4
D)0 2 4 6 8 10 12 14 16 18
0 2 4 6 8 10 12 14 16 18
答案:11.A 12.D 13.B 14.C 15.D 16.B 17.C 18.B 19.D 20.D