}
程序的运行结果为:
(29)。
29(A)10(B)4(C)3(D)2
4.读程序回答问题。
(考点:
字符数组、函数(指针参数)、删除字符串中空格算法)
#include
voidfun(char*str)
{inti,j=0;
for(i=0;str[i]!
='\0';i++)
if(str[i]!
='')str[j++]=str[i];
s[j]='\0';
}
voidmain()
{charstr[80];
intn;
printf("Inputastring:
");
gets(str);
fun(str);
printf("%s\n",str);
}
程序运行时输入字符串asd_ab_123(注:
用“_”表示空格),则程序的运行结果为(30)
30(A)asdab123(B)asd_ab123(C)asdab_123(D)asd
5.读程序,回答问题。
(考点:
结构体数组赋值和运算)
#include
#include
structmod
{inta,b,c;};
voidmain()
{structmodst[3]={{1,2,3},{4,5,6},{7,8,9}};
inttotal;
total=st[0].a+st[1].b;
printf("total=%d\n",total);
getch();
}
程序运行输出total=(31)。
31(A)5(B)6(C)7(D)8
6.有下列程序:
(考点:
switch语句、自增自减运算、复合赋值运算)
#include
voidmain()
{intx=10,y=5;
switch(x)
{case1:
x++;
default:
x+=y;
case2:
y--;
case3:
x--;
}
printf("x=%d,y=%d",x,y);
}
程序输出结果为(32)。
32(A)x=14,y=4(B)x=15,y=4
(C)x=10,y=5(D)x=15,y=5
7.读程序,回答问题。
(考点:
递归函数、静态变量)
#include
intf(intm)
{staticintn=1;
m/=2;
m=m*2;
if(m)
{n*=m;
return(f(m-2));
}
elsereturn(n);
}
voidmain()
{inta,i,j;
for(i=0;i<2;i++)
{a=f(4+i);
printf("%d\n",a);
}
}
(1)程序第一次的输出结果是(33)。
33(A)8(B)0(C)64(D)4
(2)程序第二次的输出结果是(34)。
34(A)8(B)0(C)64(D)4
8.有下列程序,若程序编译连接后生成可执行文件CAD.EXE,则输入以下命令行:
cadFILE1FILE2(表示回车)
程序的运行结果是(35)。
(考点:
命令行参数)
#include
voidmain(intargc,char*argv[])
{inti;
printf("%d\n",argc);
for(i=0;i<=argc-1;i++)
printf("%s",argv[i]);
printf("\n");
}
35(A)2(B)3
Cadfile1file2file1file2
(C)2(D)3
CAD.EXEFILE1FILE2CAD.EXEFILE1FILE2
9.下面程序的功能是把316表示为两个数的和,且这两具加数分别能被13和11整除。
程序while语句下划线处应填入(36)。
(考点:
循环应用)
#include
voidmain()
{inti=0,j,k;
do{
i++;
k=316-13*i;
}while();
j=k/11;
printf("316=13*%d+11*%d",i,j);
}
36(A)k/11(B)k%11(C)k(D)k%11==0
10.读程序并回答问题。
(考点:
if~else嵌套应用)
#include
voidmain()
{inta=1,b=3,c=5,d=4,x;
if(a
if(celse
if(aif(belsex=3;
elsex=6;
elsex=7;
printf("%d",x);
}
(1)程序执行完后x的值是(37)。
37(A)1(B)2(C)3(D)6
(1)当d的值改为2时,程序执行完后x的值是(38)。
38(A)1(B)2(C)3(D)6
11.以下程序的运行结果为(39)。
(考点:
函数(地址参数)
#include
voidsub(intx,inty,int*z)
{*z=y-x;}
voidmain()
{inta=1,b=2,c=3;
sub(a,b,&a);
sub(b,a,&b);
sub(a,b,&c);
printf("%d,%d,%d\n",a,b,c);
}
39(A)1,1,0(B)1,2,3(C)1,-1,-2(D)1,2,1
12.下面程序的输出结果是(40)。
(考点:
字符指针、字符串处理库函数)
#include
#include
voidmain()
{char*p1="abc",*p2="ABC",str[50]="xyz";
strcpy(str+3,p2);
strcat(str+2,p1);
printf("%s\n",str);
}
40(A)xyzabcABC(B)xyzABabc(C)yzabcABC(D)xyzABCabc
注意:
①请把下面“程序填空”中各小题答案写在主观题答题纸上
②每一个空只填一个语句或一个语句所缺的部分内容
三、程序填空(每空2分,共30分)
1.函数fun的功能是:
求出s所指字符串中指定字符的个数,并返回个数。
例如,在main函数中,若输入字符串abcdabacaa,输入指定字符a,则输出结果为5,即字符串abcdabacaa中有5个字符a。
请填空。
(考点:
数组、函数(地址参数)、查找指定字符算法)
#include
#defineM81
intfun(char*s,charc)
{inti,cnt=0;
for(i=0;①;i++)
if(*(s+i)==c)
cnt++;
②
}
voidmain()
{charstr[M],ch;
printf("\nPleaseenterastring:
");
gets(str);
printf("\nPleaseenterachar:
");
ch=getchar();
printf("\nThenumberofthecharis:
%d\n",③);
}
2.函数fun的功能是根据公式
计算级数前n项的和s,计算结果通过形参指针s传回;n值大于等于0。
请填空。
(考点:
函数(指针参数)、序列计算算法)
#include
voidfun(float*s,intn)
{floatt=0.0;
inti,k=-1;
for(i=0;i<=n;i++)
{k=①*k;
t=t+k*1.0/②;
}
③
}
voidmain()
{intn;
floats;
printf("Inputn:
");
scanf("%d",&n);
fun(&s,n);
printf("s=%f\n",s);
}
3.下列程序的功能是:
求一个M*N二维数组每行元素的和,并将和依次放入一个一维数组中传回主函数。
例如,若有以下二维数组:
61021015
17141586
418101912
012127
则输出为:
43606322。
请填空。
(考点:
二维数组、函数(地址参数)、数组求和算法)
#defineM4
#defineN5
#include
fsum(inta[][N]),intb[])
{inti,j;
for(i=0;i①;
for(i=0;ifor(j=0;j②=a[i][j];
}
voidmain()
{intx[M][N],y[M],i,j;
printf("The%dx%dArray:
\n",M,N);
for(i=0;i{for(j=0;j{③=rand()%20;
printf("%6d",x[i][j]);
}
printf("\n");
}
fsum(x,y);
printf("Thesumofeachline:
\n");
for(i=0;iprintf("%6d",y[i]);
printf("\n");
}
4.下面的程序求ab.c文件中最长的行的字符数len及其行号line。
请填空。
(考点:
文件)
#include
voidmain()
{intline,i,j=0,len=0;
charc;
FILE*fp;
fp=fopen("ab.c","r");
rewind(fp);
while(fgetc(fp)!
EOF)
{i=1;
while(fgetc(fp)!
='\n')①;
j++;
if(i>len){len=i;②;}
}
printf("\n%d\t%d\n",len,line);
③;
}
5.下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数按位放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其他依此类推。
请填空。
(考点:
进位计数制转换算法)
#include
intfun(intx,intb[])
{intk=0,r;
do
{r=x%2;
b[①]=r;
x/=②;
}while(x);
return③;
}
voidmain()
{intk,n,a[20];
printf("\nEntern:
");
scanf("%d",&n);
k=fun(n,a);
while(k>=0)
printf("%d",a[k--]);
}
第二十八次等级考试
第二部分C与C++语言程序设计
一、单项选择题(每小题1分,共10分)
1、D2、B3、A4、C5、B
6、D7、C8、A9、B10、D
二、读程序题(每个选择3分,共45分)
1、B2、AC3、D4、A5、B
6、A7、AC8、D9、B10、BC
11、C12、D
三、程序填空题(每空2分,共30分)
1、①*(s+i)或*(s+i)!
='\0'②returncnt;③fun(str,ch)
2、①-1②(2*i+1)③*s=t;
3、①b[i]=0②b[i]+③x[i][j]
4、①i++②line=j③fclose(fp)
5、①k++②2③k-1