二级试题1new.docx
《二级试题1new.docx》由会员分享,可在线阅读,更多相关《二级试题1new.docx(12页珍藏版)》请在冰豆网上搜索。
二级试题1new
笔试题
一、选择题
(16)若有定义:
inta=8,b=5,c;,执行语句C=a/b+0.4;后,c的值为
A)1.4B)1C)2.0D)2
(17)若变量a是int类型,并执行了语句:
a=‘A'+1.6;,则正确的叙述是
A)a的值是字符CB)a的值是浮点型
C)不允许字符型和浮点型相加D)a的值是字符‘A’的ASCII值加上1。
(18)以下程序段的输出结果是
inta=1234;
printf("%2d\n",a);
A)12 B)34 C)1234D)提示出错、无结果
(19)以下选项中不属于C语言的类型的是
A)signedshortimtB)unsignedlongint
C)unsignedintD)longshort
(20)若有说明语句:
inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是
A)scanf("%d%d%d",&a,&b,d);
B)scanf("%d%d%d",&a,&b,&d);
C)scanf("%d%d%d",a,b,d);
D)scanf("%d%d%d",a,b,*d);
(21)在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是
A)a=20000+20000;B)a=4000*10;
C)a=30000+10000;D)a=4000L*10L;
(22)以下叙述正确的是
A)可以把define和if定义为用户标识符
B)可以把define定义为用户标识符,但不能把if定义为用户标识符
C)可以把if定义为用户标识符,但不能把define定义为用户标识符
D)define和if都不能定义为用户标识符
(23)若定义:
inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为
A)无确定值B)a的地址C)512D)511
(24)以下程序的输出结果是
main()
{inta=5,b=4,c=6,d;
printf("%d\n",d=a>b?
(a>c?
a:
c):
(b));}
A)5B)4C)6D)不确定
(25)以下程序中,while循环的循环次数是
main()
{inti=0;
while(i<10)
{if(i<1)continue;
if(I==5)break;
i++;
}
......
}
A)1B)10C)6D)死循环,不能确定次数
(26)以下程序的输出结果是
main()
{inta=0,i;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
}
}
printf("%d\n",a);
}
A)31B)13C)10D)20
(27)以下程序的输出结果是
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);}
A)1B)0C)非0的数D)-1
(28)以下程序的输出结果是
#include
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;
}
i+=11;a+=i;
}
printf("%d\n",a);}
A)21B)32C)33D)11
(29)以下程序的输出结果是
charcchar(charch)
{if(ch>=‘A’&&ch<=‘Z')ch=ch-‘A'+‘a';
returnch;
}
main()
{chars[]="ABC+abc=defDEF",*p=s;
while(*p){*p=cchar(*p);p++;}
printf("%s\n",s);
}
A)abc+ABC=DEFdefB)abc+abc=defdefC)abcaABCDEFdefD)abcabcdefdef
(30)以下程序的输出结果是
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;}
main()
{inti,a=0;
for(i=0;i<5;i++)a+=f();
printf("%d\n",a);}
A)20B)24C)25D)15
(31)以下程序段的输出结果是
chars[]="\\141\141abc\t";
printf("%d\n",strlen(s));
A)9B)12C)13D)14
(32)若有以下程序
#include
voidf(intn);
main()
{voidf(intn);
f(5);
}
voidf(intn)
{printf("%d\n",n);}
则以下叙述中不正确的是
A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f
C)对于以上程序,编译时系统会提示出错信息:
提示对对f函数重复说明
D)函数f无返回值,所以可用void将其类型定义为无值型
(33)以下程序调用findmax函数返回数组中的最大值
findmax(int*a,intn)
{int*p,*s;
for(p=a,s=a;p-aif()s=p;
return(*s);
}
main()
{intx[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}在下划线处应填入的是
A)p>sB)*p>*sC)a[p]>a[s]D)p-a>p-s
(34)以下程序的输出结果是
main()
{charcf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A)"AAAA"B)"BBB"C)"BBBCC"D)"CC"
(35)在C语言中,形参的缺省存储类是
A)autoB)registerC)staticD)extern
(36)若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是
A)p=2*(int*)malloc(sizeof(int));
B)p=(int*)malloc(2*sizeof(int));
C)p=(int*)malloc(2*2);
D)p=(int*)calloc(2,sizeof(int));
(37)以下程序的输出结果是
main()
{charx=040;
printf("%0\n",x<<1);
}
A)100B)80C)64D)32
(38)若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是
A)fopen("A:
\user\abc.txt","r")
B)fopen("A:
\\user\\abc.txt","r+")
C)fopen("A:
\user\abc.txt","rb")
D)fopen("A:
\\user\\abc.txt","w")
(39)以下不能正确进行字符串赋初值的语句是
A)charstr[5]="good!
";
B)charstr[]="good!
";
C)char*str="good!
";
D)charstr[5]={‘g',‘o',‘o',‘d'};
(40)若有下面的说明和定义:
structtest
{intml;charm2;floatm3;
unionuu{charul[5];intu2[2];}ua;
}myaa;
则sizeof(structtest)的值是
A)12B)16C)14D)9
(41)若有定义:
intaa[8];。
则以下表达式中不能代表数组元aa[1]的地址的是
A)&aa[0]+1B)&aa[1]C)&aa[0]++D)aa+1
(42)以下程序的输出结果是
f(intb[],intm,intn)
{inti,s=0;
for(i=m;ireturns;}
main()
{intx,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%d\n",x);}
A)10B)18C)8D)15
(43)若有以下定义和语句:
ints[4][5],(*ps)[5];ps=s;
则对s数组元素的正确引用形式是
A)ps+1B)*(ps+3)C)ps[0][2]D)*(ps+1)+3
(44)以下程序的输出结果是
main()
{intb[3][3]={0,1,2,0,1,2,0,1,2},
i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++)t=t+b[i][b[j][j]];
printf("%d\n",t);}
A)3B)4C)1D)9
(45)以下程序的输出结果是
#include
main()
{charb1[8]="abcdefg",b2[8],
*pb=b1+3;
while(--pb>=b1)strcpy(b2,pb);
printf("%d\n",strlen(b2));}
A)8B)3C)1D)7
(46)在说明语句:
int*f();中,标识符f代表的是
A)一个用于指向整型数据的指针变量
B)一个用于指向一维数组的行指针
C)一个用于指向函数的指针变量
D)一个返回值为指针型的函数名
(47)不合法的main函数命令行参数表示形式是
A)main(inta,char*c[])
B)main(intarc,char**arv)
C)main(intargc,char*argv)
D)main(intargv,char*argc[])
(48)以下程序的输出的结果是
intx=3;
main()
{inti;
for(i=1;i}
ncre()
{staicintx=1;
x*=x+1;
printf("%d",x);}
A)33B)22C)26D)25
(49)若以下定义:
structlink
{intdata;
strucklink*next;
}a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构:
ab
datanextdatanext
┌──┬──┐┌──┬──┐
│5│┼──→│9│\0│
└──┴──┘└──┴──┘
↑p
c
datanext
┌──┬──┐
│7││
└──┴──┘
↑q
指针p指向变量a,q指向变量c。
则能够把c插入到a和b之间并形成新的链表的语句组是:
A)a.next=c;c.next=b;
B)p.next=q;q.next=p.next;
C)p->next=&c;q->next=p->next;
D)(*p).next=q;(*q).next=&b;
(50)设有以下说明语句
typedefstruct
{intn;charch[8];}PER;
则下面叙述中正确的是
A)PER是结构体变量名
B)PER是结构体类型名
C)typedefstruct是结构体类型
D)struct是结构体类型名
二、填空题
(6)若从键盘输入58,则以下程序输出的结果是_____。
main()
{inta;scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
(7)以下程序的输出结果是____。
main(){inta=177;printf("%o\n",a);}
(8)以下程序的输出结果是_____。
main()
{inta=0;a+=(a=8);
printf("%d\n",a);
}
(9)以下程序输出的结果是____。
main()
{inta=5,b=4,c=3,d;
d=(a>b>c);printf("%d\n",d);
}
(10)以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针.请将定义补充完整。
structnode
{intinfo;
______link;
}
(11)以下程序的输出结果是_______。
main()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
(12)以下程序的输出结果是_____。
main()
{char*p="abcdefgh",*r;
long*q;
q=(long*)p;q++;r=(char*)q;
printf("%s\n",r);
}
(13)以下程序的输出结果是______。
main()
{chars[]="abcdef";
s[3]=‘\0';
printf("%s\n",s);
}
(14)以下程序的输出结果是_______。
main()
{intx=0;
sub(&x,8,1);
printf("%d\n",x);
}
sub(int*a,intn,intk)
{if(k<=n)sub(a,n/2,2*k);
*a+=k;
}
(15)设有如下宏定义
#defineMYSWAP(z,x,y){z=x;x=y;y=z;}
以下程序段通过宏调用实现变量a、b内容交换,请填空。
floata=5,b=16,c;
MYSWAP(_____,a,b);
(16)以下程序用来统计文件中字符个数。
请填空。
#include"stdio.h"
main()
{FILE*fp;longnum=0L;
if((fp=fopen("fname.dat","r"))
==NULL)
{pirntf("Openerror\n");exit(0);}
while(______){fgetc(fp);num++;}
printf("num=%1d\n",num-1);
fclose(fp);
}
(17)以下程序中,select函数的功能是:
在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。
请填空。
#defineN3
#defineM3
select(inta[N][M],int*n)
{inti,j,row=1,colum=1;
for(i=0;ifor(j=0;jif(a[i][j]>a[row][colum])
{row=i;colum=j;}
*n=______;
return________;
}
main()
{inta[N][M]={9,11,23,6,1,15,9,17,20},
max,n;
max=select(a,&n);
printf("max=%d,line=%d\n",max,n);}
(18)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。
请填空。
intmystrlen(char*str)
{inti;
for(i=0;______!
=‘\0';i++);
return(_______);}