7.以下程序的输出结果是(22)。
(考点:
宏定义、函数)
#include
#defineP3
intF(intx){return(P*x*x);}
voidmain()
{printf("%d\n",F(3+5));}
22(A)192(B)29(C)25(D)编译出错
8.以下程序输出的结果是(23)。
(考点:
数组及其运算))
#include
voidmain()
{charp[]={'a','b','c'},q[]="abc";
printf("%d,%d\n",sizeof(p),sizeof(q));
}
23(A)4,4(B)3,3(C)4,3(D)3,4
9.下面哪个是合法的数组定义(24)。
(考点:
数组)
24(A)chara={'H','e','l','l','o'};(B)chara[5]={"H","e","l","l","o"};
(C)chara[5]={'H','e','l','l','o'};(D)chara[5]="Hello";
10.表达式0x13&0x17的值是(25)。
(考点:
位运算)
25(A)0x17(B)0x13(C)0x18(D)0xec
二、读程序回答问题(每个选择3分,共45分)
1.读程序,回答问题。
(考点:
if~else条件语句)
#include
voidmain()
{
intx,y;
scanf("%d,%d",&x,&y);
if(x>y)
x=y;y=x;
else
x++;y++;
printf("%d,%d\n",x,y);
getch();
}
①程序的输出结果是(26)。
26(A)有语法错误,不能通过编译
(B)若输入数据3和4,则输出4和5
(C)若输入数据4和3,则输出3和4
(D)若输入数据4和3,则输出4和4
②程序中getch()函数的作用是(27)。
27(A)输出结束字符(B)输入开始字符
(C)方便看运行结果(D)没有任何作用
2.以下程序的运行结果为(28)。
(考点:
二维数组、指针数组)
#include
voidmain()
{charch[2][10]={"693","825"},*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);
}
28(A)92(B)6982(C)9325(D)6385
3.阅读如下程序:
(考点:
switch语句)
#include
voidmain()
{inta=0,b=2,c=3;
switch(a)
{case0:
switch(b==2)
{case1:
putchar('&');break;
case2:
putchar('%');break;
}
case1:
switch(c)
{case1:
putchar('$');
case2:
putchar('*');break;
default:
putchar('#');
}
}
}
29(A)&%(B)(C)&$(D)%#
4.读程序,回答问题。
(考点:
递归函数)
#include
fun(intx)
{intp;
if((x==0)||(x==1))return3;
p=x-fun(x-2);
returnp;
}
voidmain()
{inta;
printf("\nEnterapositiveinteger:
");
scanf("%d",&a);
if(a<0)printf("Inputerror\n");
elseprintf("%d\n",fun(a));
}
①该函数的功能是(30)。
30(A)利用递归函数f(x)=x-f(x-2)(B)计算数学函数f(x)=f(x-2)
(C)计算x的阶乘(D)以上都不是
②如果从键盘输入a的值为9,则运行的结果是(31)。
31(A)9(B)7(C)3(D)1
5.以下程序的输出结果是(32)。
(考点:
全局变量的作用范围)
#include
voidfun()
{externintx,y;
inta=15,b=10;
x=a-b;
y=a+b;
printf("%d,%d\n",x,y);
}
intx,y;
voidmain()
{inta=7,b=5;
x=a+b;
y=a-b;
fun();
printf("%d,%d\n",x,y);
}
32(A)5,25(B)12,2(C)2,12(D)25,5
5,2512,22,1225,5
6.读程序,回答问题。
(考点:
结构体数组、结构体指针、函数(指针参数))
#include
structstu
{intnum;
charname[10];
intage;
};
voidfun(structstu*p)
{printf("%s\n",(*p).name);}
voidmain()
{structstustudents[3]={{9801,"Zhang",20},{9802,"Wang",21},{9803,"Zhao",19}};
fun(students+2);
}
①fun函数的功能是(33)。
33(A)结构体数组排序(B)输出结构体的name成员
(C)输入结构体数组的数据(D)计算students数组加2后的值
②运行该程序,输出的结果是(34)。
34(A)Zhang(B)Wang(C)Zhao(D)9801
7.读程序,回答问题。
(考点:
函数(指针参数)、指针运算)
#include
charfunc(char*s)
{char*p=s;
while(*p!
='\0')
p++;
returnp-s;
}
voidmain()
{printf("\n%d\n",func("Hello!
"));
getch();
}
①程序的运行结果是(35)。
35(A)3(B)Hello!
6(C)无输出(D)6
②指针变量不可以进行的运算是(36)。
36(A)指针变量加整型常量(B)指印变量减整型常量
(C)指针变量加变量指针变量(D)指针变量减指针变量
8.读程序,回答问题。
(考点:
命令行参数)
voidmain(intargc,char*argv[])
{while(--argc>0)
printf("%s",argv[argc]);
printf("\n");
}
若以上程序经编译连接后生成可执行文件2-8.exe,运行时输入命令行:
2-8ABCDEFGHIJKL则输出结果为(37)。
37(A)ABCDEFG(B)L(C)LKJIHGFEDCBA(D)ABCDEFGHIJKL
9.读程序,回答问题。
(考点:
共用体及指针)
#include
unionpw
{inti;
charc[2];
}*p,a;
voidmain()
{p=&a;
p->i=5;
p->c[0]=10;
p->c[1]=1;
printf("%d\n",a.i);
}
程序的运行结果为(38)。
38(A)266(B)1(C)10(D)5
若将程序中的union改为struct,则程序的运行结果为(39)。
39(A)266(B)1(C)10(D)5
10.读程序,回答问题。
(考点:
变量的作用范围)
#include
voidmain()
{intm=1,n=2,t=3;
++m;
t+=++n;
{intn=10,t;
t=n*2;
m+=t;
printf("%d,%d,%d\n",m,n,t);
}
printf("%d,%d,%d\n",m,n,t);
}
程序的运行结果是(40)。
40(A)22,11,5(B)22,10,20(C)32,9,5(D)16,21,6
22,3,922,3,618,5,622,3,6
注意:
①请把下面“程序填空”中各小题答案写在主观题答题纸上
②每一个空只填一个语句或一个语句所缺的部分内容
三、程序填空(每空2分,共30分)
1.下面程序的功能是:
统计C语言源程序(file3-1.c)文件中的“{”和“}”是否配对,即“{”和“}”的数目是否相等。
如果配对,则输出“OK!
”否则输出“ERROR!
”。
(考点:
文件、字符配对算法)
#include
#include
voidmain()
{FILE*fp;
①;
intch1=0,ch2=0;
if((fp=fopen("file3-1.c",②))==NULL)
{printf("fileopenerror!
\n");
exit(0);
}
while(!
feof(fp))
{③=fgetc(fp);
if(ch1=='{')
ch1++;
if(ch2=='}')
ch2++;
}
fclose(fp);
if(ch1==ch2)
printf("OK!
\n");
else
printf("ERROR!
\n");
}
2.下面程序的功能是:
将一个数插入到一个有序数组(从小到大)中,使插入以后的数组仍然有序。
采用的算法是:
确定要插入数的位置,然后将比这个数大的数后移一个位置,在空出的位置上将该数插入。
(考点:
数组、插入排序算法)
#include
voidmain()
{inta[11]={1,3,6,7,9,12,14,18,19,20},x;
inti,p;
printf("Inputadata:
\n");
scanf("%d",&x);
for(i=0,p=10;i<10;i++)
if(x{①;
break;
}
for(i=9;②;i--)
a[i+1]=a[i];
③;
printf("Thearray:
\n");
for(i=0;i<11;i++)
printf("%4d",a[i]);
printf("\n");
}
3.以下程序能统计一个英文句子(以.号结束)中最长单词的长度。
(考点:
字符数组、函数(指针参数)、单词长度处理算法)
#include
intcount(char*p)
{intword=0,max=0;
while(*p!
='.')
{while((*p<='z')&&(*p>='a')||(*p<='Z')&&(*p>='A'))
{①;
p++;
}
if(②)
max=word;
③;
p++;
}
returnmax;
}
voidmain()
{charstr[80];
gets(str);
printf("max=%d\n",count(str));
}
4.下面程序中,函数SumColumMin的功能是:
求出M行N列二维数组每列元素中的最小值,并计算它们的和值。
主函数中输出和值。
(考点:
二维数组、函数(指针参数)、二维数组最值求和算法)
#include
#defineM2
#defineN4
voidSumColumMin(inta[M][N],int*sum)
{inti,j,k,s=0;
for(i=0;i{k=0;
for(j=0;jif(a[k][i]>a[j][i])k=j;
s+=①;
}
②=s;
}
voidmain()
{
intx[M][N]={3,2,5,1,4,1,8,3},s;
SumColumMin(③);
printf("%d\n",s);
}
5.以下程序采用直接选择法对数组a中的10个数进行降序排列,然后按每行5个数的格式输出。
(考点:
数组、选择排序算法)
#include
voidmain()
{
inti,j,k,t,a[10]={1,4,3,5,7,9,2,0,6,8};
for(j=0;j<9;j++)
{
k=j;
for(i=j+1;i<10;i++)
{
if(*(a+i)>①)
k=i;
}
t=a[j];
*(a+j)=②;
*(a+k)=t;
}
for(i=0;i<10;i++)
printf((i%5)?
"%4d":
③,*(a+i));
printf("\n");
}
第二十六次等级考试
二级(C与C++语言)笔试试卷
(参考答案)
第一部分软件技术基础
一、是非判断题(每小题1分,共10分)
1~10:
BABAB BBABB
二、选择题(每小题1分,共5分)
1~5:
BCCCA
第二部分C与C++语言程序设计
一、单项选择题(每小题1分,共10分)
1、A2、B3、C4、B5、D
6、C7、A8、D9、C10、B
二、读程序回答问题(每个选择3分,共45分)
1、AC2、D3、B4、AB5、A
6、BC7、DC8、D9、AD10、B
三、程序填空(每空2分,共30分)
1、①charch②"r"③ch
2、①p=i②i>=p③a[p]=x
3、①word++②max4、①a[k][i]②*sum③x,&s
5、①a[k]②a[k]③"%4d\n"