计算机类二级C
2013年9月全国计算机等级《二级C语言程序设计》上机模考试卷(1)
43 题含答案C
1单选题1 / 43
有以下程序
#include
main()
{ int a=1,b=2,c=3,x;
x=(a^b)&C;printf("%d",x);
}
程序的运行结果是( )。
查看答案
D. 3
2单选题2 / 43
有以下程序:
fun(int x,int y){return(x+y);)
main()
{ int a=1,b=2,c=2,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d\n",sum);
}
执行后的结果是( )。
查看答案
C. 8
3单选题3 / 43
以下程序的输出结果是( )。
main()
{ int i;
for(i=0;i<3;i++)
switch(i){case 0:printf("%d",i);
case 2:printf("%d",i);
default:printf("%d",i);
}
}
查看答案
C. 000122
4单选题4 / 43
有以下程序:
main()
{ int k=5;
while(--k)printf("%d",k-=3);
printf("\n");
}
执行后的输出结果是( )。
查看答案
A. 1
5单选题5 / 43
若有定义语句:int a[3][6];,按在内存中的存放顺序,a数组的第10个元素是( )。
查看答案
B. a[1][3]
6单选题6 / 43
已知函数fread的调用形式为“fread(buffer,size,count,fp);”,其中buffer代表的是( )。
查看答案
C. 一个指针,是指向输入数据存放在内存中的起始地址
7单选题7 / 43
有下列程序:
int fun(int n)
{ if(n==1)}return 1;
else
return(n+fun(n-1));
}
main()
{ int x;
scanf("%d",&x);x=fun(x);printf("%d\n",x);
)
执行程序时,给变量x输入10,程序的输出结果是( )。
查看答案
A. 55
8单选题8 / 43
下列程序输出结果是( )。
#include
main()
{ char a[]={'a','b','C','d','e','f','\0').
int i,j;
i=sizeof(a);
j=strlen(a);
printf("%d,%d",i,j);
}
查看答案
B. 7,6
9单选题9 / 43
有下列程序:
int fun(int x[],int n)
{ static int sum=0,i:
for(i 0;i return sum;
}
main()
{ int a[]={1,2,3,4,5),b[]一{6,7,8,9),s=0:
s=fun(a,5)+fun(b,4);printf("%d\n",s):
}
程序执行后的输出结果是( )。
查看答案
C. 60
10单选题10 / 43
在面向对象方法中,( )描述的是具有相似属性与操作的一组对象。
查看答案
D. 类
11单选题11 / 43
下列特征中不是面向对象方法的主要特征的是( )。
查看答案
D. 模块化
12单选题12 / 43
有下列程序:
fun(int x,int y)
{ static int m=0,i=2;
i+=++rn;m=i x y;return m;
}
main()
{ int j=l,m=1,k;
k=fun(j,m);printf("%d,",k);
k=fun(j.m);printf(”%d\n”,k);
}
执行后的输出结果是( )。
查看答案
B. 5,11
13单选题13 / 43
算法的时间复杂度是指( )。
查看答案
C. 算法执行过程所需要的基本运算次数
14单选题14 / 43
已知数据表A中每个元素距其最终位置不远,为了节省时间,应采用的算法是( )。
查看答案
B. 直接插入排序
15单选题15 / 43
有以下程序:
main()
{ int a=0,b=l0,c=0,d=0;
if(a=1)b=1;c=2;
else d=3;
printf("%d,%d,%d,%d\n",a,b,C,d);
}
程序输出( )。
查看答案
D. 编译有错
16单选题16 / 43
下述程序执行的输出结果是( )。
#include
main()
{ char a[2][4];
strcpy(a,"are");strcpy(a[1],"you");
a[0][3]='&';
printf("%s\n",a):
}
查看答案
A. are&you
17单选题17 / 43
函数fseek()的正确调用形式是( )。
查看答案
B. fseek(文件类型指针,位移量,起始点);
18单选题18 / 43
若变量e为char类型,能正确判断出C为小写字母的表达式是( )。
查看答案
D. (c>='a')&&(c<='2')
19单选题19 / 43
有以下结构体说明和变量的定义,且指针P指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是( )。
struct node
{char data;
struct node*next:
}a,b,*p=&a,*q=&b;
查看答案
B. P.next=&b;
20单选题20 / 43
若有定义“int b[8],*p=b;”,则p+6表示( )。
查看答案
B. 数组元素b[6]的地址
21单选题21 / 43
有以下程序:
#include
main()
{ int i=0,a=0;
while(i<20)
{ for(;;)
{if((i%10)==0)break:
else
i--;
}
i+=11:
a+=i:
}
printf("%d\n",a);
}
程序的输出结果是( )。
查看答案
D. 32
22单选题22 / 43
有下列程序:
main()
{ int x=5;
do
{printf("%d",X-=4);)
while(!(--x));
}
程序的输出结果是( )。
查看答案
C. 1 -4
23单选题23 / 43
有以下结构说明和变量定义,指针p、q、r分别指向链表中的3个连续结点。
struct node
{ int data;struct node*next;)*p,*q,*r;
现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能按要求完成操作的语句是( )。
查看答案
D. p=q->next;
24单选题24 / 43
执行语句“for(i=1;i++<4;);”后,变量i的值是( )。
查看答案
A. 3
25单选题25 / 43
在C语言程序中可用做用户标识符的是( )。
查看答案
B. aa
_abc
cas
26单选题26 / 43
以下程序运行后,输出结果是( )。
#include
#define PT 5.5
#define S(x)PT*x*X
main()
{ int a=1,b=2:
printf("%4.1f\n",s(a+b));
}
查看答案
B. 9.5
27单选题27 / 43
下列叙述中正确的是( )。
查看答案
A. 用E—R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系
28单选题28 / 43
下面程序的功能是输出以下形式的金字塔图案:main()
{ int i,j; *
for(i=l;i<-4;i++) ***
{ for(j=1;j<=4-i;j++) printf("");
*****
for(j=1;j<=____;j++)printf("
*"); *******
printf("\n");
}
}
在下划线处应填入的是( )。
查看答案
B. 2*i一1
29单选题29 / 43
以下程序的输出结果是( )。
main()
{ int a=1,b;
for(b=1,b<=10;b++)
{ if(a>=8)break;
if(a%2==1){a+=5;continue;}
a=3;}
printf("%d\n",b);
查看答案
B. 4
30单选题30 / 43
如果进栈序列为el、e2、e3、e4,则可能的出栈序列是( )。
查看答案
B. e2、e4、e3、el
31单选题31 / 43
以下程序的输出结果是( )。
main( )
{ int Rum=0;
while(num<=2)
{ num++;
printf(”%d\n”,num);
}
}
查看答案
B. 1
32单选题32 / 43
假定所有变量均已正确说明,下列程序段运行后x 的值是( )。
a=b=c=0;x=12;
if(!a)x--;
else x=5:
if(c)x=3:
else x=4:
查看答案
B. 4
33单选题33 / 43
表达式“~0x11”的值是( )。
查看答案
A. 0xFFEE
34单选题34 / 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);
}
程序执行后的输出结果是( )。
查看答案
B. x=8
35单选题35 / 43
有下列程序:
main()
{ int k=5:
while(--k)printf("%d",k=1);
printf("\n");
}
执行后的输出结果是( )。
查看答案
A. 1
36单选题36 / 43
有以下程序
#include
main()
{FILE*fp;int a[0]一{1,2,3,0,0},i;
fp=fopen("d2.dat,"wb");
fwrite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a.sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printft("%d",a[i]);
}
程序的运行结果是( )。
查看答案
D. 1,2,3,0,0,1,2,3,0,0,
37单选题37 / 43
下列程序执行后的输出结果是( )。
main()
{ int a[3][3],*p,i};
p=&a[0][0];
for(i=p;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
查看答案
D. 随机数
38单选题38 / 43
若有定义:“int a[2][3];”,则对a数组的第i行第j 列元素的正确引用为( )。
查看答案
A. *(*(a+i)+j)
39单选题39 / 43
下列程序执行后的输出结果是( )。
main()
{int x='f';printf("%c\n",'A'+(x-'a'+1));}
查看答案
D. J
40单选题40 / 43
有以下程序:
#include<
struct stu
{ int num;
char name[10]:
int age;}
void fun(struct stu*p)
{printf("%s\n",(*p).name);}
the main()
{
struct stu students[3]={{9801,"Zhang".20},
{9802,"Wang",19},{9803,"Zhao",1 8}}
fun(students+2);
}
输出的结果是( )。
查看答案
B. Zhao
41主观题41 / 43
str是一个由数字和‘,:母字符组成的字符串,由变量num传人字符串长度。请补充函数proc(),该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。
例如,str="abc3de987f9621",结果为:3987621。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#define M 80
int bb[M];
int proc(char str[],int bb[],int num)
{
int i,n=0;
for(i=0;i<NUM;I++)
{
if(【1】)
{
bb[n]=【2】:
n++:
}
}
return 【3】 ;
}
void main()
{
char str[M];
int mum=0,n,i;
printf("Enter a strin9:\n");
gets(str);
while(str[num])
num++:
n=proc(str,bb,num);
printf("\nbb=");
for(i=0;i<N;I++)
printf("%d",bb[i]);
}
查看答案
【1】str[i]>='0'&&str#i#<='9 '
【2】str[i]-'0'
【3】n
42主观题42 / 43
下列给定的程序中,函数proc()的功能是:判断字符ch 是,与str所指字符串中的某个字符相同;若相同,则什么也不做,若不同,则将其插在串的最后。请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
#include
//****found****
void proc(char str,char ch)
{
while(*str &&*str!=ch)str++;
//****found****
if(*str==ch)
{ str[0]=ch;
//****found****
str[1]='0':
}
}
void main()
{
char str[81],ch;
system("CLS");
printf("\nPlease enter a string:");
gets(str);
printf("\n Please enter the character to
search:");
ch=getchar();
proc(str,ch);
printf("\nThe result is%s\n",str);
}
查看答案
1.错误:void proc(char str,char ch)
正确:void proc(char*str,char ch)
2.错误:if(*str==ch)
正确:if(*str=='\0 ')
3.错误:str[1]='0';
正确:str[1]='\0';
43主观题43 / 43
学生的记录由学号和成绩组成,M名学生的数据已在主函数中放人结构体数组stu中,请编写函数proc(),它的功能是:把指定分数范围之外的学生数据放在b所指的数组中,分数范围之外的学生人数由函数值返回。
例如,输入的分数是70和79,则应当把分数低于70和高于79的学生数据输出,不包含70分和79分的学生数据。主函数中把70放在low中,把79放在heigh中。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。
试题程序:
#include
#define M 16
typedef struct
{
char num[10];
int s:
}
STREC;
int proc(STREC*a,STREC*b,int 1,int h)
{
}
void main()
{
STREC stu[M]={{"GA005",55),{"GA003",96},
{"GA002",80),{"GA004",68),
{"GA001",88},{"GA007",74},
{"GA008",85),{"GA006",89},
{"GA015",90),{"GA013”,53),
{"GA012",66},{"GA014”,82),
{"GA011",73},{"GA017",69),
{"GA018",64),{"GA016",86}};
STREC h[M];
int i,n,low,heigh,t;
printf("Enter 2 integer number low&
heigh:");
scanf("%d%d",&low,&heigh);
if(heigh
{
t=heigh:
heigh=low;
low=t;
}
n=proc(stu,h,low,heigh);
printf("The student’S data out
%d--%d:\n",low,heigh);
for(i=0;i<N;I++)
printf("%S%4d\n",h[i].num,h[i].s);
//输出指定分数范围内的学生记录
printf("\n");
}
查看答案
int proc(STREC*a,STREC*b,int l,int h)
{
int i,j=0;
for(i=0;i<M;i++)
if((a[i].s>=0&&a
[i].s<1)||(a[i].s>h&&a [i].s<=l00)) //通过if语句,来判断指定范围
之外的数 b[j++]=a[i];//放到b数组中
return j; //最后把其个数返回到主函数中
}