C语言习题及答案.docx
《C语言习题及答案.docx》由会员分享,可在线阅读,更多相关《C语言习题及答案.docx(44页珍藏版)》请在冰豆网上搜索。
C语言习题及答案
c语言习题及答案
第一套第二套第三套第四套
===========================================================
一、单项选择题
1.C语言源程序文件经过C编译程序编译连接之后生成一个后缀为__C____的文件。
A、”.c”B、“.obj”C、“.exe”D、“.bas”
2.以下选项中不正确的整型常量是_C____。
A、12LB、-10C、1,900D、123U
3.表达式___C___的值是0。
A、3%5B、3/5.0C、3/5D、3<5
4.表达式!
(x>0||y>0)等价于__D___。
A、!
x>0||!
y>0B、!
(x>0)||!
(y>0)C、!
x>0&&!
y>0D、!
(x>0)&&!
(y>0)
5.若变量已正确定义并赋值,表达式__D____不符合C语言语法。
A、4&&3B、+aC、a=b=5D、int(3.14)
6.若变量已正确定义,执行语句scanf("%d%d%d",&k1,&k2,&k3);时,___B___是正确的输入。
A、2030,40B、203040C、20,3040D、20,30,40
7.执行语句printf(”__D____”,2);将得到出错信息。
A、%dB、%oC、%xD、%f
8.设变量定义为“ints[]="hello\nworld\n";”,则数组s中有__B____个元素。
A、12B、13C、14D、15
9.设变量定义为“inta[2]={1,3},*p=&a[0]+1;”,则*p的值是___B__。
A、2B、3C、4D、&a[0]+1
10.若变量已正确定义并赋值,表达式-k++等价于__A____。
A、-(k++)B、(-k)++C、-(k+1)D、-(++k)
11.在C语言程序中,在函数内部定义的变量称为__D____。
A、全局变量B、全程变量C、外部变量D、内部变量
12.若x是整型变量,表达式(x=10.0/4.0)的值是__D___。
A、2.5B、2.0C、3D、2
13.对于以下的变量定义,表达式__A____是正确的。
structnode{
chars[10];
intk;
}p[4];
A、p->k=2B、p[0].s=“abc”C、p[0]->k=2D、p->s=‘a’
14.下列运算符中,优先级从高到低依次为__D___。
A、&&,!
,||B、||,&&,!
C、&&,||,!
D、!
,&&,||
15.下列程序段的输出结果是__B___。
int*p,*q,k=1,j=10;
p=&j;q=&k;p=q;(*p)++;
printf("%d",*q);
A、1B、2C、10D、11
16.以下各选项企图说明一种新的类型名,其中正确的是水量(C)
A)typedefv1int;B)typedefv2=int;
C)typedefv1intv3;D)typedefv4:
int;
17.以下选项中,非法的字符常量是(C)
A)‘\t’B)‘\17’C)“n”D)‘\xaa’
18.以下程序的输出结果是(C)
main()
{inti,a[10];
for(i=9;i>=0;i--)a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
}
A)258B)741C)852D)369
19.以下程序的输出结果是(B)
main()
{charst[20]=“hello\0\t\\\”;
printf(%d%d\n”,strlen(st),sizeof(st));
}
A)99B)520C)1320D)2020
20.以下程序的输出结果是(D)
main()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=10)break;
if(b%3==1)
{b+=3;continue;}
}
printf(“%d\n”,a);
}
A)101B)6C)5D)4
21.以下程序的输出结果是(D)
unionmyun
{struct
{intx,y,z;}u;
intk;
}a;
main()
{a.u.x=4;a.u.y=5;a.u.z=6;
a.k=0;
printf(%d\n”,a.u.x);
}
A)4B)5C)6D)0
22.以下程序段的输出结果是(A)
chars[]="\\141\141abc\t";
printf("%d\n",strlen(s));
A)9B)12C)13D)14
23.以下程序的输出结果是(B)
main()
{charch[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A)"AAAA"B)"BBB"C)"BBBCC"D)"CC"
24.不合法的main函数命令行参数表示形式是(C)
A)main(inta,char*c[])B)main(intarc,char**arv)
C)main(intargc,char*argv)D)main(intargv,char*argc[])
25.有以下程序
main()
{char*s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
执行后输出结果是(C)
A)n,twoB)t,oneC)w,oneD)o,two
26.设有如下说明
typedefstruct
{intn;charc;doublex;}STD;
则以下选项中,能正确定义结构体数组并赋初值的语句是(A)
A)STDtt[2]={{1,'A',62},{2,'B',75}};
B)STDtt[2]={1,"A",62},2,"B",75};
C)structtt[2]={{1,'A'},{2,'B'}};
D)structtt[2]={{1,"A",62.5},{2,"B",75.0}};
27.若变量c为char类型,则能正确判断出c为小写字母的表达式是(D)。
A)'a'<=c<='z'B)(c>='a')||(c<='z')
C)('a'<=c)and('z'>=c)D)(c>='a')&&(c<='z')
二、填空题
1.设ch是字符型变量,判断ch为英文字母的表达式是:
(ch>=’A’&&ch,=’Z’)||(ch>=’a’&&ch<=’z’)__。
2.计算下列分段函数的if语句是_if(x>0)y=1;elseif(x=0)y=0;elsey=-1;___。
1x>0
y=0x=0
-1x<0
3.表达式!
!
5的值是__1____。
4.下列程序段的输出结果是___12___。
printf("%xn",(0x19<<1)&0x17);
5.下列程序段的输出结果是__k=4s=6___。
intk,s;
for(k=0,s=0;k<10;k++)
if(s>k)break;
elses+=k;
printf("k=%ds=%d",k,s);
6.下列程序段的输出结果是__15___。
#defineMIN(x,y)(x)<(y)?
(x):
(y)
printf("%d",10*MIN(10,15));
7.下列程序在运行时可能会出错,原因是__指针变量s未赋初值____。
#include
voidmain()
{char*s;
gets(s);
puts(s);
}
8.下列程序段的输出是___60__。
#include
intf(intm)
{staticintk=0;
ints=0;
for(;k<=m;k++)s++;
returns;
}
voidmain()
{ints1,s2;
s1=f(5);
s2=f(3);
printf("%d%d\n",s1,s2);
}
9.下列程序段的输出结果是__fgh___。
char*st[]={"abcd","efgh","ijkl","mnop"};
printf("%s",*(st+1)+1);
10.用typedef定义一个含10个元素的整型数组ARR。
typedefintARR[10];
11.以下程序调用findmax函数返回数组中的最大值,请填空。
findmax(int*a,intn)
{int*p,*s;
for(p=a,s=a;p-a
if(*p>*s)s=p;
return(*s);
}
main()
{intx[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
三、程序(段)填空题
1.设变量x,y,z已正确定义和赋值,请仔细阅读程序段A,然后在程序段B中填入正确的内容,使程序段A和程序段B有相同的功能。
程序段A程序段B
x=x+y;
y=x-y;
x=x-y;
z=x+y;z=x;
x=y;
y=z;
z=x+y;
2.请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。
char*f1(chars[],chart[])
{intk;
for(k=0;t[k]!
='';k++)
s[k]=t[k];
s[k]='';
returns;
}
char*f2(char*s,char*t)
{char*p=s;
while((*p++=*t++)!
='')
;
returns;
}
===========================================================
一、单项选择题
1.___D___是合法的用户自定义标识符。
A、b-bB、floatC、D、_isw
2.若变量已正确定义并赋值,表达式___B___不符合C语言语法。
A、a*b/c;B、3.14%2C、2,bD、a/b/c
3.___C__是不正确的字符常量。
A、'n'B、'1'C、"a"D、'101'
4.在C程序中,用___B__表示逻辑值“真”。
A、1B、非0的数C、非1的数D、大于0的数
5.__C____把x、y定义成float类型变量,并赋同一初值3.14。
A、floatx,y=3.14;B、floatx,y=2*3.14;
C、floatx=3.14,y=x=3.14;D、floatx=y=3.14;
6.若变量已正确定义,表达式___C___的值不是2。
A、2&3B、1<<1C、a==2D、1^3
7.若变量已正确定义,语句“if(a>b)k=0;elsek=1;”和__C____等价。
A、k=(a>b)?
1:
0;B、k=a>b;
C、k=a<=b;D、a<=b?
0:
1;
8.设变量定义为“inta,b;”,执行下列语句时,输入_D____,则a和b的值都是10。
scanf("a=%d,b=%d",&a,&b);
A、1010B、10,10C、a=10b=10D、a=10,b=10
9.下列程序的输出结果是__D___。
fun(inta,intb,intc)
{c=a*b;}
voidmain()
{intc;
fun(2,3,c);
printf(”%dn”,c);
}
A、0B、1C、6D、无法确定
10.在C程序中,若对函数类型未加说明,则函数的隐含类型为__A___。
A、intB、doubleC、voidD、char
11.表达式strlen(”hello”)的值是___B____。
A、4B、5C、6D、7
12.设变量定义为“inta[4];”,则表达式__D____不符合C语言语法。
A、*aB、a[0]C、aD、a++
13.设变量定义为“intx,*p=&x;”,则&*p相当于__A___。
A、pB、*pC、xD、*&x
14.若变量已正确定义,_A___不能使指针p成为空指针。
A、p=EOFB、p=0C、p=’’D、p=NULL
15.对于以下的变量定义,表达式__D____不符合C语言语法。
structnode{
intlen;
char*pk;
}x={2,"right"},*p=&x;
A、p->pkB、*p.pkC、*p->pkD、*x.pk
16.有如下程序
intrunc(inta,intb)
{return(a+b);}
main0
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%\d\n”,r);
}
该程序的输出的结果是(D)
A)12B)13C)14D)15
17.对于基类型相同的两个指针变量之间,不能进行的运算是(C)
A)
18.有如下程序
longfib(intn)
{if(n>2)return(fib(n-1)+fib(n-2));
elsereturn
(2);
}
main0
{printf(“%d\n”,fib(3));
该程序的输出结果是(B)
A}2B}4C}6D}8
19.有如下定义
structperson{charname[9];intage;};
strictpersonclass[10]={“Johu”,17,
“Paul”,19
“Mary”,18,
“Adam16,};
根据上述定义,能输出字母M的语句是(D)
A)prinft(“%c\n”,class[3].mane);
B)pfintf(“%c\n”,class[3].name[1]);
C)prinft(“%c\n”,class[2].name[1]);
D)printf(“%^c\n”,class[2].name[0]);
20.以下所列的C语言常量中,错误的是(B)
A)0xFFB)1.2e0.5C)2LD)‘\72’
21.有以下程序段
intk=0
while(k=1)k++;
while循环执行的次数是(A)
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行1次
22.以下程序的输出结果是(C)
A)0B)29C)31D)无定值
fun(intx,inty,intz)
{z=x*x+y*y;}
main()
{inta=31;
fun(5,2,a);
printf(“%d”,a);
}
23.下列程序段的输出结果是(A)
A)2143B)1212C)1234D)2112
voidfun(int*x,int*y)
{printf(“%d%d”,*x,*y);*x=3;*y=4;}
main()
{intx=1,y=2;
fun(&y,&x);
printf(“%d%d”,x,y);
}
24.当调用函数时,实参是一个数组名,则向函数传送的是(B)
A)数组的长度B)数组的首地址
C)数组每一个元素的地址D)数组每个元素中的值
25.以下程序的输出结果是(A)
A)1B)2C)3D)4
longfun(intn)
{longs;
if(n==1||n==2)s=2;
elses=n-fun(n-1);
returns;
}
main()
{printf(“%ld\n”,fun(3));}
26.以下程序的输出结果是(B)
A)16B)2C)9D)1
#defineSQR(X)X*X
main()
{inta=16,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf(“d\n”,a);
}
27.以下函数返回a所指数组中最小的值所在的下标值
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;iif(a[i]return(p);
}
在下划线处应填入的是(D)
A)i=pB)a[p]=a[i]C)p=jD)p=i
二、填空题
1.表示“x≥y≥z”的C表达式是___x>=y&&y>=z____。
2.下列程序段的输出是__1____。
printf("%on",010<<1^1);
3.下列程序段的输出是__6,90____。
intk;
floats;
for(k=0,s=0;k<7;k++)
s+=k/2;
printf("%d,%fn",k,s);
4.下列程序段的输出是__5,25_____。
#definef(a,b,x)a*x+b
printf("%d,%dn",f(3,2,1),f(6,5,f(3,2,1)));
5.下列程序段的输出是_*#*#____。
main()
{intk;
for(k=1;k<5;k++){
if(k%2)printf("*");
elsecontinue;
printf("#");
}
}
6.下列程序段的输出是__58___。
#include
intf(intx)
{staticy=1;
y++;
x+=y;
returnx;
}
voidmain()
{intk;
k=f(3);
printf("%d%dn",k,f(k));
}
7.下列程序段的输出是___5__。
int*p,*q,k=5,j=6;
q=&k;p=q;q=&j;
printf("%d",*p);
8.函数
voidf(chars[],chart[])
{intk=0;
while(s[k]=t[k])k++;
}
等价于
voidf(char*s,char*t)
{while(_*s++=*t++____);
}
9.下列程序段的输出是_ne,s____。
char*a[2]={"one","two"},**p=a;
printf("%s,",*(p++)+1);
printf("%cn",**p-1);
10.下列程序编译后生成t.exe,运行tinputoutputzoooil的输出结果是__zoo___。
voidmain(intargc,char*argv[])
{intk;
char*p=argv[1];
for(k=2;kif(strcmp(argv[k],p)>0)p=argv[k];
printf("%sn",p);
}
11.下列程序调用swap函数交换a和b的值,并输出交换后的a和b的值。
程序的输出结果是:
Afterswap5,3。
voidmain()
{inta=3,b=5;
swap(&a,&b);
printf("Afterswap%d,%d",a,b);
}
swap(int*p,int*q)
{intt;
t=*p;;
*p=*q;
*q=t;
}
一、选择题(
(1)-(40)题每题1分,(41)-(50)题每题2分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)计算机的存储器完整的应包括
A)软盘、硬盘B)磁盘、磁带、光盘
C)内存储器、外存储器D)RAM、ROM
(2)计算机中运算器的作用是
A)控制数据的输入/输出B)控制主存与辅存间的数据交换
C)完成各种算术运算和逻辑运算D)协调和指挥整个计算机系统的操作
(3)软磁盘处于写保护状态时,其中记录的信息
A)绝对不会丢失
B)不能被擦除,但能追加新信息
C)不能通过写磁盘操作被更新
D)不能以常规方式被删除,但可以通过操作系统的格式化功能被擦除
(4)光盘根据基制造材料和记录信息的方式不同,一般可分为
A)CD、VCD
B)CD、VCD、DVD、MP3
C)只读光盘、可一次性写入光盘、可擦写光盘
D)数据盘、音频信息盘、视频信息盘
(5)在计算机系统中,可执行程序是
A)源代码B)汇编语言代码C)机器语言代码D)ASCII码
(6)计算机软件系统包括
A)操作系统、网络软件B)系统软件、应用软件
C)客户端应用软件、服务器端系统软件D)操作系统、应用软件和网络软件