1.有函数
void fun(double a[],int *n)
{............},,,对的是
A.用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传
B、形参a和n都是指针变量
C、形参a是一个数组名 n是指针变量
D、调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组
2.设有定义语句int (*f)(int);,则以下叙述正确的是()。
A.f是基类型为int的指针变量
B. f是指向函数的指针变量,该函数具有一个int 类型的形参
C. f是指向int类型一维数组的指针变量
D. f是函数名,该函数的返回值是基类型为int类型的地址
3.int a=0.b=0,c=0,d=0;
if(a=1) b=1;
c=2;
else // error C2181:illegal else without matching if
d=3;
printf(“%d,%d,%d,%d\n",a,b,c,d);
程序输出( )。
A. 0,1,2,0 B. 0,0,0,3 C. 1,1,2,0 D.编译有错
4.有以下程序
void main()
{
union{
char ch[2];
int d;
}s;
s.d=0x4321;
printf(“%x,%xn”,s.ch[0],s.ch[1]);
在16位编译系统上,程序执行后的输出结果是()。
A. 21,43 B. 43,21 C. 43,00 D. 21,00
解析:
4321
内存中一个字节为8位,4321 共占两个字节:0100 0011 ,0010 0001即为:ch[01=0010 0001,ch[1]=0100 0011;
将其转化为16进制为:ch[0]=00100001,ch[1]=1000011;
即为:ch[0]=21,ch[1]=43; 输出:2143
5.错的是()
A. 可以通过typedef增加新的类型
B. 可以用typedef将已存在的类型用一个新的名字来代表
C. 用typedef定义新的类型名后,原有类型名仍有效
D.用typedef可以为各种类型起别名,但不能为变量起别名
6.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。
A. auto 和register B. extern 和register
C. auto 和static D. static和register
7.有以下函数
#include <stdio.h>
void main()
{char a[20],b[20],c[20];
scanf("%s%s”,a,b);
gets(c);
printf(%s%s%s、n”,a,b,c);
}
程序运行时从第一行开始输入this is a cat!<回车>,则输出结果是()
A. thisisacat! B. this is a C. thisis a cat! D. thisisa cat!
解析:考察scanf和gets输入字符串的区别,scanf语句接收字符时, 遇到空格就作为一个字符串的结束,所以a数组中为this,b 数组中为is,但是gets函数见到回车才认为结束所以c数组为 a cat!。所以打印结果如选项 C
8.
下列程序运行后的输出结果是 5 3 5 3
void swapl(int c0[], intcl[])
{
int t;
t=c0[0]; c0[0]=c1[0]; c1[0]=t;
}
void swap2(int *c0,int *cl)
{int t;
t=*c0; *c0=*cl; *cl=t;
}
main()
{
int a[2]={3,5}, b[2]={3,5};
swapl(a,a+1);
swap2(&b[0],&b[1]);
printf("%d %d %d %d\n",a[0],a[1],b[0],b[ 1]);
9
下列程序运行后的输出结果是 29
int a=2;
int f(int n)
{
static int a=3;
int t=0;
if(n%2){ static int a=4; t +=a++;}
else {static int a=5; t += a++;}
return t+a++;
}
main()
{
int s=a, i;
for( i=0;i<3;i++) s+=f(i):
printf("%d\n”,s);
}
10.
下列程序运行后的输出结果是 SunDan 20042
# include <string.h>
struct STU
{
char name[10];
int num;};
void f(char *name, int num)
{
struct STU s[2]={{"SunDan",200441},{"Penghua",20045}};
num=s[0].num;
strepy(name, s[0].name);
}
main()
{
struct STU s[2]={{"YangSan",20041},{"LiSiGuo",2004211}},*p;
p=&s[1]; f(p->name,p->num);
printf("%s od\n", p->name,p->num);
}
答案:BBDAA AC
1.形参a【】已经退化为一个指针,所以AC错。D,只是传入了一个指针,没有把数组的元素挨个赋值
2.A int*p C int (*p)[]
3.if else 不匹配
4.高高低低原则