h>
main()main()
{/*/*programming*/*/{/*programming*/
printf("programming!
\n");}printf("programming!
\n");}
(19)若有定义:
floatx=1。
5;inta=1,b=3,c=2;则正确的switch语句是
A)switch(x)B)switch((int)x);
{case1。
0:
printf("*\n");{case1:
printf("*\n");
case2。
0:
printf("**\n");}case2:
printf("**\n");}
C)switch(a+b)D)switch(a+b)
{case1:
printf("*\n");{case1:
printf("*\n");
case2+1:
printf("**\n");}casec:
printf("**\n");}
(20)若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是
A)main()B)floatfun(inta,intb){……}
{……x=fun(2,10);……}main()
floatfun(inta,intb){……}{……x=fun(i,j);……}
C)floatfun(int,int);D)main()
main(){floatfun(inti,intj);
{……x=fun(2,10);……}……x=fun(i,j);……}
floatfun(inta,intb){……}floatfun(inta,intb){……}
(21)在以下给出的表达式中,与while(E)中的(E)不等价的表达式是
A)(!
E==0)B)(E>0‖E<0)
C)(E==0)D)(E!
=0)
(22)要求通过while循环不断读入字符,当读入字母N时结束循环。
若变量已正确定义,
以下正确的程序段是
A)while((ch=getchar())!
=′N′)printf("%c",ch);
B)while(ch=getchar()!
=′N′)printf("%c",ch);
C)while(ch=getchar()==′N′)printf("%c",ch);
D)while((ch=getchar())==′N′)printf("%c",ch);
(23)已定义以下函数
intfun(int*p)
{return*p;)
fun函数返回值是
A)不确定的值
B)一个整数
C)形参P中存放的值
D)形参P的地址值
(24)若有说明语句:
double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是
A)*p=&a;scanf("%1f",p);
B)*p=&a;scanf("%f",p);
C)p=&a;scanf("%1f",*p);
D)p=&a;scanf("%1f",p);
(25)现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中连
续的三个结点。
structnode
{chardata;
structnode*next;}*p,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是
A)q->next=r->next;p->next=r;r->next=q;
B)p->next=r;q->next=r->next;r->next=q;
C)q->next=r->next;r->next=q;p->next=r;
D)r->next=q;p->next=r;q->next=r->next;
(26)有以下程序段
structst
{intx;int*y;)*pt;
inta[]={l,2},b[]={3,4};
structstc[2]={10,a,20,b};
pt=c;
以下选项中表达式的值为11的是
A)*pt->yB)pt->x
C)++pt->xD)(pt++)->x
(27)设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为
A)EOFB)非0值
C)0D)NULL
(28)设有以下语句
inta=1,b=2,c;
c=a^(b<<2);
执行后,C的值为
A)6B)7
C)8D)9
(29)有以下程序
#includeh>
main()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是
A)1267B)1256
C)1278D)1245
(30)有以下程序
main()
{inty=10;
while(y--);printf("y=%d\n",y);
}
程序执行后的输出结果是
A)y=0B)y=-1
C)y=1D)while构成无限循环
(31)有以下程序
main()
{inta=0,b=0,c=0,d=0;
if(a=1)b=1;c=2;
elsed=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
程序输出
A)0,1,2,0B)0,0,0,3
C)1,1,2,0D)编译有错
(32)有以下程序
main()
{inti,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=4B)x=8
C)x=6D)x=12
(33)有以下程序
intfun1(doublea){returna*=a;}
intfun2(doublex,doubley)
{doublea=0,b=0;
a=fun1(x);b=fun1(y);return(int)(a+b);
}
main()
{doublew;w=fun2(1。
1,2。
0);……}
程序执行后变量w中的值是
A)5。
21B)5
C)5。
0D)0。
0
(34)有以下程序
main()
{inti,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++)printf("%d",t[2-i][i]);
}
程序执行后的输出结果是
A)753B)357
C)369D)751
(35)有以下程序
fun(charp[][10])
{intn=0,i;
for(i=0;i<7;i++)
if(p[i][0]==′T′)n++;
returnn;
}
main()
{charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
printf("%d\n",fun(str));
}
程序执行后的输出结果是
A)1B)2
C)3D)0
(36)有以下程序
main()
{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序执行后的输出结果是
A)45B)20
C)25D)36
(37)有以下程序
voidfun1(char*p)
{char*q;
q=p;
while(*q!
=′\0′)
{(*q)++;q++;)
}
main()
{chara[]={"Program"),*p;
p=&a[3];fun1(p);printf("%s\n",a);
}
程序执行后的输出结果是
A)ProhsbnB)Prphsbn
C)ProgsbnD)Program
(38)有以下程序
voidswap(char*x,char*y)
{chart;
t=*x;*x=*y;*y=t;
}
main()
{char*s1="abc",*s2="123";
swap(s1,s2);printf("%s,%s\n",s1,s2);
}
程序执行后的输出结果是
A)123,abcB)abc,123
C)1bc,a23D)321,cba
(39)有以下程序
intfun(intn)
{if(n==1)return1;
else
return(n+fun(n-1));
}
main()
{intx;
scanf("%d",&x);x=fun(x);printf("%d\n",x);
}
执行程序时,给变量X输入10,程序的输出结果是
A)55B)54
C)65D)45
(40)有以下程序
intfun(intx[],intn)
{staticintsum=0,i;
for(i=0;i returnsum;
}
main()
{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);printf("%d\n",s);
}
程序执行后的输出结果是
A)45B)50
C)60D)55
(41)有以下程序
main()
{union
{charch[2];
intd;
}s;
s。
d=0x4321;
printf("%x,%x\n",s。
ch[0],s。
ch[1]);
}
在16位编译系统上,程序执行后的输出结果是
A)21,43B)43,21
C)43,00D)21,00
(42)有以下程序
main()
{char*p[]={"3697","2584"};
inti,j;longnum=0;
for(i=0;i<2;i++)
{j=0;
while(p[i][j]!
=′\0′)
{if((p[i][j]-′0′)%2)num=10*num+p[i][j]-′0′;
j+=2;
}
}
printf("%d\n",num);
}
程序执行后的输出结果是
A)35B)37
C)39D)3975
(43)执行以下程序后,test。
txt文件的内容是(若文件能正常打开)
#includeh>
main()
{FILE*fp;
char*s1="Fortran",*s2="Basic";
if((fp=fopen("test。
txt","wb”))==NULL)
{printf("Can′topentest。
txtfile\n");exit
(1);}
fwrite(s1,7,1,fp);/*把从地址s1开始的7个字符写到fp所指文件中*/
fseek(fp,0L,SEEK_SET);/*文件位置指针移到文件开头*/
fwrite(s2,5,1,fp);
fclose(fp);
}
A)BasicanB)BasicFortran
C)BasicD)FortranBasic
(44)以下叙述中错误的是
A)C语言源程序经编译后生成后缀为。
obj的目标程序
B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
(45)以下叙述中错误的是
A)算法正确的程序最终一定会结束
B)算法正确的程序可以有零个输出
C)算法正确的程序可以有零个输入
D)算法正确的程序对于相同的输入一定有相同的结果
(46)以下叙述中错误的是
A)C程序必须由一个或一个以上的函数组成
B)函数调用可以作为一个独立的语句存在
C)若函数有返回值,必须通过return语句返回
D)函数形参的值也可以传回给对应的实参
(47)设有以下定义和语句
charstr[20]="Program",*p;
p=str;
则以下叙述中正确的是
A)*p与str[0]的值相等
B)str与p的类型完全相同
C)str数组长度和p所指向的字符串长度相等
D)数组str中存放的内容和指针变量p中存放的内容相同
(48)以下叙述中错误的是
A)C程序中的#include和#define行均不是C语句
B)除逗号运算符外,赋值运算符的优先级最低
C)C程序中,j++;是赋值语句
D)C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算
(49)以下叙述中正确的是
A)预处理命令行必须位于C源程序的起始位置
B)在C语言中,预处理命令行都以"#"开头
C)每个C程序必须在开头包含预处理命令行:
#includeh>
D)C语言的预处理不能实现宏定义和条件编译的功能
(50)以下叙述中错误的是
A)可以通过typedef增加新的类型
B)可以用typedef将已存在的类型用一个新的名字来代表
C)用typedef定义新的类型名后,原有类型名仍有效
D)用typedef可以为各种类型起别名,但不能为变量起别名
二、填空题(每空2分,共40分)
请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。
(1)对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【1】。
(2)在面向对象方法中,【2】描述的是具有相似属性与操作的一组对象。
(3)在关系模型中,把数据看成是二维表,每一个二维表称为一个【3】。
(4)程序测试分为静态分析和动态测试。
其中【4】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。
(5)数据独立性分为逻辑独立性与物理独立性。
当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为【5】。
(6)若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句【6】。
(7)以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。
当给a、b、c输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:
a+b>c,a+c>b,b+c>a。
请填空。
main()
{floata,b,c;
scanf("%f%f%f",&a,&b,&c);
if(【7】)printf("YES\n");/*a、b、c能构成三角形*/
elseprintf("NO\n");/*a、b、c不能构成三角形*/
}
(8)以下程序的输出结果是【8】。
main()
{inta[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i++)s+=a[i][i]+a[i][3-i-1];
printf("%d\n",s);
}
(9)当运行以下程序时,输入abcd,程序的输出结果是:
【9】。
insert(charstr[])
{inti;
i=strlen(str);
while(i>0)
{str[2*i]=str[i];str[2*i-1]=′*′;i--;}
printf("%s\n",str);
}
main()
{charstr[40];
scanf("%s",str);insert(str);
}
(10)下面程序的运行结果是:
【10】。
fun(intt[],intn)
{inti,m;
if(n==1)returnt[0];
else
if(n>=2){m=fun(t,n-1);returnm;}
}
main()
{inta[]={11,4,6,3,8,2,3,5,9,2};
printf("%d\n",fun(a,10));
}
(11)现有两个C程序文件T18。
c和myfun。
c同在TC系统目录(文件夹)下,其中T18。
c文件如下:
#includeh>
#include"myfun。
c"
main()
{fun();printf("\n");}
myfun。
c文件如下:
voidfun()
{chars[80],c;intn=0;
while((c=getchar())!
=′\n′)s[n++]=c;
n--;
while(n>=0)printf("%c",s[n--]);
}
当编译连接通过后,运行程序T18时,输入Thank!
则输出结果是:
【11】。
(12)以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首
地址,例如:
str所指字符串为:
Hello!
,c中的字符为e,则函数返回字符串:
ello!
的首
地址。
若str所指字符串为空串或不包含c中的字符,则函数返回NULL。
请填空。
char*fun(char*str,charc)
{intn=0;char*p=str;
if(p!
=NULL)
while(p[n]!
=c&&p[n]!
=′\0′)n++;
if(p[n]==′\0′)returnNULL;
return(【12】);
}
(13)以下程序的功能是:
输出100以内(不含100)能被3整除且个位数为6的
所有整数,请填空。
main()
(inti,j;
for(i=0;【13】;i++)
{j=i*10+6;
if(【14】)continue;
printf("%d",j);
}
}
(14)以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,
否则返回0。
请填空
intisprime(inta)
{inti;
for(i=2;i<=a/2;i++)
if(a%i==0)【15】;
【16】;
}