11、共45分 )
1. 读下面程序并回答问题:(考点:函数参数的传递方式(普通值传递、地址值传递))
# include
void fun1(int x,int y)
{ int t;
t=x; x=y; y=t;
}
void fun2(int x[])
{ int t;
t=x[0]; x[0]=x[1]; x[1]=t;
}
void main()
{ int a[2]={1,2},b[2]={1,2};
fun1(b[0],b[1]);fun2(a);
printf("%d,%d,%d,%d\n",a[0],a[1],b
12、[0],b[1]);
}
(1) 下列说法错误的是( 26 )。
26 (A) 数组名作为函数参数进行传递,传递的是数组的首地址
(B) 数组名作为函数参数时,形参数组与实参数组共用内存空间
(C) 普通变量作为函数参数进行传递,实参与形参之间发生的是单向值传递
(D) 数组名作为函数参数时,传递的是数组元素的值
(2) 程序的运行结果是( 27 )。
27 (A)1,2,1,2 (B) 1,2,2,1 (C) 2,1,1,2 (D) 2,1,2,1
2. 读程序并回答问题。(考点:命令行参数、静态变量)
# include
13、int fun()
{ static int c=0;
c++;
return c;
}
void main(int argc,char *argv[])
{ int x,i,j;
for(i=1;i14、 (C) 9 (D) 0
(2)若将函数fun中的static去掉,变为int c=0; 程序经编译后连接生成可执行文件2_3.exe,若键入以下命令行:
2_3 abcd 123
则程序的运行结果为( 29 )。
29 (A) 3 (B) 30 (C) 22 (D) 10
3. 读程序并回答问题(考点:字符数组、函数(指针参数)、逆置算法)
# include
# include
void fun(char *s,int p1,int p2)
{ char t;
while(p115、
{
t=*(s+p1); *(s+p1)=*(s+p2); *(s+p2)=t;
p1++; p2--;
}
}
void main()
{ char str[10];
int i;
for(i=0;i<9;i++)
str[i]='A'+i;
str[i]='\0';
puts(str);
fun(str,0,strlen(str)-1);
puts(str);
}
(1)第一个puts(str)的输出结果为( 30 )。
30 (A) AHCFEDGBI (B) IBGDEFCH
16、A
(C) ABCDEFGHI (D) IHGFEDCBA
(2)第二个puts(str)的输出结果为( 31 )。
31 (A) AHCFEDGBI (B) IBGDEFCHA
(C) ABCDEFGHI (D) IHGFEDCBA
4. 阅读下面程序,回答问题。(考点:循环应用、阶乘求和算法)
void main()
{ int n,m,s=0,t=1;
scanf("%d",&m);
for(n=1;n<=m;n++)
{ t*=n;
s+=t;
}
printf("%d\n",s);
}
17、
程序的功能是( 32 )
32 (A) 实现1的阶乘至m的阶乘的求和
(B) 求m的阶乘
(C) 1到m的求和
(D) 实现1至m-1的阶乘的求和
5. 读程序,回答问题。(考点:字符数组、删除字符算法)
# include
void main()
{ char s[80];
int i,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c') s[j++]=s[i];
s[j]='\0';
puts(s);
}
程序运行时输入cctv10,其输出结果
18、为( 33 )。
33 (A) cc (B) tv10 (C) ctv10 (D) tv10cc
6. 有下列程序:(考点:函数(地址参数)、指针运算)
# include
char func(char *s)
{ char *p=s;
while(*p!='\0')
p++;
return p-s;
}
void main()
{ printf("\n%d\n",func("Hello!"));
getch();
}
(1)程序的运行结果是( 34 )。
34 (A) 3 (B) Hel
19、lo!6 (C) 无输出 (D) 6
(2)指针变量的运算不能够( 35 )。
35 (A) 指针变量加整形变量 (B) 指针变量减整形变量
(C) 指针变量加指针变量 (D) 指针变量减指针变量
7. 以下是一个C++程序,读程序写出程序运行结果。(*考点:C++)
# include
void main()
{ int num=0,i=8;
do
{ i--;
num++;
}while(--i);
cout<20、 (A) 2 (B) 0 (C) 4 (D) 5
8. 有下列程序:(考点:switch语句、循环)
# include
void main()
{ char c='A';
int k=0;
do
{ switch(c++)
{ case 'A': k++; break;
case 'B': k--;
case 'C': k+=2; break;
case 'D': k%=2; continue;
case 'E': k*=10;break;
de
21、fault: k/=3;
}
k++;
}while(c<'G');
printf("k=%d\n",k);
getch();
}
(1)程序输出结果是( 37 )。
37 (A) k=3 (B) k=4 (C) k=2 (D) k=0
(2)本程序中continue的作用( 38 )。
38 (A) 与break一样 (B) 不起任何作用
(C) 开始下一次循环 (D) 出现语法错误
9. 有下列程序(考点:递归函数、全局变量和局部变量)
int w=3;
int fun(int
22、 k)
{ if(k==0) return w;
return(fun(k-1)*k);
}
void main()
{ int w=10;
printf("%d\n",fun(5)*w);
}
输出结果是( 39 )。
39 (A) 360 (B) 3600 (C) 1080 (D) 1200
10. 有下列程序(考点:指针数组、字符转换处理)
void main()
{ char ch[2][5]={"6934","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)
p
23、[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>'\0'&&p[i][j]<='9';j+=2)
s=10*s+p[i][j]-'0';
printf("%d\n",s);
}
输出结果是( 40 )。
40 (A)6385 (B) 69825 (C) 63825 (D) 693825
注意:① 请把下面“程序填空”中各小题答案写在主观题答题纸上
② 每一个空只填一个语句或一个语句所缺的部分内容
三、程序填空 ( 每空2分,共30分 )
1. 函数f
24、un的功能是:找出N行M列二维数组元素中的最大值,并作为函数值返回,最大值的行列下标经过形参指针带回main函数中。请填空。(考点:函数(指针参数)、求最值算法)
# include
# define N 3
# define M 4
int fun(int a[N][M],int *row,int *col)
{ int i,j,r,c;
r=c=0;
for(i=0;i① ) { r=i; c=j; }
②
25、 ;
*col=c;
③ ;
}
void main()
{ int a[N][M]={1,2,3,4,5,6,7,8,9,10,11,12};
int row,col,max;
max=fun(a,&row,&col);
printf("max=%d,row=%d,col=%d\n",max,row,col);
}
2. 程序的功能是:求出分数序列2/1,3/2,5/3,8/5,13/8……前20项之和,请填空。(考点:循环、序列求和算法)
# include
v
26、oid main()
{ double x=2,y=1,t,s=0;
int i;
for(i=1;i<=20;i++)
{ s=① ;
t=② ;
x=③ ;
y=t;
}
printf("s=%f\n",s);
}
3. 有5个学生的成绩需要保存在文件score.dat文件中,保存格式如下:(考点:文件)
姓名,年龄,成绩 请填空。
# include
void main()
{ FILE *fp;
int
27、i;
char name[80];
int age;
float score;
fp=fopen(① ,"w");
for(i=0;i<5;i++)
{ printf("请输入第%d个学生的信息\n",i);
printf("姓名:");
scanf("%s",name);
printf("年龄:");
scanf("%d",&age);
printf("成绩:");
② ;
fprintf(fp,"%s,%d,%f\n",nam
28、e,age,score);
}
③ ;
}
4. 下列程序的功能是:从5个字符串中找出最长的那个字符串。请填空。(考点:二维字符数组、行指针参数、返回指针值函数、字符串处理函数)
# include
# include
# define N 5
# define M 81
char *fun(char (*sq)[M])
{ int i;
① ;
sp=sq[0];
for(i=1;i29、 ) sp=sq[i];
return sp;
}
void main()
{ char str[N][M],*longest;
int i;
printf("please enter 5 string:");
for(i=0;i30、st);
}
5. 下面程序的功能是:由25人坐成圆圈,先从任一人出发用1到25顺时针依次编号,然后从1号开始顺时针报数(1,2,3,4,…),数到5的倍数的出圈,剩下的继续报数,求最后出圈的编号。(考点:数组、循环、约瑟夫环算法)
# include
void main()
{ int a[26],j,n,count;
for(j=1;j<=25;j++) a[j]=j;
j=1;
count=0;
① ;
do
{ if(a[j]!=0)
{ n++;
if(n%5==0)
{ ② ;
if(count==24) printf("%d\n",j);
count++;
}
}
j++;
if(j>25) j=1;
}
while(③ );
}