计算机类二级C

2014年全国计算机等级《二级C语言程序设计》上机考试冲刺试题(2)

43 题含答案C
共 43 题返回本类
1单选题1 / 43
关于结构化程序设计原则和方法的描述错误的是(  )。
查看答案
C. 不允许使用GOTO语句
2单选题2 / 43
下列程序的输出结果是(  )。
main()
fint a,b,d=25;
a=d/10%9;
b=a&&(-1);
printf(”%d,%d\n”,a,b);)
查看答案
B. 2,1
3单选题3 / 43
若有下列定义(设int类型变量占2个字节):
int i=8,j=9;
则下列语句:
printf(”i=%%d,j=%%d\n”,i,j);
输出的结果是(  )。
查看答案
B. i=%d,j=%d
4单选题4 / 43
假定所有变量均已正确说明,下列程序段运行后x的值是(  )。
a=b=c=0;x=12;
if(!a)x--;
else X=5:
if(c)x=3:
else x=4:
查看答案
B. 4
5单选题5 / 43
#include<:stdi0.h>
main()
{ int a,b,s;
scanf(“%d%d“,8La,8Lb);
s=a:
if(a
s=s:
printf(”%d\n”,s);
}
若执行以上程序从键盘上输入3和4时,则输出结果是(  )。
查看答案
B. 16
6单选题6 / 43
在下列给出的表达式中,与while(E)中的(E)不等价的表达式是( )。
查看答案
B. (E>0||E<0)
7单选题7 / 43
下列叙述中正确的是(  )。
查看答案
D. 在C程序中,求取余运算符“%”两边的类型相同时才能进行运算
8单选题8 / 43
下列程序的执行结果是(  )。
#include
main()
{ int a,b,C;
a=b=2,C=1:
c=(a4-+)-1;printf(”%d,%d”,a,c);
c+=-a+++4-(++b);printf(”%d,%d”.a。c);
查看答案
A. 3,14,1
9单选题9 / 43
函数调用strcat(strcpy(strl,str2),str3)的功能是(  )。
查看答案
C. 将字符串str2复制到字符串str1之后再将字符串str3连接到字符串str1之后
10单选题10 / 43
以下程序的输出结果是(  )。
main()
{ int i;
for(i=0;i<3;i++)
switch(i)f case 0:printf(”%d”,i);
case 2:printf(”%d“,i);
default:printf(”%d”,i);
}
查看答案
C. 000122
11单选题11 / 43
关系数据库管理系统能实现的专门关系运算包括(  )。
查看答案
B. 选择、投影、连接
13单选题13 / 43
有下列程序:
main()
{ int x=5;
do
{printf(“%d”,x-=4);)
while(!(--x));
)
程序的输出结果是(  )。
查看答案
C. 1-4
14单选题14 / 43
为了避免在嵌套的条件语句if else中产生二义性,C语言规定,else子句总是与(.)配对。
查看答案
B. 其前面最近的if
15单选题15 / 43
C语言结构体类型变量在程序执行期间,( )。
查看答案
A. 所有成员一直驻留在内存中
16单选题16 / 43
以下选项中不正确的实型常量是(  )。
查看答案
B. 0.8103e 2
17单选题17 / 43
下列程序执行后的输出结果是(  )。
main()
{int a[3][3],*P,ij;
p一&.aEo]Eo];
for(i=P;i<9;i++)p[i]=i-i+1;
printf(”%d\n”,a[1][2]);
}
查看答案
D. 随机数
18单选题18 / 43
设fun()函数的定义形式为
void fun(char ch,float x){…}
则下列对函数fun的调用语句中,正确的是(  )。
查看答案
C. fun('65',2.8);
19单选题19 / 43
若执行以下程序时从键盘上输入9,则输出结果是( )。
main()
{ int n;
scanf("%d",&n);
if(n++<10)printf("%d\n",n)
else printf("%d\n",n--);
}
查看答案
B. 10
20单选题20 / 43
下列叙述中正确的是(  )。
查看答案
A. 只能在循环体内和switch语句体内使用break语句
21单选题21 / 43
有以下程序
#include
int fun(char s[])
{ int n=0:
while(*s<='9'&&*s>='0')(n=10*n+*s
-'0';s++;}
return(n);
}
main()
(char s[10]={'6''1','*','4','*','9','*',
'0','*'};
printf(”%d”,fun(s));
)
程序运行的结果是(  )。
查看答案
C. 61
22单选题22 / 43
有以下程序:
void fun(char*A.char*b)
{ a=b; (*a)++;}
main()
{char c1='A',c2='a',*p1,*p2;
p1=&c1;p2=*c2;fun(p1,p2);
print{(”%c%c\n”,c1,c2);
)
程序运行后的输出结果是(  )。
查看答案
A. Ab
23单选题23 / 43
C语言中的简单数据类型有(  )。
查看答案
B. 整型、实型、字符型
24单选题24 / 43
下列程序的输出结果是( )。
#include
#include
void fun(int b[])
{ static int i=0;
do
{b[i3+一b[i+1];
)while(++i<2);
)
main()
{int k,a[53={1,3,5,4,9);
fun(a);
for(k=0;k<5;k++)printf(“%d”,a[k]);
}
查看答案
C. 48549
26单选题26 / 43
为表示关系:X≥y≥z,应使用的C语言表达式是(  )。
查看答案
A. (x>=y)&&(y>=z)
27单选题27 / 43
以下程序的输出结果是(  )。
main()
(char st[20]=”hello\0\t\\\”;
printf(”%d%d\n“,strlen(st),sizeof(st));
}
查看答案
B. 5 20
28单选题28 / 43
下列程序的运行结果为( )。
#define MAX(x,y) (x)>(y)?(x):(y)
main()
{ int a=2,b=3,c=1,d=3,t;
printf(”%d\n“,(MAX(a+b,c+d))*100);
)
查看答案
A. 500
29单选题29 / 43
有下列程序:
fun(int x。int y)
{ static int m=0,i=2;
I+=m+1;m=i+x+y;return m;
}
Rain()
{int j=1,m=1,k;
k=fun(i,m);prjntf(”%d,”,k);
k=fun(j,m);printf(”%d\n”,k);
)
执行后的输出结果是(  )。
查看答案
B. 5,11
30单选题30 / 43
有下列程序:
main()
{ int i,j,x=0;
for(i-0,i<2;i++)
{ x++:
for(j=0;j<=3;j++)
{ if(j%2)continue
X++;
}
x++:
}
printf(”x=%d\n”,x);
f
程序执行后的输出结果是(  )。
查看答案
B. x=8
31单选题31 / 43
一些重要的程序设计语言(如C语言和Pascal语言)允许过程的递归调用,而实现递归调用中的存储分配通常用( )。
查看答案
A. 栈
32单选题32 / 43
若有以下程序:
#include
void sub(double x,double*y,double*z){ *Y=*
y-1.0;*z=*z+x;)
main()
{double a=2.5,b 9.0,*pa,*pb;
pa=&a;pb=&b;
sub(b-a,pa,pa);printf(”%f\n”,a);
)
程序的输出结果是(  )。
查看答案
C. 8.000000
33单选题33 / 43
有下列程序:
void sort(int a[],int n)
{ int i,j,t;
for(i=0;j<N-1;I++)
for(j=i+1;j<N;J++)
if(a[i]
)
main()
{int aa[1O]={1,2,3,4,5,6,7,8,9,1O),i;
sort(aa+2,5);
for(i=0;i<10;i++)printf(”%d,”,aa[i]);
printf(”\n”);
}
程序运行后的输出结果是(  )。
查看答案
C. 1,2,7,6,5,4,3,8,9,10,
34单选题34 / 43
有以下程序段
int j;float y;char name[50];
scanf(”%2d%f%s”,&j,&y,name);
当执行上述程序段,从键盘上输入55566 7777abe后,Y的值为(  )。
查看答案
B. 566.0
35单选题35 / 43
以下程序的输出结果是(  )。
void prt(int*m,int n)
{ int i;
for(i=0;i<N;I++)MFI]++;}
main()
{int a[]={1,2,3,4,5),i;
prt(a,5);
for(i=0;i<5;i++)
printf(”%d,”,a[i]);)
查看答案
B. 2,3,4,5,6
36单选题36 / 43
下列能正确进行字符串赋值的是(  )。
查看答案
C. char*s;s=”ABCDE”;
37单选题37 / 43
下列叙述中正确的是(  )。
查看答案
C. break语句只能用在循环体内和switch语句体内
38单选题38 / 43
有以下程序:
#include
main()
(int a[]={2,4,6,8,lo),y=1,x,*P;
p=&a[1];
for(x=0;x<3;x++)y+=*(p+x);
print{(”%d\n”,Y);
}
程序的输出结果是(  )。
查看答案
C. 19
39单选题39 / 43
以下程序的输出结果是(  )。
main()
(char ch[3][4]={"123”,“456”.”78”),*P[3];
inl i;
for(i==-0;i<3;i++)p[i]=ch[i];
for(i=0;i<3;i++)printf(”%s”。p[i]);}
查看答案
B. 123 456 780
40单选题40 / 43
下列叙述中正确的是(  )。
查看答案
D. 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
41主观题41 / 43
给定程序的功能是计算score中m个人的平均成绩aver,将低于aver的成绩放在below中,通过函数名返回人数。
例如,当score=(10,20,30,40,50,60,70,80,90},m=9时,函数返回的人数应该是4,below={10,20,30,40)。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
试题程序:
#include<2 stdio.h>
#include<2string.h>
int fun(int score[],int m,int below[])
,
int i,j=0;
float aver=0.0;
for(i=0:i<2m;i++)
aver+=score[i];
aver/=(float)m;
for(i=0:i<2m;i++)
if(score[i]<2aver)
below[j++]=【1】;
return j;
}
void main()
{
int i,n,below[9];
int score[9]={10,20,30,40,50,60,70,80,90);
n=fun(score,9,【2】);
printf(”\n Below the average score are:%d\n”,n);
for(i=0;i<2n;i++)
printf(”%d”,【3】);
}
查看答案
[1]sCorE[i]或*(sCorE+i)[2lBElow[AlBElow[i]或*(BElow+i)
42主观题42 / 43
下列给定程序中,函数proc()的功能是:从字符串str中,删除所有大写字母'F'。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
void proc(char*str)
{
int i,j;
//****found****
for(i=j=0;str[i]!='0';i十十)
if(str[i]!='F')
//****found****
str[j]=str[i];
str[j]='\0';
}
void main()
{
char str[80];
printf(”\nEnter a string:”);
gets(str);
printf(”The original string:”);
puts(str);
proc(str);
printf(”The string after deleted:”);
puts(str);
printf(”\n\n”);)
查看答案
(1)错误:For(i=j=0;str[i]!=70’;i++)正确:For(i=j=0;strEi]!=’\o’;i++)(2)错误:str[j]=str[i];正确:str[j++]=str[i];
43主观题43 / 43
M名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数proc()。它的功能是:找出学生的最高分,由函数值返回。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#define M 8
struet slist
(double S;
slrucl Mist*next;
);
typedef struct slist STREC:
double proc(STRgC*h)
(
}
STREC*creeli(double*S)
{
STREC *h,*p,*q;
int i=0;
h=p=(STREC*)malloe(sizeof(STREC));
p->s=0:
while(i<M)
/产生8个节点的链表,各分数存入链表中
{ q=(STREC*)malloc(sizeof(STREC)):
p->s=s[i];++ p->next=q;p=q;
}
p->next=NULL:
return h;//返回链表的首地址
}
void outlist(STREC*11)
{
STREC *p;
p=h;
printf(”head”);
do
{
printf(“->%2.0f”,p->s);p=p-2>next;)
//输出各分数
while(p->next!=NULL):
print[(”\n\n”);
)
void main()
{
double stu[M]={60,70,80,90,65,75,85,95,
max:
STREC * h:
h=ereat(stu);
oullist(h):
max=proc(h):
printf(”max=%6.1f\n”,max):
)
查看答案
*h)
{
>;
while(h!=NULL)//断其是否为终结点
{
if(max<h->s)max=h一>s;把大的数放到中
h=h->next:}
最后通过返回值返回到主函数中
← 上一卷下一卷 →