C语言复习参考题.docx
《C语言复习参考题.docx》由会员分享,可在线阅读,更多相关《C语言复习参考题.docx(23页珍藏版)》请在冰豆网上搜索。
C语言复习参考题
《C语言程序设计》复习参考资料
一.选择题
1.以下关于运算符优先顺序的描述中正确的是()。
A)关系运算符<算术运算符<赋值运算符<逻辑与运算符
B)逻辑运算符<关系运算符<算术运算符<赋值运算符
C)赋值运算符<逻辑与运算符<关系运算符<算术运算符
D)算术运算符<关系运算符<赋值运算符<逻辑与运算符
2.下列选项中合法的变量名是_________
A)#defineB)intC)a594_3D) abs(x)
3.以下正确的描述是()。
A)break语句的作用是结束整个循环的执行
B)在C程序中,注释说明只能位于一条语句的后面
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
4.以下说法正确的是()
A).#define和printf都是C语句。
B).#define是C语句,而printf不是。
C).若程序中要调用数学函数,必须在文件开头输入语句#include“math.h”
D).#define和printf都不是C语句。
5.下面的函数定义正确的是______________
A)floatfun(floatx;floaty){returnx*y;}
B)floatfun(floatx,y){returnx*y;}
C)floatfun(x,y){intx,y;returnx*y;}
D)intfun(intx,inty){returnx*y;}
6.执行下面语句后的输出为()
inti=-1;
if(i<=0)printf(“****\n”)
elseprintf(“%%%%\n”)
A).****B).%%%%
C).%%%%cD).有语法错误,不能正确执行
7.以下程序的输出结果是()
voidmain()
{intk=17;
printf("%d,%o,%x\n",k,k,k);
}
A).17,21,11B).17,17,17
C).17,0x11,021D).17,21,1
8.以下不正确的叙述是()
A)#define是宏定义命令
B)宏定义只是做简单的置换,不做正确性检查
C)宏定义是C语句,必须在行末加分号
D)printf是C语句,但#define不是。
9.一个C语言程序是由()
A)一个主程序和若干子程序组成B)若干子程序组成
C)若干过程组成D)函数组成
10.在C语言中,正确的结论是()
A).对文件操作必须先关闭文件
B).对文件操作必须先打开文件
C).对文件操作顺序没有统一规定
D).以上都错
11.以下对二维数组a的正确说明是()。
A)inta[3][];B)floatfa(3,4);
C)chara[1][3];D)floata(3)(5);
12.若有说明:
inta[3][2]={10};则下面正确的叙述是()
A)只有元素a[0][0]可得到初值10
B)此说明语句不正确:
。
C)数组a中各元素都可得到初值,但其值不一定为0。
D)数组a中每个元素均可得到初值10
13.以下叙述不正确的是()。
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是语句
D)只能在循环体内和switch语句体内使用break语句
14.为了避免在嵌套的条件语句If一else中产生二义性,C语言规定else子句总是与()配对。
A)缩排位置相同的ifB)其之前最近的未配对的if
C)之后最近的ifD)同一行上的if
15.能正确表示a和b同时为正或同时为负的逻辑表达式是()
A)(a>=0||b>=0)&&(a<0||b<0)
B)(a>=0&&b>=0)||(a<0&&b<0)
C)(a+b>0)&&(a+b<=0)
D)(a-b>0)&&(a-b<=0)
16.已知x=5,ch='A',y=0则表达式(x>=y&&ch<'a'&&!
y)的值是()
A)0B)语法错C)1D)"假"
17.下列关于单目运算符++、--的叙述中正确的是()
A)它们的运算对象可以是任何变量和常量
B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D)它们的运算对象可以是char型变量、int型变量和float型变量
18.下面的程序()
voidmain()
{intx=3;
do{
printf(“%d\n”,x-=2);
}while(!
(--x));
}
A).输出的是1B).输出的是1和-2
C).输出的是3和0D).是死循环
19.如下程序:
voidmain()
{inta=6;printf(“%d\n”,(a+=3,2*a));}
执行后,输出结果是()
A)9B)6C)2D)18
20.若有以下说明和语句,请选出哪个是对C数组元素的正确引用()
intc[4][5],(*cp)[5];cp=c;
A).cp+1B).*(cp+3)C).*(cp+1)+3D).*(*cp+2)
21.下面程序的输出是()
main()
{intx=023;
printf("%d\n",--x);}
A).17B).18C).23D).24
22.执行下列程序的结果是()
main()
{floatx=1,y;y=++x*++x;printf(“%f\n”,y);}
A).9.000000B).6.000000
C).1.000000D).程序有错误
23.下面程序的输出是()
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));}
A).3B).4C).1D).2
24.执行下面程序中的输出语句后,a的值是()
main()
{inta;
printf("%d\n",(a=3*5,a*4,a+5));}
A).65B).20C).15D).10
25.下面程序的输出是()
main()
{inta=-1,b=4,k;
k=(a++<=0)&&(!
(b--<=0));
printf("%d%d%d\n",k,a,b);}
A).003B).012C).103D).112
26.设有如下的程序段:
charstr[]="Hello";char*ptr;ptr=str;
执行完上面的程序段后,*(ptr+5)的值为()
A).'0'B).'\0'C).不确定的值D).'0'的地址
27.在宏定义#definePI3.14159中,用宏名PI代替一个()
A).单精度数B).双精度数C).常量D).字符串
28.若i是整型变量,pb是基本型为整型的指针变量,则正确的赋值表达式是()
A).pb=&iB).pb=iC).*pb=&iD).*pb=*i
29.有以下程序段
intm=0,n=0;charc=’d’;
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若从键盘上输入:
6D6<回车>,则输出结果是()
A)0,d,6B)6,d,6C)6,D,6D)6,D,0
30.printf()函数中用到格式符%-7s,其中数字7表示输出的字符串占用7列。
如果字符串长度小于7,则输出按方式()
A)从左起输出该字串,右补空格
B)按原字符长从左向右全部输出
C)右对齐输出该字串,左补空格
D)输出错误信息
31.以下能正确地定义整型变量a,b和c并为其赋初值3的语句是()
A)inta=3,b=3,c=3;B)inta,b,c=3;
C)a=3,b=3,c=3;D)a=b=c=3;
32.以下程序的输出结果是()
voidmain()
{intx=6,y=6,i;
for(i=2;x>4;y=++i)
printf("%d,%d",x--,y);
}
A)5,55,3B)6,62,3C)6,55,2D)6,65,3
33.以下程序的输出结果是()
voidmain()
{intw=4;
intfun(intk);
fun(w);
printf("\n");
}
fun(intk)
{if(k>0)fun(k-1);
printf("%d",k);}
A)4321B)01234
C)1234D)43210
34.下面程序的输出是()
main()
{intx=023;
printf("%d\n",--x);}
A).17B).18C).23D).24
35.以下程序的输出结果是()
main()
{charch[3][4]={"123","456","78"},*p[3];inti;
for(i=0;i<3;i++)p[i]=ch[i];
for(i=0;i<3;i++)printf("%s",p[i]);
}
A).123456780B).123456780
C).12345678D).147
36.下面程序的输出结果为()
char*alpha[6]={"ABCD","EFGH","IJKL",
"MNOP","QRST","UVWX"};
char**p;
voidmain()
{inti;p=alpha;
for(i=0;i<4;i++)
printf("%c",(*p)[i]);
printf("\n");
}
A).EIMCB).ABCDC).EFGHD).AEIM
37.根据下面的定义,能打印出字母M的语句是()
structperson{charname[9];intage;};
structpersonclass[10]={"John",17,"Paul",19,
"Mary",18,"Adam",16}
A).printf("%c\n",class[3].name);
B).printf("%c\n",class[3].name[1]);
C).printf("%c\n",class[2].name[1]);
D).printf("%c\n",class[2].name[0]);
38.有以下程序
voidmain()
{intp[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2){k=k+p[i];i++;}
printf("%d\n",k);
}
执行后输出结果是()
A)58B)56C)45D)24
39.以下程序的输出结果是()
voidmain()
{inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p;
p=&x[1][1];
for(i=0;i<6;i+=3)
printf("%d",p[i]);
}
A)52B)51C)53D)97
40.以下程序的输出结果是()
#include
voidmain()
{char*a=”abcdefghi”;
voidfun(char*s);
fun(a);
puts(a);
}
voidfun(char*s)
{intx,y;
charc;
for(x=0,y=strlen(s)-1;x{c=s[y];s[y]=s[x];s[x]=c;}
}
A).ihgfedcbaB).abcdefghi
C).abcdedcbaD).ihgfefghi
41.voidmain()
{inti,a[]={5,6,9,11};
for(i=0;i<4;i++)
{if(a[i]%2==0)continue;
printf("%d",a[i]);
}
}
执行后输出结果是()
A)编译出错B6C)5911D)56911
42.以下对数组的定义正确的是()
A)intx(10); B)intx[5]={0,1,2,3,4,5};
C)intn=10;x[n]; D)intx[]={0,1,2,3,4};
43.以下叙述中不正确的是()
A)switch是多分支结构语句
B)continue语句的作用是使程序的执行流程跳出包含它的所有循环
C)break语句只能用在循环体内和switch语句体内
D)在循环体内使用break语句和continue语句的作用不相同
44.如下程序:
voidmain()
{inti=1,j=2,k=3;
if((j++||k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是()
A)1,2,3B)2,2,4C)2,3,4D)2,3,3
45.以下叙述中,不正确的是()
A)算法应该具有有穷性、确定性以及有效性等特点
B)算法可以用传统流程图、N-S流程图以及伪代码等形式来描述
C)基本结构只有顺序、选择、循环3种结构
D)结构化程序设计的思想是自顶向下、逐步细化、模块化设计以及结构化编码
46.在C语言中,函数返回值的类型最终取决于()
A)函数定义时形参的类型B)return语句中表达式值的类型
C)调用函数时主函数所传递的实参类型D)函数定义时在函数首部所说明的函数类型
47.以下程序的输出结果是()
voidmain()
{inti;
for(i='a';i<'i';i++,i++)
printf("%c",i-32);
printf("\n");
}
A)编译不通过,无输出B)acegC)ACEGD)ABCDEFGI
48.若有以下的说明:
structperson
{charname[20];
intage;
charsex;
}a={"lining",20,'m'},*p=&a;
则对字符串lining的引用方式不可以是()
A).(*p).nameB).p.nameC).a.nameD).p->name
49.下面的程序输出是()
intm=13;
intfun2(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;printf("%d\n",fun2(a,b)/m);}
A).1B).2C).7D).10
50.下面的程序输出是()
main()
{intx=100,a=10,b=20,ok1=5,ok2=0;
if(a
if(b!
=15)
if(!
ok1)
x=1;
else
if(ok2)x=10;
x=-1;
printf("%d\n",x);}
A).-1B).0C).1D).不确定的值
51.若有以下定义:
inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;
则值为3的表达式是()
A).p+=2,*(p++)B).p+=2,*++p
C).p+=3,*p++D).p+=2,++*p
52.下面程序的输出是()
intaa[3][3]={{2},{4},{6}};
voidmain()
{inti,*p=&aa[0][0];
for(i=0;i<2;i++)
{if(i==0)
aa[i][i+1]=*p+1;
else
++p;
printf("%d",*p);}
}
A).23B).26C).33D).36
53.下面程序的输出是()
voidprtv(int*x)
{printf("%d\n",++*x);}
voidmain()
{inta=25;prtv(&a);}
A).23B).24C).25D).26
54.以下程序的运行结果是()
voidmain()
{chara[10]={'1','2','3','4','5','6','7','8','9','\0'};
char*p;
inti=8;
p=a+i;
printf("%s\n",p-2);
}
A)6B)789C)'6'D)678
55.执行以下3条语句之后,则k的值是_______
intx=4,y=7 ;x++ ;y+=2 ;k=y%x;
A)1B)2C)4D)3
56.以下程序段
for(k=0,m=4;m;m-=2)
for(n=1;n<4;n++)k++;
循环体语句”k++;”执行的次数是______________
A)16B)12C)6D)8
57.在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为()
A)char=int<1ongint<=floatB)charC)charD)char=int=1ongint<=float58.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='d'十'1'一'3';后,c2中的值为()
A)bB)68C)不确定的值D)f
59.表达式18/4*sqrt(4.0)/8值的数据类型为:
()
A)intB)floatC)doubleD)不确定
60.能正确表示"当x的取值在[1,10]和[50,60]范围内为真,否则为假"的表达式是()。
A)(x>=1)&&(x<=10)&&(x>=50)&&(x<=60)
B)(x>=1)||(x<=10)||(x>=50)||(x<=50)
C)(x>=1)&&(x<=10)||(x>=50)&&(x<=60)
D)(x>=1)||(x<=10)&&(x>=50)||(x<=60)
61.以下程序的输出结果是()
#include
main()
{char*p1,*p2,str[50]="ABCDEFG";
p1="abcd";p2="efgh";
strcpy(str+1,p2+1);strcpy(str+3,p1+3);
printf("%s",str);
}
A).AfghdEFGB).AbfhdC).AfghdD).Afgd
62.以下程序的输出结果是()
main()
{inti;
for(i=1;i<6;i++)
{if(i%2){printf("#");continue;}
printf("*");
}
printf("\n");
}
A).#*#*#B).#####C).*****D).*#*#*
二.填空题
1.C语言源程序的扩展名为.c,可执行文件的扩展名为_______________。
.exe
2.数组int a[3][5];共定义了______个数组元素。
15
3.C程序由函数构成,C程序总是从_______开始执行.main()
4.C语言中,用__________关键字来包含如stdio.h之类的头文件。
include
5.函数的返回值是通过函数中的________________语句来获得的。
return
6.至少执行一次循环体的循环语句是。
do—while语句
7.对于不带返回值的函数,应当用关键字______________定义函数。
void
8.多分支结构的程序,通常选用_________语句来实现。
switch
9.若charch[]="25yi6"有以下语句,则编译后分配给数组ch的内存占用的字节数为________。
6
10.下面运算符 < ,++ = 按照优先级从高到低排列顺序为___。
++<=,
11.若charstr[8]={“tony”};intk=strlen(str);则k的值为____________。
4
12.______________是声明结构体类型的关键字。
struct
13.inta[3][4]={{7,5},{5,8},{0,6,9,3}};则编译后a[1][2]=__________。
0
14.静态局部变量应该用关键字____________来进行声明。
static
15.用数组名作为函数调用的实参,则传递给形参的是_____。
数组的首地址
16.若有说明:
inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是________。
3
17.C语言提供三种逻辑运算符,按优先级高低它们分别是。
!
>&&>||
18.getchar()函数的功能是。
从标准输入设备读取下一个字符
19.写出下面表达式的值
6*4/7+8%3_______5x=5;y=2;(x++)+y_________7
8-4>=5+3________06>4-2?
4%2:
3 _______0
x=2,y=2;x||!
y______1x=3; x+=x-=2 _______2
20.下面invert函数的功能是将一个字符串str的内容颠倒过来,请填空。
#include
voidinvert(charstr[])
{inti,j,;k
for(i=0,j=strlen(str);i{k=str[i];str[i]=str[