2013年9月全国计算机等级《二级C语言程序设计》命题预测试卷四
-
请编一个函数fun(oh lr*str),该函数的功能是把字符串中的内容逆置。
例如,字符串中原有的字符串为asdf9,则调用该函数后,串中的内容为9fdsa。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。
试题程序:
#include
#include
#include
#define N 100
void fun(char * str)
{
}
void main
{
char a[N];
FILE*out:
printf("Enter a string:");
gets(a);
printf("The origir al string is:");
puts(a);
fun(a):
printf("The string after modified:");
puts(a);
strcpy(a,"Welcome!");
fun(a);
ut=fopen("outfile.dat","w");
fprintf(out,"%s".a);
fclose(out);
}
-
下列给定程序中,函数proc的功能是:根据输入的:个边长(整型值),判断能否构成三角形:若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回l;若不能,则返回0。
例如,输入3个边长为3,4,5,实际输入时,数与数之间以Enter键分隔而不是逗号。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
int proc(int a,int b,int c)
{
if(a+b>c&&b-c>a&&a+c>b)
{
if(a==b&&b==c)
//****found****
return 1;
else if(a==b|| b==C||a==c)
return 2;
//****found****
else return 3;
}
else return 0;
}
void main
{
int a,b,c,shape;
printf("\nInput a,b,c:");
scanf("%d%d%d",&a,&b,&c);
printf("\na=%d.b=%d,c=%d\n",a,b,c);
shape=proc(a,b.c):
printf("\n\nThe shape:%d\n",shape);
}
-
给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的人数存到b数组中:成绩为60~69的人数存到b[0]中,成绩为70~79的人数存到b[1]中,成绩为80~89的人数存到b[2]中,成绩为90~99的人数存到b[3]中,成绩为100的人数存到b[4]中,成绩为60分以下的人数存到b[5]中。
例如,当a数组中的数据是:93、85、77、68、59、43、94、75、98,调用该函数后,b数组中存放的数据应是:1、2、1、3、0、2。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若于表达式或语句。
试题程序:
#includedstdi0.h>
void fun(int a[],int b[],int n)
{
int i;
for(i=0;i<6;I++)
b[i]=0;
for(i=0:i<【1】;i++)
if(a[i]<60)
b[5]++;
【2】
b[(a[i]一60)/10]++;
}
void main
{
int i,a[100]={93,85,77,68,59,43,94,75,98),b[6];
fun(【3】,9);
printf("the result is:");
for(i=0;i<6;i++)
printf("%d",b[i]);
printf("\n,");
}
-
三种基本结构中,能简化大量程序代码的是( )。
- A.顺序结构
- B.分支结构
- C.选择结构
- D.重复结构
-
现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。
struct node
{bar data;
struct node*next;}*p,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是( )。
- A.q->next=r->next;P >next=r;r- >next =q;
- B.q->next=r;q->next=r->next;r->next=q;
- C.q->next=r->next;r->next=q;P->next=r:
- D.q->next=q;P->next=r;q->next=r->next;
-
下列叙述正确的是( )。
- A.C语言中的文件是流式文件,因此只能顺序存取数据
- B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
- C.在一个程序中当对文件进了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
- D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
-
下列标识符不是关键字的是( )。
- A.break
- B.char
- C.Swithch
- D.return
-
以下程序的输出结果是( )。
main
{ int i=0,S=0;
for(;;)
{
if(i==3 ||i==5)continue;
if(i==6)break;
i++;
s+=i:
};
printf("%d\n",s);
}
- A.10
- B.13
- C.21
- D.程序陷入死循环
-
执行语句printf(“%u\n”,+12345)的输出结果是( )。
- A.12345
- B.0
- C.-1
- D.非定值
-
有以下程序,其中函数f的功能是将多个字符串按字典顺序排序( )。
#include
void f(char*p[],int n)
{ char*t;int i,j;
for(i=0;i
for(j=i+1;j
if(strcmp(p[i],p[j]>0){t=p[i];p[i]=p[j];p[j]
=t;}
}
main
{ char *P[5]={"abe","aabdfg","abbd","dcd-
be","cd"};
f(p,5);
printf("%d\n",strlen(p[1]));
}
程序运行后的输出结果是( )o
- A.2
- B.3
- C.6
- D.4
-
下列程序的运行结果是( )。
int y=5,x=14;
y=((x=3*Y,x+1),x-1);
printf("x=%d,y=%d",x,y);
- A. x=27,y=27
- B.x=12,y=13
- C.x=15,y=14
- D.x=y=27
-
以下程序的输出结果是( )。
main
{ char ch[3][4]={"123","456","78"),*p[3];int i;
for(i=0;i<3;i++)p[i]=ch[i];
for(i=0;i<3;i++)printf("%s",p[i]);}
- A.123456780
- B.123 456 780
- C.12345678
- D.147
-
设j为Int型变量,则下面for循环语句的执行结果是( )。
for(j=10;j>3;j--)
{ if(j%3)j--;
--j;--j;
printf("%d",j);
}
- A.6 3
- B.7 4
- C.6 2
- D.7 3
-
运行下列程序,若从键盘输入字符“a”,则输出结果是( )。
char c;
c=getchar;
if(c>='a'&&c<='g')c=c+4:
else if(c>='9'&&c<='2')c=c-21:
else printf("input error! \n");
putchar(c);
- A. f
- B.t
- C.e
- D.d
-
设有如图所示二叉树,对此二叉树后序遍历的结果为( )。
- A.ZBTYCPXA
- B.ATBZXCYP
- C.TZBACYXP
- D.ATBZXCPY
-
下列程序的输出结果是( )。
main
{ int a=6,b=3,C;
if(a{c=a*b;printf("%d%d,%d\n",b,a,c);)
else
{c=a/b;printf("%d,%d,%d\n",b,a,c);)
}
- A.3,6,18
- B.3,6,2
- C.6,3,18
- D.6,3,2
-
有以下程序:
#include
main
{ char p[20]={'a','b','c','d'),q[]="abc",r[]="
abcde";
strcpy(p+strlen(q),r);strcat(p,q);
printf("%d%d\n",sizeof(p),strlen(p));
}
程序运行后的输出结果是( )。
- A.20 9
- B.9 9
- C.20 11
- D.11 11
-
设有程序段:
int k=12:
while(k=1)k=k一1;
则下列描述中正确的是( )。
- A.while循环执行10次
- B.循环是无限循环
- C.循环体语句一次也不执行
- D.循环体语句执行一次
-
有下列程序:
#include
main
{ int x=0;
int y=0;
while(x<7 &&++y)
{ y--;
x++;}
printf("%d,%d",y,x);
}
程序的输出结果是( )。
- A.0,7
- B.7,7
- C.0,6
- D.1,6
-
下面程序的运行结果是( )。
#inelude
void del(char*s)
{ int i,j;
char*a;
- a=s:
- for(i=0,j=0;a[i]!='\0';i++) { if(a[i]>='0'&&a[i]<='9') {s[j]=a[i];
- j++; } s[j]='\0'; } } main { char*s="aa89gggh";
- del(s): printf("\n%s",s); }
- A.1
- B.2
- C.3
- D.4
-
对两个数组a和b进行下列初始化:
char m[]="1234567";
char n[]={'1','2','3','4','5','6','7'};
则下列叙述正确的是( )。
- A.数组m与数组n完全相同
- B.数组m与数组n长度相同
- C.数组m比数组n长1
- D.数组m与数组n中都存放字符串
-
以下关于字符串的叙述中正确的是( )。
- A.C语言中有字符串类型的常量和变量
- B.两个字符串中的字符个数相同时才能进行字符串大小的比较
- C.可以用关系运算符对字符串的大小进行比较
- D.空串一定比空格打头的字符串小
-
在执行完下列的c语句段之后,则B的值是( )。
char a='A';
int b;
B=((34&&56)&&(a<'b'));
- A.0
- B.1
- C.TRUE
- D.FALSE
-
在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(双引号)括起时,寻找被包含文件的方式是( )。
- A.直接按系统设定的标准方式搜索目录
- B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
- C.仅仅搜索源程序所在目录
- D.仅仅搜索当前目录
-
设有下列程序段:
char str[]="HelloWorld":
char* plr;
ptr=str:
执行上面的程序段后,*(ptr+10)的值为( )。
- A. '\0 '
- B.'0'
- C.不确定的值
- D.'0'的地址
-
下列关于定点数与浮点数的叙述中错误的是( )。
- A.在实数的浮点表示中,阶码是一个整数
- B.整数是实数的特例,也可以用浮点数表示
- C.实数的补码是其对应的反码在最后一位加1
- D.相同长度的浮点数和定点数,前者可表示数的范围要大于后者
-
若有下列定义和语句:
int u=011,v=0x11,w=11;
printf("%o,%x,%d\n",u,v,w);
则输出结果是( )。
- A.9,17,11
- B.9,11,11
- C.11,11,11
- D.11,17,11
-
标准库函数fgets(s,n,file)的功能是( )。
- A.从文件file中读取长度为n的字符串存入字符数s由
- B.从文件file中读取长度不超过n-1个字符的字符放到字符数组S中
- C.从文件file中读到n个字符串存入字符数组s中
- D.从文件file中读取长度为n-1个字符的字符串存字符数组S中
-
下述程序的输出结果是( )。
#include
main
{ int i;
for(i=l;i<=10;i++)
{ if(i*i>=20)&&(i*i<=100))
break;
}
printf("%d\n",i*i);
}
- A.49
- B.36
- C.25
- D.64
-
有以下计算公式
若程序前面已在命令中包含math.h文件,不能够正确
计算上述公式的程序段是( )。
- A.if(x>=0)y=sqrt(x);
- B.y=sqrt(x) if(x<0)y=sqrt(0x);
- C. else y=sqrt(-x);
- D x="">=O)y=sqrt(x); If(x
-
有以下程序
#include
#include
void fun(char s[][10],int n)
{
char t;int i,j;
for(i=0;i
for(j=i+1,j
/*比较字符串的首字符大小,并交换字符串的首字符*/
if(s[0])>s[i][c]{t=s[i][o];s[i][o]=s[j][o];s [j][0]=t;}
}
main
{ char ss[5][10]="bcc","bbcc","xy","aaaacc"," aabcc"}
fun(ss,5);printf("%s,%s",ss[0],ss[4]);
}
程序运行结果是( )。
- A.xy,aaaacc
- B.aaaacc,xy
- C.xcc,aabcc
- D.acc,xabcc
-
链表不具有的特点是( )。
- A.不必事先估计存储空间
- B.可随机访问任意元素
- C.插入、删除不需要移动元素
- D.所需空间与线性表长度成正比
-
下列说法不正确的是( )。
- A.调用函数时,实参可以是表达式
- B.调用函数时,实参与形参可以共用内存单元
- C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等
- D.调用函数时,实参与形参的类型必须一致
-
下列程序的运行结果是( )。
#include
void main
{int s=0,k;
for(k=7;k>1;k--)
{switch(k)
{case 1:
case 4:
case 7:
s++:
break;
case 2:
case 3:
case 6:break;
case 0:
case 5:
s+=2:
break;
}}
printf("s=%d",s);
}
- A. s=3
- B.s=4
- C.s=5
- D.无输出结果
-
下列程序的输出结果是( )。
main
{ int p[8]={11,12,13,14,15,16,17,18},i=0,j =0;
while(i++<7)
if(p[i]%2)j+=p[i];
printf("%d\n",j);
}
- A.42
- B.45
- C.56
- D.60
-
以下程序的输出结果是( )。
void prt(int*m.int n)
{int i;
for(i=0;i
main
{ int a[]={1,2,3,4,5),i;
prt(a,5);
for(i=0;i<5;i++)
printf("%d,",a[i]);)
- A.1,2,3,4,5
- B.2,3,4,5,6
- C.3,4,5,6,7
- D.2,3,4,5,1
-
C语言的基本单位是( )。
- A.函数
- B.过程
- C.子程序
- D.子函数
-
有以下程序
#include
#include
typedef strlIct{char name[9];char sex;float score[2];}STU;
STU f(STU a)
{ STU b={"Zhao",'m',85.0,90.0);int i;
strcpy(a name,b.name);
sex:b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
return a;
}
main
{STU c="Qian",'f',95.0,92.0},d;
d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);
}
程序的运行结果是( )。
- A.Qian,f,95,92
- B.Qian,m,85,90
- C.Zhao,m,85,90
- D.Zhao,f,95,92
-
下列程序的输出结果是( )。
int fl(int x,int y){return x>y?x:y;)
int f2(int x,int y){return x>y?y:x;}
main
{ int a=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));
f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf("%d,%d,%d\n",e,f,g);}
- A.4,3,7
- B.3,4,7
- C.5,2,7
- D.2,5,7
-
一些重要的程序设计语言(in C语言和Pascal语言) 允许过程的递归调用,而实现递归调用中的存储分配通常用( )。
- A.栈
- B.堆
- C.数组
- D.链表
-
以下程序输出结果是( )。
main
{ int m=5;
if(m++>5)printf("%d\n",m):
else printf("%d\n",m--);
}
- A.7
- B.6
- C.5
- D.4
-
有下列程序:
#include
main
{ int a=6,b=7,m=1;
switch(a%2)
{ case 0:m++;break;
case 1:m++;
switch(b%2)
{ default:m++;
case 0:m++;break;
}
}
printf("%d\n",m);
}
程序的运行结果是( )。
- A.3
- B.2
- C.4
- D.1
-
下列选项中,均属于通用软件的是( )。
- A.Windows XP、AutoCAD、PowerPoint
- B.Visual FoxPro、Excel、SPSS
- C.Word、Photoshop、Excel
- D.C++、CorelDraw、Firefox 2.0