C语言程序设计复习资料讲课讲稿Word格式.docx
《C语言程序设计复习资料讲课讲稿Word格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习资料讲课讲稿Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
C)(x<
2)&
&
(x>
=-2)&
4)&
(x<
8)D)(x>
-2)&
4)||(x<
8)&
2)
16、已知字母a的ASC||的十进制代码为97,则执行下列语句后输出为(C)。
Chara=‘a’;
a--;
printf(“%d,%c\n”,a+‘2’-‘0’,a+‘3’-‘0’);
A)a,cB)a—运算不合法,故有语法错误C)98,cD)格式描述和输出项不匹配,输出无定值
18、C语言中,逻辑“真”等价于(C)。
A)大于零的数B)大于零的整数C)非零的数D)非零的整数
19、下列语句中,符合语法的语句式(D)。
A)a+b=3B)a=7C)a=c+b+3=6;
D)a=8,b=a+7;
20、若x为float型变量,则以列程序段结果是(B)。
x=1234.6789;
printf(“%-2.1f”,x);
A)输出格式描述符的域宽度不够,不能输出B)输出为1234.7
C)输出为1234.6D)输出为-1234.6
21、下面函数的功能是(A)。
Intfunl(char*x)
{
char*y=x;
while(*y++);
return(y-x-1);
}
A)求字符串的长度B)比较两个字符串的大小C)将字符串x复制到字符串y
D)将字符串x连接到字符串y后面
22、指针变量a所指的字符串长度为(D)。
Char*a=”\n\”MyNameis\”ZhangLi\”\n”;
A)26B)27C)28D)23
23、若有以下说明和语句,则输出结果是(B)。
Char*sp=”\\\”\n”;
Printf(“%d”,strlen(sp));
A)6B)3C)5D)字符串中有非法自负,输出值不定
24、若有以下的说明语句,则对字符串中字符的不正确引用是(其中0<
=i<
6)(D).
Char*strp=“string”;
A)*strpB)*(strp+i)C)strp[i]D)strp
25、函数调用:
strcat(strcpy(str1,str2),str3)的功能是(C)。
A)将串str1复制到串str2中后再连接到串str3之后
B)将串str1连接到串str2之后再复制到串str3之后
C)将串str2复制到串str1中后再将串str3连接到串str1之后
D)将串str2连接到串str1之后再将串str1复制到串str3之后
26、若使用下述程序段将整数12和浮点数13.6分别赋给变量a和b,那么输入应该式(B)。
inta;
floatb;
scanf(“a=%d,b=%f”,&
a,&
b);
A)1213.6B)a=12,b=13.6C)12,13.6D)a=12b=13.6
27、对下面的程序说法正确的是(C)。
main()
{intx+3,y=0,z=0;
if(x=y+z)
printf(“****”);
else
printf(“####”);
}
A)有语法错误,不能通过编译B)输出为****C)输出为####D)通过编译,但是不能运行
28、下面程序的输出是(B)。
{
intx=10,y=3;
printf(“%d\n”,y=x%y);
A)0B)1C)3D)不确定的值
29、(D)是不正确的C语言赋值语句。
A)a=a+1;
B)i++;
C)a*=1,b=8;
D)a=3
30、C语言程序的三种基本程序是(A)。
A)顺序结构,选择结构,循环结构B)递归结构,循环结构,转移结构
C)嵌套结构,递归结构,顺序结构D)循环结构,转移结构,顺序结构
33、以下程序段(B)。
intx=1,y=4;
printf(x<
y?
”x=%d”:
”y=%d”,x,y);
A)输出控制格式错误B)输出:
x=1C)输出:
y=1D)输出:
y=4
34、为了避免嵌套的条件语句if-else的二义性,C语言规定:
else与(B)是正确的。
A)缩排位置相同的ifB)其之前最近的ifC)其之后ifD)同一行上的if
35、下列关于switch语句和break语句的结论中,只有(B)是正确的。
A)break语句是switch语句的一部分
B)在switch语句中可以根据需要使用或不使用break语句
C)在switch语句中必须使用break语句
D)以上三个结论有两个是正确的
36、设I和x都是int类型,则对于for循环语句for(i=0,x=0;
i<
9;
i++),下列哪句话正确(B)。
A)执行8次B)执行9次C)是无限循环D)循环体一次也不执行
40、char(*A)[5],则标识符A的意义时(B)。
A)A是一个指向有5个字符型元素的指针变量
B)A是一个有5个元素的一维数组,每个元素指向字符型的指针变量
C)A是一个指向字符型的函数的指针变量
D)A是一个有5个元素的一维数组,每个元素指向整型变量的指针变量
112、C语言程序的三种基本结构是(A)
A)顺序结构,选择结构,循环结构B)递归结构,循环结构,转移结构
1.下列合法的字符常量是(D)。
A.“f”B.xC.65D.‘\Xab’
2.下面那个是属于合法的标识符(C)
A.99B.1_sC.abD.@vb
3.在C语言中,要求参加运算的数必须是整数的运算符是(C)。
A./B.!
C.%D.==
4.现已定义整形变量inti=1;
后i的值为(B)。
A.1B.5C.6D.以上三个答案都不正确
5.下列语句的输出结果是(D)。
A.有语法错误不能通过编译B.3C.3.0D.3.000000
6.设C语言中,int类型数据占2个字节,则long类型数据占(D)个字节。
A.1B.2C.8D.4
7.现有表达式y=x<
1?
1:
10?
2:
3),如x=12,则y等于(C)
A.2B.1C.3D.0
8.定义a为整型,下列表达式a=3>
6的运行后,a的值为(A)。
A.0B.1C.3D.表达式错误
9.表达式a=3,a+1,a*a的值是(B)
A.2B.9C.16D.4
10.下列语句中,符合语法的语句式(D)。
A.a+b=3B.a=7C.a=c+b+3=6;
D.a=8,b=a+7;
在c中单精度数据类型的精度是几?
(C)
A.8B.6C.7D.5
5.在C语言中,用(B)表示逻辑值“真”。
A.1B.非0的数C.“a”D.‘\101’
6.表达式2.5+7%3*3(int)(2.5+4.7)%2/4的结果是(D)
A.2.4B.2.75C.3D.2.5
7.表达式!
4||3&
2的结果是(A)
A.1B.0C.4D.2
8.现有表达式y=x<
3),如x=5,则y等于(A)
A.2B.1C.3D.0
9.若变量已正确定义,语句“if(a>
b)k=0;
elsek=1;
”和其等价的是(D)
A.k=(a>
b)?
0B.k=a>
b;
C.k=a<
=b;
D.a<
=b?
0:
1;
10.设x=3,执行语句y=x++后,x、y分别等于(D)
A.3,3B.1,2C.3,4D.4,3
11.表达式a=3,a=a+1,a*a的值是(C)
A.2B.9C.16D.4
12.函数调用:
strcat(strcpy(str1,str2),str3)的功能是(C)。
A.将串str1复制到串str2中后再连接到串str3之后
B.将串str1连接到串str2之后再复制到串str3之后
C.将串str2复制到串str1中后再将串str3连接到串str1之后
D.将串str2连接到串str1之后再将串str1复制到串str3之后
13.break语句的作用是(B)
A.结束本次循环B.结束所有循环C.结束一条语句D.结束整个程序
14.下列程序的输出结果是(C)。
fun(inta,intb,intc)
{c=a*b;
main()
{intc=5;
fun(2,3,c);
printf(”%d\n”,c);
A.0B.5C.6D.无法确定
二、填空。
三、5.下述函数的功能是__将数组a的元素由小到大排序_____________________.
voidfunc(inta[],intn)
{inti,j;
for(i=1;
n;
i++)
{for(j=i;
j>
0&
a[j]<
a[j-1];
j--)
{intt=a[j];
a[j]=a[j-1];
a[j-1]=t;
8.一个C源程序中至少应包括一个main()函数______。
9.在一个C源程序中,注释部分两侧的分界符分别为__/*___和__*/___。
10.在C语言中,输入操作是由库函数_scanf___完成的,输出操作是由库函数_printf____完成的。
11.经过下述赋植后,变量X的数据类型是_整型int______。
Intx=2;
Doubley;
Y=(int)(float)x;
12.C语言的基本数据类型分别为__整_int___型、_字符_char____型、_实float_____型。
13.若a、b和c均是int类型变量,则执行下面表达式后,a值为___6_____,b值为___4____,c值为___2____。
a=(b=4)+(c=2)
14.若a是int型变量,则执行下面表达式后,a的值为___2___。
a=25/3%3
15.若x和n均是int型变量,且x和n的初值均为5,则执行下面表达式后,x的值为__10___,n的值为___6____。
x+=n++
16.若有定义:
iloata=2.5,cntb=7;
f=4.7;
则执行下面表达式的值为__5.5____。
a+(int)(b/3*(int)(a+c)/2)%4
17.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为_8.000000________。
18.若有定义:
inte=1,f=4,g=2;
floatm=10.5,n=4.0,k;
则执行赋值表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后,k的值为___13.700000___________。
19.表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为____int整型___________。
20.表达式pow(2.8,sqrt(double(x)))值的数据类型为__double双精度_____。
21.若s是int型变量,且s=6,则下面表达式的值为______1_______。
s%2+(s+1)%2
22.若a是int型变量,则下面表达式的值为____26_________。
(a=4*5,a*2),a+6
23.若x和a均是int型变量,则执行表达式
(1)后的x值为___12____,执行表达式
(2)后的x值为_____4________。
(1)x=(a=4,6*2)
(2)x=a=4,6*2
?
24.若有以下定义,则执行表达式y+=y-=m*=y后,y的值为_____-16________
intm=5,y=2;
25.设C语言中,一个int型数据在内存中占两个字节,则int型数据的取值范围为-32768---32767
数组名中存放的是一个地址常量,它代表___数组的首地址_____。
2.表示“x≥y≥z”的C语言表达式是_(x>
=y&
y>
=z)________。
3.设ch是字符型变量,判断ch为英文字母的c语言表达式是:
(ch>
=’A’&
ch<
=’Z’)||(ch>
=’a’&
=’z’)。
4.已知inta[10];
int*px=a,*py=&
a[3];
那么py与px相隔___6______个字节。
5.If语句中if总是和__最近_______else匹配。
6.从函数的参数来分函数分为_有参函数________、__无参函数______。
7.调用函数时,函数名称必须与__被调用函数____________名称完全一致。
8.形参变量只有在___调用_______时,才分配内存单元。
__调用结束_______时,即刻释放所分配的内存单元。
7.在x值处于-2到2,4到8时值为“真”,否则为“假”的表达式是__(x>
=-2&
x<
=2)||(x>
=4&
=8)__________。
8.下面函数的功能是___求字符串的长度________________。
。
9.设I和x都是int类型,则对于for循环语句for(i=0,x=0;
i++)执行了___9____次。
10.在C语言中,逻辑值“真”用__非0的数____________来表示。
四、程序运行结果
1.下列程序输出的结果是11,13,14,16,17,19,20。
Main()
{intn;
for(n=10;
n<
=20;
n++)
{if(n%3==0)
Continue;
Printf(“%d”,n);
2.下列程序段的输出是______5_________。
#definef(a,b,x)a*x+b
printf("
%d"
f(3,2,1));
3.#include<
stdio.h>
#defineM3
#defineNM+1
printf(“%d\n”,N);
4.main()
{intarray[5]={2,4,6,810};
int*pointer=array;
printf(”%d”,array[0]);
printf(”%d”,*(array+1));
printf(”%d”,*(pointer+2));
printf(”%d”,*(pioter++));
四、程序分析(23分)
2.下面程序的功能是什么?
#include“stdio.h”
inta,b,c,temp;
printf(“\n请输入三个数:
”);
scanf(“%d%d%d”,&
b,&
c);
printf(“a=%d,b=%d,c=%d”,a,b,c);
temp=a;
a=c;
c=b;
b=temp;
printf(“\n交换之后a=%d,b=%d,c=%d”,a,b,c);
3.下面程序的功能是什么?
#include<
prime(inta)
inte,i,yes;
yes=1;
e=a/2;
i=2;
while((i<
=e)&
yes)
if((a%i)==0)yes=0;
elsei++;
returnyes;
intx;
printf(“输入一个整数给:
scanf(“%d”,&
x);
if(prime(x))printf(“YES\n”);
elseprintf(“No\n”);
4.下列程序的输出结果是(C)。
#include<
voidfun();
voidmain()
intx=1;
if(x==1)
intx=2;
printf(“%d”,++x);
voidfun()
printf(“%d”,x++);
A)2,1,1B)1,2,1C)2,2,2D)2,2,1
5.以下程序的输出结果是(C)。
char*a[][5]={“how”,”do”,”you”,”do”,”!
”};
char**p;
inti;
p=a;
for(i=0;
4;
printf(“%s”,p[i]);
A)howdoyoudo!
B)howC)howdoyoudoD)hdyd
6.下述程序的输出结果为(D)。
#include<
voidmain()
inta[5]={2,4,6,8,10};
int*p=a,**q=&
p;
printf(“d%,”,*(p++));
printf(“%d”,**q);
A)4,4B)2,2C)4,5D)2,4
五、程序填空。
(27分)
1.下面程序是求100—200间的全部素数。
{
(1)intprime(intn);
for(m=101;
m<
=200;
m=m+2)
if(
(2)prime(m))
{printf(“%d”,m);
intprime(intn)/*判断n是否为素数*/
{intflag=1,i;
for(i=2;
n/2&
flag==1;
if(n%i==0)
flag=0;
return(__(3)_flag__);
3.下述函数将字符串转换成整数。
字符串中允许出现前导空格符、换行符和制表符,除此之外的其他非数字字符开头作0处理。
此外,若字符串中出现非数字字符,则终止字符串的转换。
voidstoa(char*s,long*a)
{inti=0,sign=______
(1)__1____;
while(s[i]==’’‖s[i]==’\t’)
i++;
if(s[i]==’+’‖s[i]==’—’)
{sing=s[i]==’+’?
1:
—1;
____
(2)_i++_;
for(*a=0;
_(3)s[i]>
=’0’&
s[i]<
=’9’__;
I++)
*a=___(4)sign__;
*a*=sign;
4.本程序用改进的气泡排序法对数组a的元素从小到大排序。
voidbubble(inta[],intn)
{intj,k,jmax,temp;
jmax=____
(1)_n-1_____;
do
{k=__
(2)__0______;
for(j=0;
j<
jmax;
j++)
if(a[j]>
a[j+1])
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
k=__(3)___j__________;
jmax=__(4)___k_____;
}while(jmax>
0);
4、程序分析
(1)程序有错误么?
如有,请给予改正。
并写出程序运行结果。
(5分)
(2)指出哪些变量属于局部变量,哪些变量属于全局变量?
同时给出给各变量的作用范围(用行号表示)。
1.ints1,s3,v;
2.intvs(inta,intb,intc)
3.{intk;
4.k=a*b*c;
s1=a*b;
s2=b*c;
s3=a*c;
5.returnk;
6.}
7.ints2;
8.main()
9.{intl,w,h;
10.l=3;
w=2;
h=5;
11.v=vs(l,w,h);
12.printf("
v=%d,s1=%d,s2=%d,s3=%d\n"
v,s1,s2,s3);
13.}
(1)程序有错误,改正:
第3行与第4行之间插入语句externints2;
程序运行结果:
30,6,10,15。
(2)局部变量:
a,b,c,k,l,w,h,它们的作用范围只在自己函数内,全局变量:
s1,s3,v,s2;
其中s1,s3,v的作用范围为1—13,s2的作用范围为7—13。
(2)下面程序的功能是什么?
对三个数排序
#