C语言程序设计.docx
《C语言程序设计.docx》由会员分享,可在线阅读,更多相关《C语言程序设计.docx(34页珍藏版)》请在冰点文库上搜索。
C语言程序设计
C语言程序设计
1.单项选择题(60道)
(1)以下关于C语言程序的说法中正确的为()。
a)计算机不能直接执行b)计算机能直接执行
c)编辑好就可以执行d)编译好就可以执行
(2)以下不属于C语言特点的为()。
a)简洁b)运算符丰富c)具有结构化的控制语句d)语法限制严格。
(3)C语言的程序必须包含()。
a)语句b)变量声明c)函数d)宏定义
(4)以下不属于算法特点的为()。
a)有穷性b)无穷性c)有效性d)确定性
(5)算法的三种基本结构除了顺序结构、选择结构外,还有()。
a)循环结构b)递归结构c)调用结构d)跳转结构
(6)在下列关于C语言常量的说法中正确的为()。
a)没有数据类型b)有数据类型c)必须有名字d)不能输出
(7)在下列关于C语言变量的说法中正确的为()。
a)必须先定义后使用b)不必先定义后使用
c)只能在函数外修改变量的值d)只能在函数内修改变量的值
(8)以下属于整型常量不正确写法的为()。
a)123b)0123c)0x123d)1,230
(9)以下关于整型量所占内存字节数的正确说法为()。
a)所有的整型量都占2个字节
b)基本整型量占2个字节,长整型量占4个字节
c)C语言标准没有规定整型量占多少个字节
d)使用sizeof可以确定整型量占几个字节
(10)以下正确声明整型变量的为()。
a)int1x,2x,3x;b)intx1,x2,x3;c)int1x,int2x,int3x;d)intx1,intx2,intx3;
(11)以下关于实数类型常量的说法中,正确的为()。
a)实数类型常量只能用小数形式表示
b)实数类型常量只能用指数形式
c)实数类型常量既可以用小数形式表示,也可以用指数形式表示
d)1.0不是实数类型常量,而是整数类型常量
(12)以下属于实型常量不正确写法的为()。
a)0.123b)1.23e-1c).123d)123e2
(13)下列不合法的字符常量为()。
a)‘a’b)‘\n’c)“a”d)‘\\’
(14)假设一个字符类型的量占一个字节,则字符串“abc”所占的字节数为()
a)1b)2c)3d)4
(15)设整型变量a为5,使b不为2的表达式是( )。
a)b=a/2 b)b=6-(--a) c)b=a%2 d)b=a>3?
2:
1
(16)设有说明double(*p1)[N];其中标识符p1是( )。
a)N个指向double型变量的指针。
b) 指向N个double型变量的函数指针。
c)一个指向由N个double型元素组成的一维数组的指针。
d)具有N个指针元素的一维指针数组,每个元素都只能指向double型量。
(17)以下程序的输出结果是( )。
charstr[15]=”hello!
”;
printf(“%d\n”,strlen(str));
a)15 b)14 c)7 d)6
(18)选出下列标识符中不是合法的标识符的是( )。
a)hot_do b)cat1 c)_pri d)2ab
(19)为了避免嵌套的条件分支语句if-else的二义性,C语言规定:
C程序中的else总是与( )组成配对关系。
a)缩排位置相同的if b)在其之前未配对的if
c)在其之前未配对的最近的if d)同一行上的if
(20)以下程序的输出结果是( )。
intx=10,y=10;
printf(“%d %d\n”,x--,--y);
a)10 10 b)9 9 c)9 10 d)10 9
(21)设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i个元素的地址为( )。
a)P+i*2 b) P+(i-1)*2 c)P+(i-1) d) P+i
(22)以下程序的输出结果是( )。
inta=5;
floatx=3.14;
a*=x*(‘E’-‘A’);
printf(“%f\n”,(float)a);
a)62.000000 b)62.800000 c)63.000000 d)62
(23)下列描述中不正确的是( )。
a)字符型数组中可能存放字符串。
b)可以对字符型数组进行整体输入、输出。
c)可以对整型数组进行整体输入、输出。
d)不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
(24)设有如下定义:
intx=10,y=3,z;
则语句printf("%d\n",z=(x%y,x/y));的输出结果是( )。
a)1 b)0 c)4 d)3
(25)定义如下变量和数组:
inti;intx[3][3]={1,2,3,4,5,6,7,8,9};
则语句for(i=0;i<3;i++) printf("%d ",x[i][2-i]);的输出结果是( )。
a)1 5 9 b)1 4 7 c)3 5 7 d)3 6 9
(26)以下对二维数组a进行正确初始化的是( )
a)inta[2][3]={{1,2},{3,4},{5,6}}; b)inta[][3]={1,2,3,4,5,6};
c)inta[2][]={1,2,3,4,5,6}; d)inta[2][]={{1,2},{3,4}};
(27)设有如下定义:
char*aa[2]={"abcd","ABCD"};则以下说法中正确的是( )。
a)aa数组成元素的值分别是"abcd"和ABCD"
b)aa是指针变量,它指向含有两个数组元素的字符型一维数组
c)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
d)aa数组的两个元素中各自存放了字符'a'和'A'的地址
(28)下列程序的输出结果是( )。
char*p1="abcd",*p2="ABCD",str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
a)xyabcAB b)abcABz c)ABabcz d)xycdBCD
(29)下列程序的输出结果是( )。
inta[5]={2,4,6,8,10},*P,**k;
p=a; k=&p;
printf("%d",*(p++));
printf("%d\n",**k);
a)44 b)22 c)24 d)46
(30)不能把字符串:
Hello!
赋给数组b的语句是( )。
a)charb[10]={'H','e','l','l','o','!
'}; b)charb[10]; b="Hello!
";
c)charb[10]; strcpy(b,"Hello!
"); d)charb[10]="Hello!
";
(31)以下选项中属于C语言的数据类型是( )。
a)复合型 b)双精度型 c)逻辑型 d)集合型
(32)以下说法中正确的是( )。
a)C语言程序总是从第一个的函数开始执行
b)在C语言程序中,要调用的函数必须在main()函数中定义
c)C语言程序总是从main()函数开始执行
d)C语言程序中的main()函数必须放在程序的开始部分
(33)下列描述中不正确的是( )。
a)字符型数组中可能存放字符串。
b)可以对字符型数组进行整体输入、输出。
c)可以对整型数组进行整体输入、输出。
d)不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
(34)若已定义:
inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为( )。
a)p+1 b)a+1 c)a++ d)++p
(35)设有如下定义:
intx=10,y=3,z;
则语句printf("%d\n",z=(x%y,x/y));的输出结果是( )。
a)1 b)0 c)4 d)3
(36)定义如下变量和数组:
inti,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句
for(i=0;i<3;i++)printf("%d",x[i][2-i]);的输出结果是( )
a)1 5 9 b)1 4 7 c)3 5 7 d)3 6 9
(37)以下语句的输出结果是( )。
intx=10,y=10;
printf(“%d %d\n”,x--,--y);
a)10 10 b)9 9 c)9 10 d)10 9
(38)以下语句的输出结果是( )。
inta=-1,b=4,k;
k=(++a<0)&&!
(b--<=0);
printf("%d,%d,%d\n",k,a,b);
a)1,0,4 b)1,0,3 c)0,0,3 d)0,0,4
(39)下列程序的输出结果是( )。
char *p1="abcd", *p2="ABCD", str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
a)xyabcAB b)abcABz c)ABabcz d)xycdBCD
(40)执行下面的程序后,a的值是( )。
#defineSQR(X)X*X
main()
{inta=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a);
}
a)10 b)1 c)9 d)0
(41)表达式:
10!
=9的值是( )。
a)true b)非零值 c)0 d)1
(42)若有说明:
inti,j=7,*p=&i;,则与i=j;等价的语句是( )。
a)i=*p; b)*p=*&j; c)i=&j; d)i=**p;
(43)在C程序中有如下语句:
char*func(intx,inty);它是( )。
a)对函数func的定义。
b)对函数func的调用。
c)对函数func的原型说明。
d)不合法的。
(44)设intx=1,y=1;表达式(!
x++||y--)的值是()。
a)0 b)1 c)2 d)-1
(45)main()
{ intn;
(n=6*4,n+6),n*2;
printf(“n=%d\n”,n);
}
此程序的输出结果是()。
a)30 b) 24 c) 60 d)48
(46)若有如下定义,则()是对数组元素的正确的引用。
int a[10],*p;
p=a; p=a; p=a; p=a;
a) *&a[10] b) a[11] c) *(p+10) d)*p
(47)设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是()。
a) 0 b) 4 c) -4 d) 2
(48)以下不能正确定义二维数组的语句是()。
a)inta[2][2]={{1},{2}}; b)inta[][2]={1,2,3,4};
c)inta[2][2]={{1},2,3}; d)inta[2][]={{1,2},{3,4}};
(49)程序段()的功能是将变量u、s中的最大值赋给变量t。
a) if(u>s)t=u;t=s; b) t=u; if(t) t=s;
c) if(u>s)t=s;elset=u; d) t=s;if(u) t=u;
(50)下列程序段的输出结果是 。
voidmain()
{ intk;
for(k=1;k<5;k++)
{if(k%2!
=0)
printf("#");
else
printf(“*”);
}
}
a)#*#* b)*#*# c) ## d)以上都不对
(51)设变量定义为inta[3]={1,4,7},*p=&a[2],则*p的值是()。
a)&a[2] b)4 c)7 d)1
(52)能正确表示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
(53)若变量c为char类型,能正确判断出c为小写字母的表达式是()。
a)’a’<=c<=’z’ b)(c>=’a’)||(c<=’z’)
c)(‘a’<=c)and(‘z’>=c) d)(c>=’a’)&&(c<=’z’)
(54)设有定义:
longx=-123456L;则以下能够正确输出变量x值的语句是()。
a)printf(“x=%d\n”,x) b)printf(“x=%ld\n”,x)
c)printf(“x=%8dl\n”,x) d)printf(“x=%LD\n”,x);
(55)下列关于指针定义的描述,()是错误的。
a)指针是一种变量,该变量用来存放某个变量的地址值的。
b)指针变量的类型与它所指向的变量类型一致。
c)指针变量的命名规则与标识符相同。
d)在定义指针时,标识符前的“*”号表示后面的指针变量所指向的内容。
(56)C语言中以追加方式打开一个文件应选择()参数。
a)“r” b)“w”
c)“rb” d)“a”
(57)Break语句的正确的用法是( )。
a)无论在任何情况下,都中断程序的执行,退出到系统下一层。
b)在多重循环中,只能退出最靠近的那一层循环语句。
c)跳出多重循环。
d)只能修改控制变量。
(58)在函数中默认存储类型说明符的变量应该是()存储类型。
a)内部静态 b)外部 c)自动 d)寄存器
(59)C语言用()表示逻辑“真”值。
a)true b)t或y c)非零 d)0
(60)运算符()的优先级最高。
a)[] b)+= c)?
:
d)++
2.填空题(60道)
(1)实型变量的类型说明符有:
__________、____________。
(2)表达式7+8>2&&25%5的结果是_______________________。
(3)C语言中数组的下标下限为___________________________。
(4)数组int a[3][4];共定义了____________个数组元素。
(5)在C语言程序设计中,正确的标识符是由____________________组成的。
(6)设x=4,y=(++x)+(++x);那么y的值为_____,表达式执行后,变量x的值为_______。
(7)一个变量的指针是指_____________________________________________。
(8)能够构成一个数组,其元素满足的特点是__________________________________,,构成结构体的成员可以是_________________________________________。
(9)运算符 < % ++ = 按照优先级从高到低排列顺序为______________。
(10)C程序中符号/*……*/所起作用是_________________________。
(11)写出下面表达式的值
3*5/7+7%3____________________x=2;y=4;(x++)+y_____________________
3+4>=7-10_____________________3>4?
3%2:
1 ___________________
x=2,y=2;++x||++y_______________x=3; x+=x-=2 _____________________
(12)在C语言程序中,对文件进行操作首先要______________________________;然后对文件进行操作,最后要对文件实行__________________________________操作,防止文件中信息的丢失。
(13)对字符串进行操作的函数有_________________________________________________等。
(14)设p=30,那么执行q=(++p)后,表达式的结果q为______,变量p的结果为________。
若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是_________。
(15)以下程序运行后的输出结果是_________。
该程序的功能是_________。
main()
{int x=10,y=20,t=0;
if(x!
=y)t=x;x=y;y=t;
printf("%d,%d\n",x,y);
}
(16)若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为"读"而打开此文件:
fp=fopen( );。
(17)下面程序是计算10个整数中奇数的和及其偶数的和,请填空。
#include
main()
{ inta,b,c,i;
a=c=0;
for(i=1;i<=10;i++)
{ scanf(“%d”,&b);canf(“%d”,&b);
_________;
_________;
_________;
}
printf("偶数的和=%d\n",a);
printf("奇数的和=%d\n",c);
}
(18)下面程序的功能是:
输出100以内(不包含100)能被3整除且个位数为6的所有整数,请填空。
#Include<stdio.h>
main()
{ inti,j;
for(i=1;____________;i++)
if(________________)
printf("%d",j); }
(19)在内存中存储“A”要占用____________个字节,存储‘A’要占用___________字节。
(20)符号常量的定义方法是________________。
(21)能表述“20(22)结构化程序设计方法规定程序或程序段的结构有三种:
顺序结构、________________和________________。
(23)C语言共提供了三种用于实现循环结构的流程控制语句,它们是____________、____________和____________。
(24)设有定义语句“staticinta[3][4]={{1},{2},{3}}”,则a[1][1]值为____________,a[2][1]的值为____________。
(25)用{}把一些语句括起来称为____________语句。
(26)C语言编绎系统在判断一个量是否为“真”时,以0代表“假”,以____________代表“真”。
(27)C语言中的实型变量分为两种类型,它们是____________和____________。
(28)C语言中的标识符只能由三种字符组成,它们是____________、____________和____________。
(29)若有定义:
charc=’\010’;则变量c中包含的字符个数是____________。
(30)C语言提供的三种逻辑运算符是_________、_________、_________。
(31)设y为int型变量,请写出描述“y是奇数”的表达式____________。
(32)在C语言中,二维数组元素在内存中的存放顺序是____________。
(33)若自定义函数要求返回一个值,则应在该函数体中有一条____________语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符____________。
(34)函数中的形参和调用时的实参都是数组名时,传递方式为____________,都是变量时,传递方式为____________。
(35)C语言从源程序的书写到上机运行输出结果要经过_______________四个步骤。
(3