c语言试题3.docx
《c语言试题3.docx》由会员分享,可在线阅读,更多相关《c语言试题3.docx(17页珍藏版)》请在冰豆网上搜索。
![c语言试题3.docx](https://file1.bdocx.com/fileroot1/2023-1/4/c89d783e-217f-4b0e-86d9-141a5996ccf2/c89d783e-217f-4b0e-86d9-141a5996ccf21.gif)
c语言试题3
C语言程序设计(3)
一、选择题(
(1)-(40)每小题1分,(41)-(50)每小题2分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)一个完整的计算机系统包括
A)主机、键盘与显示器B)计算机与外部设备
C)硬件系统与软件系统D)系统软件与应用软件
(2)十六进制数1000转换成十进制数是
A)4096B)1024C)2048D)8192
(3)十进制数269转换成十六进制数是
A)10EB)10DC)10CD)10B
(4)如果用八位二进制补码表示带符号的定点整数,则能表示的十进制数的范围是
A)-127到+127B)-128到+128C)-127到+128D)-128到+127
(5)下列设备中,既可作为输入设备又可作为输出设备的是
A)鼠标器B)打印机C)键盘D)磁盘驱动器
(21)设a、b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是
A)'a'&&'b'B)a<=bC)a||b+c&&b-cD)!
((a
c||1)
(22)请读程序片段:
inti=65536;printf("%d\n",i);
上面程序片段的输出结果是
A)65536B)0C)有语法错误,无输出结果D)-1
(23)设ch是char型变量,其值为A,且有下面的表达式:
ch=(ch>='A'&&ch<='Z')?
(ch+32):
ch
上面表达式的值是
A)AB)aC)ZD)z
(24)若x和y都是int型变量,x=100,y=200,且有下面的程序片段:
printf("%d",(x,y));
上面程序片段的输出结果是
A)200B)100C)100200D)输出格式符不够,输出不确定的值
(25)下面各语句行中,能正确进行赋字符串操作的语句行是
A)charst[4][5]={"ABCDE"};B)chars[5]={'A','B','C','D','E'};
C)char*s;s="ABCDE";D)char*s;scanf("%s",s);
(26)若k是int型变量,且有下面的程序片段:
k=-3
if(k<=0)printf("####")
elseprintf("&&&&");
上面程序片段的输出结果是
A)####B)&&&&C)####&&&&D)有语法错误,无输出结果
(27)若x是int型变量,且有下面的程序片段:
for(x=3;x<6;x++)printf((x%2)?
("**%d"):
("##%d\n"),x);
上面程序片段的输出结果是
A)**3B)##3C)##3D)**3##4
##4**4**4##5**5
**5##5
(28)请读程序:
#include
f(char*s)
{char*p=s;
while(*p!
='\0')p++;
return(p-s);
}
main()
{printf("%d\n",f("ABCDEF"));}
上面程序的输出结果是
A)3B)6C)8D)0
(29)请读程序:
#include
main()
{inta;floatb,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("\na=%d,b=%f,c=%f\n",a,b,c);
}
若运行时从键盘上输入9876543210(表示回车),则上面程序的输出结果是
A)a=98,b=765,c=4321B)a=10,b=432,c=8765
C)a=98,b=765.000000,c=4321.000000D)a=98,b=765.0,c=4321.0
(30)请读程序:
#include
main()
{intn[2],i,j,k;
for(i=0;i<2;i++)n[i]=0;
k=2
for(i=0;ifor(j=0;jprintf("%d\n",n[k]);
}
上面程序的输出结果是
A)不确定的值B)3C)2D)1
(31)请读程序片段:
charstr[]="ABCD",*p=str;
printf("%d\n",*(p+4));
上面程序的输出结果是
A)68B)0C)字符"D"的地址D)不确定的值
(32)请读程序片段:
#include
main()
{inta,b;
for(a=1;b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1)
{b+=3;
continue;
}
b-=5;
}
printf("%d\n",a);
}
上面程序的输出结果是
A)7B)8C)9D)10
(33)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元:
int*p;
p=__________malloc(sizeof(int));
则应填入
A)intB)inst*C)(*int)D)(int*)
(34)请读程序片段(字符串内没有空格):
printf("%d\n",strlen("ATS\n012\1\\"));
上面程序片段的输出结果是
A)11B)10C)9D)8
(35)请读程序:
#include
#include
main()
{char*s1="AbCdEf",*s2="aB";
s1++;s2++;
printf("%d\n",strcmp(s1,s2));
}
上面程序的输出结果是
A)正数B)负数C)零D)不确定的值
(36)请读程序:
#include
func(inta,intb)
{intc;
c=a+b;
returnc;
}
main()
{intx=6,y=7,z=8,r;
r=func(x--,y==,x+y),z--);
printf("%d\n",r);
}
上面程序的输出结果是
A)11B)20C)21D)31
(37)请读程序:
#include
inta[]={2,4,6,8};
main()
{inti;
int*p=a;
for(i=0;i<4;i++)a[i]=*p++;
printf("%d\n",a[2]);
}
上面程序的输出结果是
A)6B)8C)4D)2
(38)请读程序:
#include
charfun(char*c)
{if(*c<='Z'&&*c>='A')*c-='A'-'a';
return*c;
}
main()
{chars[81],*p=s;
gets(s);
while(*p)
{*p=fun(p);putchar(*p);p++;}
putchar('\n');
}
若运行时从键盘上输入OPENTHEDOOR(表示回车),则上面程序的输出结果是
A)oPENtHEdoorB)openthedoorC)OPENTHEDOORD)OpenTheDoor
(39)请读程序:
#include
voidfun(int*s)
{staticintj=0;
do
s[j]+=s[j+1];
while(++j<2);
}
main()
{intk,a[10]={1,2,3,4,5};
for(k=1;k<3;k++)fun(a);
for(k=0;k<5;k++)printf("%d",a[k]);
}
上面程序的输出结果是
A)34756B)23445C)35743D)12345
(40)请读程序:
#include
#defineSUB(X,Y)(X)*Y
main()
{inta=3,b=4;
printf("%d",SUB(a++,b++));
}
上面程序的输出结果是
A)12B)15C)16D)20
(41)请读程序:
#include
main()
{intmun=0;
while(num<=2)
{num++;printf("%d\n",num);}
}
上面程序的输出结果是
A)1B)1C)1D)1
222
33
4
(42)请读程序:
#include
main()
{floatx,y;
scan("%f",&x);
if(x<0.0)y=0.0
elseif((x<5.0)&&(x!
=2.0))
y=1.0/(x+2.0);
elseif(x<10.0)y=1.0/x;
elsey=10.0;
printf("%f\n",y);
}
若运行时从键盘上输入2.0(表示回车),则上面程序的输出结果是
A)0.000000B)0.250000C)0.500000D)1.000000
(43)请读程序:
#include
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
上面程序的输出结果是
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
(44)若有下面的程序片段:
inta[12]={0},*p[3],**pp,i;
for(i=0;i<3;i++)
p[i]=&a[i*4];
pp=p;
则对数组元素的错误引用是
A)pp[0][1]B)a[10]C)p[3][1]D)*(*(p+2)+2)
(45)请读程序:
#include
#include
main()
{floatx,y,z;
scan("%f%f",&x,&y);
z=x/y;
while
(1)
{if(fabs(z)>1.0)
{x=y;y=z;z=x/y;
}
elsebreak
}
printf("%f\n",y);
}
若运行时从键盘上输入3.62.4(表示回车),则输出的结果是
A)1.500000B)1.600000C)2.000000D)2.400000
(46)请读程序:
#include
f(inb[],intn)
{inti,r;
r=1;
for(i=0;i<=n;i++)r=r*b[i];
returnr;
}
main()
{intx,a[]={2,3,4,5,6,7,8,9};
x=f(a,3);
printf("%d\n",x);
}
上面程序的输出结果是
A)720B)120C)24D)6
(47)请读程序:
#include
#include
voidfun(char*s)
{chara[10];
strcpy(a,"STRING");
s=a;
}
main()
{char*p;
fun(p);
x=f(a,3);
printf("%s\n",p);
}
上面程序的输出结果是(└┘表示空格)
A)STRING└┘└┘└┘└┘B)STRING
C)STRING└┘└┘└┘D)不确定的值
(48)若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是
A)s->next=NULL;p=p->next;p->next=s;
B)p=p->next;s->next=p->next;p->next=s;
C)p=p->next;s->next=p;p->next=s;
D)p=(*p).next;(*s).next=(*p).next;(*p).next=s;
(49)请读程序:
#include
voidfun(float*pl,float*p2,float*s)
{s=(float*)calloc(1,sizeof(float));
*s=*p1+*(p2++);
}
main()
{floata[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;
fun(a,b,s)
printf("%f\n",*s);
}
上面程序的输出结果是
A)11.100000B)12.100000C)21.100000D)1.100000
(50)请读程序:
#include
#include
voidfun(char*w,intm)
{chars,*p1,*p2;
p1=w;p2=w+m-1;
while(p1{s=*p1++;*p1=*p2--;*p2=s;}
}
main()
{chara[]="ABCDEFG";
fun(a,strlen(a));
puts(a);
}
上面程序的输出结果是
A)GFEDCBAB)AGADAGAC)AGAAGAGD)GAGGAGA
二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡上【1】-【20】序号后的横线上,答在试卷上不得分。
(5)设有两个八位二进制数00010101与01000111相加,其结果的十进制表示为【5】。
(6)数学式子
写成C语言表达式是【6】。
(7)下面程序的输出结果是【7】。
#include
main()
{staticcharb[]="Goodbye";
char*chp=&b[7];
while(--chp>=&b[0])putchar(*chp);
putchar('\n');
}
(8)下面程序的输出结果是【8】。
#include
voidas(intx,inty,int*cp,int*dp)
{*cp=x+y;
*dp=x-y;
}
main()
{inta=4,b=3,c,d;
as(a,b,&c,&d);
printf('%d%d\n",c,d);
}
(9)请读程序:
#include
main(intargc,char*argv[])
{inti;
printf('%d\n",argc);
for(i=0;i<=argc+1;i++)printf("%s",argv[i]);
printf("\n");
}
若上面的程序编译、连接后生成可执行文件ABC.EXE,则输入以下命令行
abcfile1file2(表示回车)
程序执行后的输出结果是【9】。
(10)条件“20(11)设二进制数a是00101101,若想通过异或运算a^b使a的高4位取反,低4位不变,则二进制数b应是【11】。
(12)若有以下说明和定义语句,则变量w在内存中所占的字节数是【12】。
unionaa
{floatx,y;
charc[6];
};
structst{unionaav;floatw[5];doubleave;}w;
(13)下面程序的输出结果是【13】。
#include
#defineN5
fun(char*s,chara,intn)
{intj;
*s=a;j=n;
while(e
returnj;
}
main()
{chars[N+1];
intk,p;
for(k=1;k<=N;k++)
s[k]='A'+k+1;
printf("%d\n",fun(s,'E',N));
}
(14)下面程序的输出结果是【14】。
#include
voidfun(char*a1,char*a2,intn)
{intk;
for(k=0;ka2[k]=(a1[k]-'A'-3+26)%26+'A';
a2[n]='\0';
}
main()
{chars1[5]="ABCD",s2[5];
fun(s1,s2,4);
puts(s2);
}
(15)下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。
findmax(ints[],intt)
{intk,p;
for(p=0,k=p;pif(s[p]>s[k])【15】。
returnk;
}
(16)下面程序的输出结果是【16】。
#include
fun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;
}
main()
{printf("%d\n",fun(9));}
(17)下面程序的输出结果是【17】。
#include
funa(inta,intb)
{returna+b;}
funb(inta,intb)
{returna-b;}
sub(int(*t)(),intx,inty)
{return((*t)(x,y));}
main()
{intx,(*p)();
p=funa;
x=sub(p,9,3);
x+=sub(funb,8,3);
printf("%d\n",x);
}
(18)下面程序的输出结果是【18】。
#include
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>=0;i--,i--)printf("%c",*p[i]);
printf("\n");
}
(19)为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是向结点的指针域),请填空。
data
next
structlink{chardata;【19】}node;
(20)下面的程序用来统计文件中字符的个数,请填空。
#include
main()
{FILE*fp;
longnum=0;
if((fp=fopen("fname.dat","r"))==NULL)
{printf("Can'topenfile!
\n");exit(0);}
while【20】
{fgetc(fp);num++;}
printf("num=%d\n",num);
fclose(fp);
}
『完』
参考答案
一`选择题(
(1)~(40)题每题1分,(41)~(50)题每题2分,共60分)
(1)C
(2)A
(3)B
(4)D
(5)D
(6)A
(7)C
(8)B
(9)D
(10)C
(11)B
(12)D
(13)A
(14)C
(15)B
(16)A
(17)B
(18)A
(19)C
(20)C
(21)D
(22)B
(23)B
(24)A
(25)C
(26)D
(27)D
(28)B
(29)C
(30)A
(31)B
(32)B
(33)D
(34)C
(35)A
(36)C
(37)A
(38)B
(39)C
(40)A
(41)C
(42)C
(43)A
(44)C
(45)B
(46)B
(47)D
(48)C
(49)D
(50)C
二`填空题(每空2分,共40分)
(第
(2)`(3)空允许小写或大小写混合使用,其它空均须与答案一样)
(1)外部
(2)DIR?
?
C*.*
(3)A:
\X\Y\W\QR.C
(4)64
(5)92
(6)pow(sin(x),2)*(a+b)/(a-b)或sit(x)*sit(x)*(a+b)/(a-b)
(7)eybdooG
(8)71
(9)3abc.exefile1file2(注:
两个答案,每个1分)
(10)((20(11)11110000
(12)34
(13)3
(14)XYZA
(15)k=p
(16)7
(17)17
(18)SO
(19)structlink*next
(20)(!
feof(fp))或(feof(fp)==0)