华立C语言期末复习资料.docx
《华立C语言期末复习资料.docx》由会员分享,可在线阅读,更多相关《华立C语言期末复习资料.docx(16页珍藏版)》请在冰豆网上搜索。
华立C语言期末复习资料
12C语言期末考试复习资料
一选择题
1.C语言源程序的基本单位是()。
A过程B函数C子程序D标识符
2.下列程序的输出结果是()。
main()
{inta=7,b=5;
printf("%d\n",b=b/a);
}
A5B1C0D不确定值
3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?
a++:
b++,a+b)的值是()。
A7B8C9D2
4、C程序的执行特点是
A、从程序的main函数开始,到程序的最后一个函数结束
B、从程序的第一个函数开始,到程序的最后一个函数结束
C、从程序的main函数开始,到程序的main函数结束
D、从程序的第一个函数开始,到程序的main函数结束
5、字符型(char)数据在微机内存中的存储形式是________
A、EBCDIC码B、ASCII码C、补码D、反码
6、以下不合法的用户标识符是
A、W32_KERB、doubleC、ASA4D、_10_
7.设a为int型变量,执行下列赋值语句后,a的取值分别是()。
a=125.534;a=(int)125.521%4;a=5<<2;
A125,31,1B125,1,20C125,31,20D125.534,2,20
8.设有如下程序段,下面描述中正确的是()。
intk=10;while(k=0)k=k-1;
A循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次
9.以下程序的输出结果为()。
inti;
voidprt()
{for(i=5;i<8;i++)printf("%c",'*');
printf("\t");
}
main()
{for(i=5;i<=8;i++)prt();
}
A***B************C******D***
10、设a=9,b=6,c=7,d=10,m=4,n=4,执行(m==a>b)&&(n==c>d)后n的值为________A、2B、3C、1D、0
11、表达式2.6-5/2+1.4+7%2的值是
A、4.3B、4.8C、3.3D、3
12、在以下一组运算符中,优先级最高的运算符是________
A、&&B、=C、<=D、!
13..在C语言程序中,以下说法正确的是( )。
A函数的定义可以嵌套,但函数的调用不可以嵌套
B函数的定义不可以嵌套,但函数的调用可以嵌套
C函数的定义和函数的调用都不可以嵌套
D函数的定义和函数的调用都可以嵌套
14.以下函数调用语句中含有()个实参。
func((e1,e2),(e3,e4,e5));
A2B3C5D语法错误
15.以下程序的输出结果为()。
#defineADD(x)x*x
main()
{inta=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d);
}
Ad=70Bd=80Cd=140Dd=700
/*a+b*a+b*c
=4+6*4+6*7
*/
16、设有以下定义
inta=0;
doubleb=1.25;
charc=’E’;
#defineW2
则下面语句中错误的是
A、a++B、b++C、c++D、W++
17、设有定义:
inta, int*pa=&a;
以下scanf函数语句中能正确为变量a读入数据的是
A、scanf(”%d”,a);B、scanf(”%d”,a);
C、scanf(”%d”,&a);D、scanf(”%d”,*a);
18、假定所有变量均已正确说明,下列程序段运行后x的值是________
inta,b,c,x;
a=b=0;x=35;
if(b)
x=3;
else
x=4;
A、35B、4C、34D、3
19.已知职工记录描述如下,在TurboC中,系统为变量w分配()字节的空间。
structworker
{intno;
charname[20];
charsex;
union
{intday;intmonth;intyear;}birth;
}w;
A29B20C25D6
20.设有以下定义,值为5的枚举常量是()。
enumweek{sun,mon=4,tue,wed,thu,fri,sat}w;
AtueBsatCfriDthu
21.下面选项中正确的赋值语句是(设chara[5],*p=a;)()。
Ap="abcd";Ba="abcd";C*p="abcd";D*a="abcd";
22.设有以下程序段,则值为6的表达式是()。
structst{intn;structst*next;};
staticstructsta[3]={5,&a[1],7,&a[2],9,0},*p;
p=&a[0];
Ap++->nB++p->nCp->n++D(*p).n++
23、指向某变量的指针,其含义是指向该变量的
A、值B、地址C、名D、一个标志
24、设变量c为char类型,能正确判断出c为小写字母的表达式是
A、’a’<=c<=’z’B、(c>=’a’)||(c<=’z’)
C、(c.>=’a’)&&(c<=’z’)D、以上都不是
25、循环语句while和do-while的主要区别是
A、do-while循环体至少要无条件执行一次,while循环体可以一次都不执行
B、while的循环控制条件比do-while的循环控制条件更严格
C、do-while允许从外部跳转到循环体内
D、do-while的循环体不能是复合语句
26、当执行以下程序段时
x=8;
do{x=x*x;}while(!
x);
A、循环体将执行一次B、循环体将执行两次
C、循环体将执行无限次D、系统将提示有语法错误
27、设有定义:
inta[10];以下对a数组元素正确引用的是
A、a[10]B、a[3,5]C、a(5)D、a[10-10]
28、若用数组名作为函数的实参,传递给形参的是
A、数组的首地址B、数组第一个元素的值
C、数组中全部元素的值D、数组元素的个数
29、C语言允许函数类型缺省定义,此时函数值隐含的类型是
A、floatB、intC、longD、double
30、若有语句:
char *line[5];,以下叙述中正确的是
A)定义line是一个数组,每个数组元素是一个基本类型为char的指针变量
B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C)定义line是一个指针数组,语句中的*号称为间址运算符
D)定义line是一个指向字符型函数的指针
31、若有定义“intx[5]={1,2,3,4,6};int*p=&x[1];”,则以下表达式中值为4的是
A)*(p+2)
B)*(p+1)
C)p+1
D)*p+2
32、下列字符数组初始化语句中,正确的是
A)charc[3][11]={"China","Guanzhou","University"};
B)charc[4][10]={"China","Guanzhou","University"};
C)charc[3][10]={"China","Guanzhou","University"};
D)charc[4][11]={"China,Guanzhou,University"};
33、有以下程序
voidmain()
{inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3];int*q=p+2;
printf("%d\n",*p+*q);
}
程序运行后的输出结果是
A)16B)10C)8D)6
34、[多选题]以下程序段执行后,a的值为1的是
A)inta=0,b=1,c;b=c;b=a;c=a;
B)inta=0,b=1;a=a+b;b=a-b;a=a-b;
C)inta=0,b=1,c;c=a;a=b;b=c;
D)inta=0,b=1,c;c=a;b=a;b=c;
35、[多选题]以下叙述中正确的是
A)在一个函数内定义的变量只在本函数范围内有效
B)在不同的函数中可以使用相同名字的变量
C)在一个函数内的复合语句中定义的变量在本函数范围内有效
D)函数中的形式参数是局部变量
36、[多选题]以下不能对数组a进行正确初始化的语句是
A)inta[]={};
B)inta[4]={1,2,3};
C)inta[6]={0,1,2,3,4};
D)inta[]={1};
37、[多选题]下述对C语言字符数组的描述正确的是
A)不可以用关系运算符对字符数组中的字符串进行比较
B)字符数组可以存放字符串
C)字符数组中的字符串可以整体输入、输出
D)可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
二、填空题
1、在C语言中没有逻辑型数据,以______代表”真”,以_____代表”假”。
2、设x、y、z和k都是int型变量,则执行表达式x=(y=40,z=13,k=48)后,x的值为____________。
3、C的字符常量是用______________括起来的一个ASCII码字符。
4、能正确表示a和b同时为正或同时为负的表达式是__________________。
5、设x=4.5,a=7,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是______________。
6、C语言程序设计的基本单位是。
7、下面程序段中while循环语句执行次。
n=11;
while(n=0)++n;
8、设二进制x的值是11001101,y的值是00001111,可通过运算,使得x中的低4位不变,高4位清零。
9、有以下语句段:
intn1=15,n2=30;
printf(’’”,n1,n2);
要求按以下格式输出n1,n2的值,每个输出行从第一列开始,请填空。
n1=15
n2=30
10、设intb=3;则表达式b<<2的值是。
11.有一个3*4矩阵,求其中的最大元素。
max_value(
(1))
{inti,j,max;
max=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(array[i][j]>max)
max=array[i][j];
(2);
}
main()
{inta[3][4],i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
(3);
printf(“maxvalueis%d\n”,max_value(a));
}
12.输入x、y两个整数,按先大后小的顺序输出x、y。
#include“stdio.h”
main()
{intx,y,*px,*py,(4);
scanf(“%d%d”,&x,&y);
(5);(6);
if(x{p=px;px=py;py=p;}
printf(“x=%d,y=%d\n”,x,y);
printf(“MAX=%d,MIN=%d\n”,*px,*py);
}
三、阅读程序,写结果
1、以下主程序的输出结果是。
voidmain()
{inta[]={1,2,3,4,5,6},*p,**q;
p=a;q=&p;
printf(“%d,%d\n”,*(p++),**q);}
2、以下函数与主程序
voidswap(char*x,char*y)
{chart;
t=*x;
*x=*y;
*y=t;}
voidmain()
{char*s1="abc",*s2="123";
swap(s1,s2);printf("%s,%s\n",s1,s2);}
程序执行后的输出结果是。
3.floataverage(floatarray[10])
{inti;
floataver,sum=array[0];
for(i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10;
return(aver);
}
main()
{floatscore[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver;
inti;
aver=average(score);
printf(“averagescoreis%5.2f\n”,aver);
}程序执行后的输出结果是。
4.main()
{chara[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a,**pa;
for(p=0;pprintf(“%2c”,*p);
printf(“\n”);
printf(“%2c\n”,**(pa=&p));
}程序执行后的输出结果是。
5、以下程序的输出结果是。
voidmain()
{inta[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i++)s+=a[i][i];
printf("%d\n",s);}
}
6、以下程序运行后的输出结果是。
voidmain()
{inta=1,b=2,c=3;
if(c=a)printf("%d\n",c);
elseprintf("%d\n",b);
}
7、以下程序段的运行结果是。
inti=1;
do
{if(i++%2){printf("@");continue;}
printf("*");
}while(i<6);
8、有下列程序:
#include
#include
voidfun(chars[][10],intn)
{chart;inti,j;
for(i=0;ifor(j=i+1;jif(s[i][0]>s[j][0]){t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;}}
voidmain()
{charss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc"};
fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序执行后的输出结果是。
9.main()
{inta=012,b=0x12,k=12;
charc=‘\102’,d=‘\r’;
printf(“a=%d\tb=%d\tk=%d\n”,a,b,k);
printf(“c=%c,d=%c%o\n”,c,d,a);
a=‘A’;c=49;
printf(“a=%d\tc=%c\n”,a,c);
}程序执行后的输出结果是。
10、下列程序
#include
#include
char*fun(char*t)
{char*p=t;
return(p+strlen(t)/2);}
voidmain()
{char*str="abcdefgh";
str=fun(str);
puts(str);}程序执行后的输出结果是。
11.main()
{inta,b,s=0;
for(a=1,b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1)
{ b+=3;continue;}
b-=5;
}
printf(“a=%d\tb=%d\n”,a,b);
}程序执行后的输出结果是。
12.main()
{printf(“main():
%d\n”,fact(5));
fact(-5);
}
fact(intvalue)
{intf;
if(value<0)
{printf(“Argerror\n");
return(-1);
}
elseif(value==1||value==0)f=1;
elsef=value*fact(value-1)+1;
printf(“Thiscalledvalue=%d\n”,f);
returnf;
}程序执行后的输出结果是。
4、程序填空题
1.百马百担问题:
有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?
main()
{inthb,hm,hl,n=0;
for(hb=0;hb<=100;hb+=
(1))
for(hm=0;hm<=100-hb;hm+=
(2))
{hl=100-hb-(3);
if(hb/3+hm/2+2*(3)==100)
{n++;
printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl);
}
}
printf("n=%d\n",n);
}
2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。
#defineN10
charstr[N];
main()
{inti,flag;
for(flag=1;flag==1;)
{scanf("%s",str);
flag=0;
printf("\n");
}
sort(___(4)___);
for(i=0;iprintf("%c",str[i]);
printf("\n");
}
sort(charstr[N])
{inti,j;
chart;
for(j=1;jfor(i=0;(i='\0');i++)
if(str[i]>str[i+1])
{t=str[i];
____(5)____;
____(6)____;
}
}
3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。
(本程序中二阶矩阵用一维数组来表示。
)
例如,矩阵为:
3003
2573
1042
则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。
add(intm,intn,intarr[])
{inti,j,sum=0;
for(i=0;ifor(j=0;jsum=sum+(7);
for(j=0;jfor(i=1;(8);i++)
sum=sum+arr[i*n+j];
return(sum);
}
4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。
#defineN10
main()
{voidmaxmin(intarr[],int*pt1,int*pt2,intn);
intarray[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;
p1=&a;p2=&b;
maxmin(array,p1,p2,N);
printf("max=%d,min=%d",a,b);
}
voidmaxmin(intarr[],int*pt1,int*pt2,intn)
{inti;
*pt1=*pt2=arr[0];
for(i=1;i{if(arr[i]>*pt1)(9);
if(arr[i]<*pt2)(10);
}
}
5、以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。
当给a、b、c输入三角形三条边长时,确定a、b、c能构成三角形的条件是要同时满足三个条件:
a+b>c,a+c>b,b+c>a。
请将程序补充完整。
voidmain()
{floata,b,c;
scanf("%f%f%f",&a,&b,&c);
if()printf("YES\n");/*a、b、c能构成三角形*/
elseprintf("NO\n");/*a、b、c不能构成三角形*/
}
6、输出1~5行和1~10列的乘法表。
请将程序补充完整。
voidmain()
{introws,cols;
for(rows=1;rows<=5;rows++)
{for(cols=1;cols<=10;cols++)
printf(“%-4d”,____________);
printf(“\n”);
}
7、将一字符数组中的字符串拷贝到另一字符数组中。
请填空。
voidmain()
{charstr1[15],str2[]=”CLanguage”;
strcpy(_______,_______);
puts(str1);
printf(“\n”);
}
8、程序中,其max()函数的功能是将键盘输入的两个整型数据,输出大者。
要求函数有返回值。
请将以下程序中该函数的声明补充完整。
#include
voidmain()
{intx,y,z;
__________________;
printf(“Inputx,y:
”);
scanf(“%d,%d”,&x,&y);
z=max(x,y);
printf(“max=%d\n”,z);
}
_____max(inta,intb)
{if(a>b)return(a);
elsereturn(b);
}
五、编程题
12C语言复习资料题目参考答案
一、选择题。
1
2
3
4
5
6
7
8
9
10
B
C
B
C
B
B