c语言归纳题型练习 1文档格式.docx
《c语言归纳题型练习 1文档格式.docx》由会员分享,可在线阅读,更多相关《c语言归纳题型练习 1文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
(A)4(B)表达式非法,无值
(C)1(D)5
9.若有说明:
inta[3][4];
则对数组元素的正确引用是____C______
(A)a[2][4](B)a[1,3](C)a[1+1][0](D)a
(2)
(1)
10.程序中使用了库函数strcpy,则该程序应包含如下哪个头文件?
_D_______
(A)stdio.h(B)stdlib.h(C)ctype.h(D)string.h
11.字符'
\n'
表示:
__C________
(A)回车(B)换行
(C)回车并换行(D)换行不回车
12.以下正确的函数声明形式是_C_________
(A)doublefun(intx,inty)
(B)doublefun(intx;
inty)
(C)doublefun(intx,inty);
(D)doublefun(intx;
inty);
13.以下不正确的说法为___D______
(A)在不同函数中可以使用相同名字的变量
(B)形式参数是局部变量
(C)在函数内定义的变量只在本函数范围内有效
(D)在函数内的复合语句中定义的变量在本函数范围内有效
答案:
1、C2、C3、B(由于C语言区分大小写,FLOAT与float不同,float为关键字,但FLOAT可以为用户标识符)4、A5、D6、A7、C8、C(此时c为3)9、C10、D11、C12、C13、D
1、C语言程序的三种基本结构是A
A、顺序结构、选择结构、循环结构B、递归结构、循环结构、转移结构
C、嵌套结构、递归结构、顺序结构D、循环结构、转移结构、顺序结构
2、为了避免嵌套的条件语句ifelse的二义性,C语言规定:
else与B配对。
A、缩排位置相同的ifB、其之前最近且未配对过的if
C、其之后最近的ifD、同一行上的if
3、数组名作为参数传递给函数,作为实在参数的数组名被处理为D
A、该数组的长度B、该数组的元素个数
C、该数组中个元素的值D、该数组的首地址
4、若i=5,j=1为整数,则以下while循环执行B次.
do
{
printf("
*"
j=j+2;
i=i+1;
}
while(j<
=i);
A)4B)5C)3D)2
5、C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为C类型。
A)voidB)doublec)intd)char
9、设inta=1,b=2,c=3;
则表达式a==c||a+b>
c的值是(B)
A.FB.0C.1D.T
1、A2、B3、D4、B5、C9、B
1、下列C常量中不合法的是(C)
A.'
5'
B."
5"
C.'
500'
D."
500"
2.在C程序的函数内_______B_______嵌套定义函数。
A)能B)不能
3、C程序中,注释部分的位置(D)
A.必须在一行的开始B.必须在语句之后
C.必须在一行的最后D.以上三种都可以
4、下面C常量中不合法的是(B)
A."
ABC\0"
B.-e0.1C.'
\0'
D.0Xfff
5.下面程序的运行结果是(D)
main()
{chara='
a'
b='
b'
;
putchar(a);
putchar('
\b'
putchar(b);
}
A.abb
B.a
b
C.b
D.未使用预编译命令,无法调用putchar函数
6、下面表达式中(D)的值等于0。
(设:
inta=1;
charb='
0'
)
A.!
a==!
bB.!
a||bC.!
(a==b)D.a&
&
!
b
7、.设intm=7;
floatn=3.5;
计算m-=m-!
n后,m的值是(D)
A.3B.3.5C.1D.0
8、.表达式x=1.42,(int)x+0.4的值是(C)。
(floatx;
A.1.82B.1.42C.1.4D.0.4
9.已知x=0,y=0;
执行以下程序段后,y的值为(A)。
if(x>
A.0B.-1C.1D.不确定
10、执行下面程序段后,变量i的值是(B)
inti=5;
switch(i--)
{case4:
i+=2;
case5:
i+=3;
case6:
i+=4;
break;
default:
i+=10;
A.9B.11C.12D.13
11.设charch;
执行下面程序段时,若键盘输入abcde!
<
回车>
,则输出结果是(D)。
while((ch=getchar())!
='
'
{ch=ch+1;
putchar(ch);
A.bcdef!
B.abcdef!
C.abcdeD.bcdef
12.设intm,i;
执行下面程序段后,变量m,i的值依次为(B)。
for(m=0,i=20;
m<
50;
i-=2)
m=m+i;
A.40,16B.54,14C.69,12D.80,10
13.C语言中宏定#define所在命令行的位置(C)。
A.必须在程序的开始B.可以随意安排
C.必须在其它函数之外D.必须在其它函数之中
1、C2、B3、D4、B5、D6、D7、D8、C9、A10、B(思路提示:
①先执行switch(i)寻找入口->
②再执行i--->
③然后执行入口后面的语句。
这里注意:
语句要一直执行到break才跳出switch语句。
11、D12、B13、C
1.下面程序段输出结果是(B)。
charstr[]="
adcd"
*ps=str;
printf("
%d\n"
*(ps+4));
A.100B.0C.字符'
d'
的地址D.不确定
2.下列函数fun的返回值为(C)
fun(floatx)
{printf("
%f\n"
x);
A.void类型B.无法确定返回值C.int类型D.没有返回值
3.max函数定义如下,且a,b,c,d,e,f,g均为整型变量,下面的调用中(C)是不正确的。
max(intx,inty)
{intz;
if(x>
y)z=x;
elsez=y;
return(z);
A.max(a,max(c,b))B.max(max(a,b),max(c,d))
C.max(a,b,c)D.g=max(f=max(a.b),max(d,e))
4.下面程序的输出结果是(C)
{
intx=13;
%d"
x+func(x));
func(intx)
x=11;
return(x);
A.22B.26C.24D.出错
5.下面程序的输出结果是(A)
intx=10,y=100;
move();
%d,%d\n"
x,y);
move();
move()
intw;
w=x;
x=y;
y=w;
A.100,10B.10,100C.100,10D.出错
10,10010,100100,10
6.下面是求1+2+3+......+n的函数,下划线处应选择(C)
intsum(intn)
{ints=0;
if(n==0)return(s);
if(n>
=1)return(__);
A.1B.sum(n-1)C.n+sum(n-1)D.s+sum(n-1)
7.设x为整型变量,则语句int*px=&
x;
表示(D)。
A.给*px赋初值B.px为变量x所指的值
C.px的初值为xD.px的初值为x的地址
9.下面函数返回数组的最大值,下划线处应选择(B)。
intf(int*a,intn)
{intx=*a,i;
for(i=1;
i<
n;
i++)
if(x<
a[i])_____;
A.x=a+iB.x=*(a+i)C.x=[a+i]D.x=&
(a+i)
10.下面程序的输出是(D)。
#include"
string.h"
{charp1[10]="
abc"
*p2="
DEF"
str[20]="
xyz"
strcpy(str+2,strcat(p1,p2));
%s\n"
str);
A.xyzabcDEFB.zabcDEFC.yzabcDEFD.xyabcDEF
1、B2、C3、C4、C5、A(提示:
由于x,y都是全局变量,因此move函数中所用到的x和y都是全局的x和y)6、C7、D9、B10、D(提示:
语句指的是先将p2字符串附加在p1字符串之后,且覆盖掉p1字符串的’\0’;
再将p1拷贝到str字符串,从str+2开始拷贝。
如下图所示:
二、填空题
1.结构化程序的3种基本结构是顺序结构、选择结构和循环结构。
2.C程序的开始执行点是程序中main函数
3.流程图及N—S图都是一种)算法描述的工具。
4.有符号的基本整形变量的有效取值范围是)-32768~32767。
5.字符常量是用单引号括起来的一个字符。
6.字符串的结束标识是\0。
7.为避免条件语句if—else嵌套的二义性,C语言规定:
else与上面最近未匹配的if配对。
8.C语言用非表示逻辑“真”值。
9.能实现C程序循环结构的语句包括while语句,do-while语句和for语句
10.C语言的逻辑运算符包括&
(逻辑与)、||(逻辑或)和!
(逻辑非)
11.无条件使流程跳出循环的语句是break。
12.假使整形变量a、b的值分别1和3,表达式a+b/2的值是2。
13.在函数内部定义的变量,其有效范围是从定义变量开始到本函数结束。
14.函数体一般包括声明部分与执行部分。
15.C语言提供的预处理功能主要有宏定义、文件包含和条件编译
16.在C程序的函数内____不能__嵌套定义函数。
17.C语言规定标识符只能由________字母,下划线和数字三种字符组成。
18.设inta,b;
则能正确表示代数式1/(ab)的C语言表达式是_____(18)_______。
19.设inti=1,s=0;
与do{s=s+i;
}while(i++<
5);
等价的for循环结构是________(19)________。
20.下面程序读入20个整数,统计非负数个数并计算非负数之和。
请填空。
main()
{inti,a[20],s,count;
s=count=0;
for(i=0;
20;
scanf("
_(20)___);
if(a[i]<
0)___(21)_____;
s+=a[i];
count++;
%d\t%d"
s,count);
21.下面程序的功能是从字符串"
ComputerandC"
中删去所有空格,请填空。
#include<
string.h>
{charstr1[]="
str2[80];
inti,j=0;
_____(22)___;
if(str1[i]___(23)___'
'
str2[j]=str1[i];
j++;
str2[j]='
%s"
str2);
22.下面程序的功能是把100~200之间的不能被3整除的数输出。
{intn;
for((24);
(25);
___(26)____)
{if(n%3==0)(27);
n);
23.以下程序用"
辗转相除法"
来求出两个正整数的最大公约数。
请填空.若两个数分别放在变量m和n中,求最大公约数的算法如下:
(1)将两数中大的那个放在m中,小的放在n中
(2)求出m被n除后的余数r
(3)若余数为0则执行步骤(7);
否则执行步骤(4)
(4)把除数作为新的被除数;
把余数作为新的除数
(5)求出新的余数r
(6)重复步骤(3)到(5)
(7)输出n,此时n即为最大公约数
stdio.h>
main()
{intr,m,n;
Enterm,n:
"
m,n);
%d,%d"
&
m,&
n);
if(m<
n)____(28)_____
r=____(29)___;
while(___(30)_____)
{m=___(31)___;
n=____(32)____;
r=____(33)____;
H.C.F=%d\n"
24.下面的函数是对一个数组的各元素值乘以2,(假设数组为int型),请填空。
voidsort(__(34)__)
{inti;
a[i]=a[i]*2;
return;
25、下面函数的功能是交换a,b指针所指向的值,请填空。
//此次考试不考
voidf(int*a,int*b)
{____(35)___;
t=*a;
*a=*b;
*b=t;
若函数f是如下写法,又该怎样修改,请填空。
{____(36)___;
*t=*a;
*b=*t;
26、下面函数实现将字符串s复制到字符串t。
voidf(char*s,char*t)
{while(___(37)___)
*t=_(38)__;
t++;
s++;
*t='
27、打印9×
9乘法表。
输出格式要求为:
1*1=1
2*1=22*2=4
3*1=33*2=63*3=9
………………
程序如下:
{intm,n;
for(m=1;
=9;
m++)
{for(n=1;
(39);
n++)
printf(“(40)”,m,n,m*n);
(41)
28.判断某个大于2的无符号整数是否素数。
判断无符号整数N是否素数的标准是:
除了1与N以外,N不能被任何一个整数所整除。
{intn,i,ext;
/*n表示输入数据,ext表示n是否素数的判断结论*/
ext=1;
scanf(“%d”,(42));
for(i=2;
i<
=n-1;
i++)
if(n%i==0)
{ext=(43);
(44)
if(ext!
printf(“YES”);
else
printf(“NO”);
(1)顺序结构、选择结构和循环结构
(2)程序中main函数(3)算法描述
(4)-32768~32767(5)单引号(6)\0(7)上面最近未匹配的if(8)非0
(9)while语句,do-while语句和for语句(10)&
(逻辑非)(11)break;
(12)2(13)从定义变量开始到本函数结束(14)声明部分
(15)宏定义、文件包含和条件编译(16)不能(17)字母,下划线和数字
(18)1/(float)(a*b)(19)for(;
=5;
i++){s=s+i;
}或for(;
6;
(20)&
a[i](21)continue;
(22)strlen(str1)(23)!
=(24)n=100(25)n<
200(26)n++(27)continue(28){r=m;
m=n;
n=r;
}(29)m%n(30)r!
=0(31)n(32)r(33)m%n(34)inta[],intn或int*a,intn(35)intt;
(36)intk;
int*t;
t=&
k;
(37)*s!
=’\0’(38)*s(39)n<
=m
(40)%d*%d=%d\t(41)printf("
\n"
(42)&
n(43)0(44)break;
三、读程序填空
1、现有C语言程序段
{intsum,i;
for(i=1;
=100;
{sum=0;
sum=sum+i;
printf(“sum=%d\n”,sum);
其输出是:
2、当从键盘键入abcedef(回车)时,下面的C程序段输出是:
#include<
try_me()
charc;
if((c=getchar())!
=‘\n’)
try_me();
putchar(c);
printf(“\n”);
try_me();
3、现有一个C语言计算的数学函数fib(n):
fib(intn)
switch(n){
case0:
return0;
case1:
return1;
default:
inti;
inta=0,b=1,result;
for(i=2;
i<
=n;
i++)
{
result=a+b;
a=b;
b=result;
}
returnresult;
该数学函数的表达式是
4、下面程序段的输出结果是:
func(intx)
{x=11;
{intx=13;
func(x);
x+x);
6.下面程序段的运行结果是:
{inti,j,k=0,m=0;
for(i=0;
2;
XX文库-让每个人平等地提升自我{for(j=0;
j<
3;
j++)
k++;
k=k-j;
m=i+j;
k=%d,n=%d\n"
k,m);
7.运行下面程序段:
{intnumber,digit,s=0;
number);
do
{digit=number%10;
number=(number-digit)/10;
s=s+digit;
}while(number!
=0);
s);
}
键盘输入值12345,输出结果为:
_____________
8.下面程序段的运行结果是:
longfunc(intx)
{longp;
if(x==0||x==1)return
(2);
p=x*func(x-1);
return(p);
{printf("
func(4));
9.下面程序段的运行结果是:
intx;
intsub(inty)
{intz;
x=x+1;
y=y+1;
z=x+y;
printf(“x=%d,y=%d,z=%d\n”,x,y,z);
returnz;
{inty,z;
x=10;
y=20;
z=30;
z=sub(y);
10.下面程序段的运行结果是:
{inti,s=0;
for(i=0;
10;
s=s+2;
printf(“%d”,s);
11.下面程序段的运行结果是:
{intn=3,a=1,b=1,c;
while(n<
=5)
{c=a+b;
a=b;
b=c;
n=n+1;
printf(“%d”,c);