二、读程序回答问题(每个选择3分,共45分)
1.读下面程序并回答问题:
#include
voidfun1(intx,inty)
{
intt;
t=x;x=y;y=t;
}
voidfun2(intx[])
{
intt;
t=x[0];x[0]=x[1];x[1]=t;
}
voidmain()
{
inta[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[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
intfun()
{
staticintc=0;
c++;
returnc;
}
voidmain(intargc,char*argv[])
{
intx,i,j;
for(i=1;ifor(j=0;argv[i][j]!
='\0';j++)
x=fun();
printf("%d\n",x*argc);
}
(1)若程序经编译连接后生成可执行文件2_3.exe,若键入以下命令行:
2_3abcd123
则程序的运行结果为(28)。
28(A)3(B)21(C)9(D)0
(2)若将函数fun中的static去掉,变为intc=0;程序经编译后连接生成可执行文件2_3.exe,若键入以下命令行:
2_3abcd123
则程序的运行结果为(29)。
29(A)3(B)30(C)22(D)10
3.读程序并回答问题
#include
#include
voidfun(char*s,intp1,intp2)
{
chart;
while(p1{
t=*(s+p1);*(s+p1)=*(s+p2);*(s+p2)=t;
p1++;p2--;
}
}
voidmain()
{
charstr[10];
inti;
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)IBGDEFCHA
(C)ABCDEFGHI(D)IHGFEDCBA
(2)第二个puts(str)的输出结果为(31)。
31(A)AHCFEDGBI(B)IBGDEFCHA
(C)ABCDEFGHI(D)IHGFEDCBA
4.阅读下面程序,回答问题。
voidmain()
{
intn,m,s=0,t=1;
scanf("%d",&m);
for(n=1;n<=m;n++)
{
t*=n;
s+=t;
}
printf("%d\n",s);
}
程序的功能是(32)
32(A)实现1的阶乘至m的阶乘的求和
(B)求m的阶乘
(C)1到m的求和
(D)实现1至m-1的阶乘的求和
5.读程序,回答问题。
#include
voidmain()
{
chars[80];
inti,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,其输出结果为(33)。
33(A)cc(B)tv10(C)ctv10(D)tv10cc
6.有下列程序:
#include
charfunc(char*s)
{
char*p=s;
while(*p!
='\0')
p++;
returnp-s;
}
voidmain()
{
printf("\n%d\n",func("Hello!
"));
getch();
}
(1)程序的运行结果是(34)。
34(A)3(B)Hello!
6(C)无输出(D)6
(2)指针变量的运算不可以(35)。
35(A)指针变量加整形变量(B)指针变量减整形变量
(C)指针变量加指针变量(D)指针变量减指针变量
7.以下是一个C++程序,读程序写出程序运行结果。
#include
voidmain()
{
intnum=0,i=8;
do
{i--;
num++;
}while(--i);
cout<}
程序的运行结果是(36)。
36(A)2(B)0(C)4(D)5
8.有下列程序:
#include
voidmain()
{charc='A';
intk=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;
default:
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.有下列程序
intw=3;
intfun(intk)
{
if(k==0)returnw;
return(fun(k-1)*k);
}
voidmain()
{
intw=10;
printf("%d\n",fun(5)*w);
}
输出结果是(39)。
39(A)360(B)3600(C)1080(D)1200
10.有下列程序
voidmain()
{
charch[2][5]={"6934","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)
p[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.函数fun的功能是:
找出N行M列二维数组元素中的最大值,并作为函数值返回,最大值的行列下标通过形参指针带回main函数中。
请填空。
#include
#defineN3
#defineM4
intfun(inta[N][M],int*row,int*col)
{
inti,j,r,c;
r=c=0;
for(i=0;ifor(j=0;jif(a[i][j]>①){r=i;c=j;}
②;
*col=c;
③;
}
voidmain()
{
inta[N][M]={1,2,3,4,5,6,7,8,9,10,11,12};
introw,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
voidmain()
{doublex=2,y=1,t,s=0;
inti;
for(i=1;i<=20;i++)
{
s=①;
t=②;
x=③;
y=t;
}
printf("s=%f\n",s);
}
3.有5个学生的成绩需要保存在文件score.dat文件中,保存格式如下:
姓名,年龄,成绩请填空。
#include
voidmain()
{FILE*fp;
inti;
charname[80];
intage;
floatscore;
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",name,age,score);
}
③;
}
4.下列程序的功能是:
从5个字符串中找出最长的那个字符串。
请填空。
#include
#include
#defineN5
#defineM81
char*fun(char(*sq)[M])
{inti;
①;
sp=sq[0];
for(i=1;iif(②)sp=sq[i];
returnsp;
}
voidmain()
{charstr[N][M],*longest;
inti;
printf("pleaseenter5string:
");
for(i=0;igets(str[i]);
for(i=0;iputs(str[i]);
longest=③;
printf("\nThelongeststring:
");
puts(longest);
}
5.下面程序的功能是:
由25人坐成圆圈,先从任一人出发用1到25顺时针依次编号,然后从1号开始顺时针报数(1,2,3,4,…),数到5的倍数的出圈,剩下的继续报数,求最后出圈的编号。
#include
voidmain()
{
inta[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(③);
}