3. 有类型定义:typedef struct
{int x; int y; } POINT;
下面正确的语句是(18)。(考点:自定义类型)
分析:POINT为用typedef定义的一种新的类型名。
18 (A) POINT.x=12; POINT.y=10; (B) POINT a;
(C) struct POINT a{12,10}; (D) POINT a(12,10);
4. 下面程序的输出结果是( 19 )。(考点:带参数的宏定义)
# define SQURE(N) N*N void main()
{ printf(\ SQURE(3+2) ); } // 3+2*3+2 (注意:先替换再计算) 19 (A) 25 (B) 11 (C) 15 (D) 9
5. 要实现一个文件引用另一个文件中的变量,必须通过( 20 )。(考点:存储类型extern)
20 (A) 用extern对变量说明 (B) #include 预处理命令
(C) # define预处理命令 (D) 用typedef重新定义
6. 以下定义语句中,错误的是( 21 )。(考点:定义数组)
21 (A) int a[]={1,2}; (B) char *a[3];(指针数组)
(C) char s[10]=\ (D) int n=5,a[n]; //不能用变量定义数组的长度
7. 下面语句彼此等价的是( 22 )。(考点:关系、逻辑运算表达式)
22 (A) !(a<10)&&!(a>10) 与 !(a<10&&a>10)
(B) !(a==b) 与 a>b&&ab) 与 a=10||a<=10) 与 !(a<=10) && !(a>=10)
8. 设有说明:int (*a)[M]; 其中的标识符a是( 23 )。(考点:行指针)
23 (A) 一个指向具有M个整型元素的一维数组的指针 (a是一个行指针变量)
(B) 指向M个整型变量的函数指针 (C) M个指向整型变量的指针
(D) 具有M个指针元素的一维数组指针,每个元素都只能指向整型量 ( int *a[M]; )
9. 若有以下说明和语句: (考点:结构体指针)
struct student { int age; int num;
}std, *p; //std是结构体类型变量,p是指向结构类型数据的指针变量
四川省计算机二级考试第二十八次C与C++语言笔试试卷 共9页 第2页
p=&std; //p指向std变量
则以下对结构体变量std中成员age的引用方式不正确的是( 24 )。 24 (A) std.age (B) p->age (C) (*p).age (D) *p.age? * (p.age)
10. 若有定义:char s[100]=\则执行语句puts( strcat( s, strcpy( s,\ ) ); 后,屏幕上输出的结果是 ( 25 ) 。(考点:字符串处理库函数)
25 (A) s (B) strings (C) ss (D) sstring
二、读程序回答问题 ( 每个选择3分,共45分 )
1. 读程序并回答问题(考点:数组、函数(地址参数)、逆置算法) # include
void fun(int *a,int bott,int top) { int i,j,t;
i=bott; j=top; while(i { t=a[i]; a[i]=a[j]; a[j]=t; //交换a[i]和a[j] i++;j--; } }
void main()
{ int a[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(a,0,3); // a: 4,3,2,1,5,6,7,8,9,0 fun(a,4,9); // a: 4 3 2 1 0 9 8 7 6 5 fun(a,0,9); // a: 5 6 7 8 9 0 1 2 3 4 for(i=0;i<10;i++) printf(\}
函数fun的功能是( 26 )。
26 (A) 将下标为bott 到 top 之间的数组元素逆置
(B) 将下标为bott 到 top 之间数组元素进行升序排列 (C) 将下标为bott 到 top 之间数组元素进行降序排列 (D) 将下标为bott 和下标为 top 的两个元素互换 程序的运行结果为( 27 )。 27 (A)0987654321 (B) 4321098765 (C) 5678901234 (D) 0987651234
2. 读程序并回答问题。(考点:递归函数)
# include long fun(int n) { long z;
if(n==0|| n==1) z=1; else z=n*fun(n-2); return z; }
void main() { long z; int n;
scanf(\ z=fun(n);
printf(\
四川省计算机二级考试第三十次C与C++语言笔试试卷 第 3 页 共 9 页
}
若输入n的值为6,则程序的输出结果为( 28 )。 28 (A) 21 (B) 15 (C) 48 (D) 720 以下哪个非递归程序与函数fun的功能相同( 29 )。
(B) long fun(int n) 29 (A) long fun(int n)
{ int i; { int i;
long z; long z;
for(i=n,z=0;i>0;i-=2) for(i=n,z=1;i>0;i-=2)
z=z+i; z=z*i;
return z; retrun z;
} }
(C) long fun(int n) (D) long fun(int n) { int i; { int i; long z; long z; for(i=n,z=1;i>0;i--) for(i=n,z=0;i>0;i--) z=z*i; z=z+i; retrun z; return z; } }
3. 读程序并回答问题(考点:文件、函数(地址参数)、排序算法)
# include
void fun(int *a,int n) //用冒泡排序法对a数组中的n个数进行升序排序 { int i,j,t;
for(i=0;i for(j=0;j if( a[j]>a[j+1] ) // 相邻元素比较,逆序交换,这是冒泡排序法 { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } }
void main() { FILE *fp; int a[5],i;
if((fp=fopen(\r+\ //可读可写方式打开文件 { printf(\ exit(0); }
for(i=0;i<5;i++) //结束循环后文件位置指针指向文件的末尾 fscanf(fp,\ //从文件读出5个整数 fun(a,5);
rewind(fp); //重置文件的位置指针到文件的开头 for(i=0;i<5;i++)
{ printf(\
fprintf(fp,\ //向文件写5个整数,将文件中原有内容覆盖掉 }
fclose(fp); }
若文件data.txt中的内容为1 3 2 5 4 ,读程序回答下面两个问题
四川省计算机二级考试第二十八次C与C++语言笔试试卷 共9页 第4页