2013年9月全国计算机等级《二级C语言程序设计》命题预测试卷一
-
学生的记录由学号和成绩组成,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 i,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
printf("%S%4d\n",h[i].num,h[i].s);
//输出指定分数范围外的学生记录
printf("\n");
}
-
下列给定的程序中,函数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);
}
-
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
{
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
printf("%d",bb[i]);
}
-
有以下程序:
#include<
struct stu { int num;char name[10];int age;}
void fun(struct stu*p)
{ printf("%s\n",(*p).name);}
main
{ struct stu students[3]={{9801,"Zhang".20}, {9802,"Wang",19},{9803,"Zhao",1 8}}
fun(students+2); }
输出的结果是( )。
- A.Zhang
- B.Zhao
- C.Wang
- D.18
-
下列程序执行后的输出结果是( )。
main
{ int x='f';
printf("%c\n",'A'+(x-'a'+1));
}
- A.G
- B.H
- C.I
- D.J
-
若有定义:“int a[2][3];”,则对a数组的第i行第j 列元素的正确引用为( )。
- A.*(*(a+i)+j)
- B.(a+i)[j]
- C.*(a+i+j)
- D.*(a+i)+j
-
有以下程序
#include
main
{ FILE *fp;
int a[10]={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]);
}
程序的运行结果是( )。
- A.1,2,3,0,0,0,0,0,0,0,
- B.1,2,3,1,2,3,0,0,0,0,
- C.123,0,0,0,0,123,0,0,0,0,
- D.1,2,3,0,0,1,2,3,0,0,
-
有下列程序:
main
{ int k=5;
while(--k)
printf("%d",k=1);
printf("\n"); }
执行后的输出结果是( )。
- A.1
- B.2
- C.4
- D.死循环
-
下列程序执行后的输出结果是( )。
main
{ int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++) p[i]=i+1;
printf("%d\n",a[1][2]);}
- A.3
- B.6
- C.9
- D.随机数
-
表达式“~0x11”的值是( )。
- A.0xFFEE
- B.0x71
- C.0x0071
- D.0xFFF1
-
有下列程序:
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);}
程序执行后的输出结果是( )。
- A.x=4
- B.x=8
- C.x=6
- D.x=12
-
以下程序的输出结果是( )。
main( )
{ int num=0;
while(num<=2)
{ num++;
printf(”%d\n”,num); }
}
- A.1
- B.1 2 3
- C.1 2 3 4
- D.1 2 2 3
-
假定所有变量均已正确说明,下列程序段运行后x 的值是( )。
- a=b=c=0; x=12;
- if(!a) x--;
- else x=5;
- if(c) x=3;
- else x=4;
- A.11
- B.4
- C.12
- D.3
-
如果进栈序列为el、e2、e3、e4,则可能的出栈序列是( )。
- A.e3、el、e4、e2
- B.e2、e4、e3、e1
- C.e3、e4、e2
- D.任意顺序
-
以下程序的输出结果是( )。
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);}
- A.3
- B.4
- C.5
- D.6
-
下面程序的功能是输出以下形式的金字塔图案:
main
{ int i,j;
for(i=1;i<=4;i++)
{ for(j=1;j<=4-i;j++) printf("");
for(j=1;j<=____;j++) printf("*");
printf("\n"); }
} 在下划线处应填入的是( )。
- A.i
- B.2*i一1
- C.n=2*i+1
- D.i+2
-
下列叙述中正确的是( )。
- A.用E—R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系
- B.用E—R图只能表示实体集之间一对一的联系
- C.用E—R图只能表示实体集之间一对多的联系
- D.用E—R图表示的概念数据模型只能转换为关系数据模型
-
以下程序运行后,输出结果是( )。
#include
#define PT 5.5
#define S(x)PT*x*X
main
{ int a=1,b=2;
printf("%4.1f\n",s(a+b));}
- A.49.5
- B.9.5
- C.22.0
- D.45.0
-
在C语言程序中可用做用户标识符的是( )。
- A.void 123 BBN
- B.aa _abc cas
- C.as+b3 -123 If
- D.6f Do SIG
-
执行语句“for(i=1;i++<4;);”后,变量i的值是( )。
- A.3
- B.4
- C.5
- D.不定
-
有以下结构说明和变量定义,指针p、q、r分别指向链表中的3个连续结点。 struct node { int data;struct node*next;)*p,*q,*r;现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能按要求完成操作的语句是( )。
- A.p->next=q->next;
- B.P-next=P->next->next;
- C.p->next=r;
- D.p=q->next;
-
有下列程序:
main
{ int x=5;
do
{ printf("%d",X-=4);}
while(!(--x));
} 程序的输出结果是( )。
- A.1
- B.2 0
- C.1 -4
- D.死循环
-
有以下程序:
#include
main
{ int i=0,a=0;
while(i<20)
{ for(;;)
{ if((i%10)==0) break;
else i--;}
i+=11;
+=i;}
printf("%d\n",a);}
程序的输出结果是( )。
- A.62
- B.63
- C.33
- D.32
-
有以下结构体说明和变量的定义,且指针P指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是( )。
struct node {char data; struct node*next;}a,b,*p=&a,*q=&b;
- A.a.next=q;
- B.P.next=&b;
- C.p->next=&b;
- D.(*p).next=q;
-
若有定义“int b[8],*p=b;”,则p+6表示( )。
- A.数组元素b[6]的值
- B.数组元素b[6]的地址
- C.数组元素b[7]的地址
- D.数组元素b[o]的值加上6
-
若变量e为char类型,能正确判断出C为小写字母的表达式是( )。
- A.'a'<=c<='z' c="">='a')
- C.(′a′=c)
- D.(c<='z')
- E.('a'<=c)and('z'>c)
- F.(c>='a')&&(c<='z')
-
下述程序执行的输出结果是( )。
#include
main
{ char a[2][4];
strcpy(a,"are");
strcpy(a[1],"you");
- a[0][3]='&'; printf("%s\n",a);}
- A.are&you
- B.you
- C.are
- D.&
-
函数fseek的正确调用形式是( )。
- A.fseek(位移量,起始点,文件类型指针);
- B.fseek(文件类型指针,位移量,起始点);
- C.fseek(文件类型指针,起始点,位移量);
- D.fseek(起始点,位移量,文件类型指针);
-
有以下程序:
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); }
程序输出( )。
- A.0,1,2,0
- B.0,0,0,3
- C.1,1,2,0
- D.编译有错
-
已知数据表A中每个元素距其最终位置不远,为了节省时间,应采用的算法是( )。
- A.堆排序
- B.直接插入排序
- C.快速排序
- D.直接选择排序
-
算法的时间复杂度是指( )。
- A.执行算法程序所需要的时间
- B.算法程序的长度
- C.算法执行过程所需要的基本运算次数
- D.算法程序中的指令条数
-
下列特征中不是面向对象方法的主要特征的是( )。
- A.多态性
- B.继承
- C.封装性
- D.模块化
-
有下列程序: fun(int x,int y) { static int m=0,i=2; i+=++m;m=i+x+y;return m; } main { int j=1,m=1,k; k=fun(j,m);printf("%d,",k); k=fun(j, m);printf(”%d\n”,k); } 执行后的输出结果是( )。
- A.5.5
- B.5,11
- C.11,11
- D.11,5
-
有下列程序:
int fun(int x[],int n)
{ static int sum=0,i;
for(i=0;i
sum+=x[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);}
程序执行后的输出结果是( )。
- A.45
- B.50
- C.60
- D.55
-
在面向对象方法中,( )描述的是具有相似属性与操作的一组对象。
- A.属性
- B.事件
- C.方法
- D.类
-
有下列程序:
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
- B.54
- C.65
- D.45
-
下列程序输出结果是( )。
#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); }
- A.7,7
- B.7,6
- C.6,6
- D.6,7
-
已知函数fread的调用形式为“fread(buffer,size,count,fp);”,其中buffer代表的是( )。
- A.存放读入数据项的存储区
- B.一个指向所读文件的文件指针
- C.一个指针,是指向输入数据存放在内存中的起始地址
- D.一个整型变量,代表要读入的数据项总数
-
若有定义语句:int a[3][6];,按在内存中的存放顺序,a数组的第10个元素是( )。
- A.a[o][4]
- B.a[1][3]
- C.a[o][3]
- D.a[1][4]
-
有以下程序:
main
{ int k=5;
while(--k)printf("%d",k-=3);
printf("\n"); }
执行后的输出结果是( )。
- A.1
- B.2
- C.4
- D.死循环
-
有以下程序:
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); }
执行后的结果是( )。
- A.6
- B.7
- C.8
- D.9
-
以下程序的输出结果是( )。
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); }
}
- A.000102
- B.000020
- C.000122
- D.000111
-
有以下程序
#include
main ()
{ int a=1,b=2,c=3,x;
x=(a^b)&c;
printf("%d",x); }
程序的运行结果是( )。
- A.0
- B.1
- C.2
- D.3