南邮《高级程序设计语言(C)》练习册期末复习题.docx
南京邮电大学高等函授高级程序设计语言(C)综合练习习题与解答南京邮电大学继续教育学院2021年2月高级程序设计语言(C)综合练习注:此版本的综合练习册对应教材是(C程序设计,谭浩强主编,清华大学出版社,2017年7月第一版,ISBN9787302481447第一部分基础知识及最简单的程序设计一、填空题1、C语言中基本的数据类型有:、.2、C语言中普通整型变量的类型说明符为一,在内存中占一字节,有符号普通整型的数据范围是»3、整数-35在机内的补码表示为.4,执行下列语句inta=8;a+=a-=a*a;后,a的值是。5、有如下语句:charA=”】amastudent''该字符串的长度是,A3=_.6,符号”a”和出的区别是.7、所谓"指针"就是o“&"运算符的作用是o"*"运算符的作用是。8、有如下输入语句:SCanfra=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是。二、选择题1、设整型变量a为5,使b不为2的表达式是()。A.b=a2B.b=6-(-a)C.b=a%2D.b=a>372:12、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与()组成配对关系。A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if3、以下程序的输出结果是()intx=10,y=10;print11"%d%dn,x-,y);A.1010B.99C.910D.1094、设A为存放(短)整型的维数组,如果A的首地址为P,那么A中第i个元素的地址为(>.A.P+i*2B.P+(i-l)*2C.P+(i-l)D.P+i5、选出下列标识符中不是合法的标识符的是()。A.hot_doB.catlC._priD.2ab6、以下程序的输出结果是()。inta=5;floatx=3.14;a*(tE,-iA,);Printfc%fn",(float)a);A.62.00(X)00B.62.800000C.63.000000D.627、设有说明double(*pl)N;其中标识符Pl是()。A.N个指向double型变量的指针。B.指向N个double型变量的函数指针。C.一个指向由N个double型元素组成的-维数组的指针。D.具有N个指针元素的一维指针数组,每个元素都只能指向double型量。8、在C程序中有如下语句:char*func(intx,inty);它是()。A.对函数func的定义。B.对函数func的调用。C.对函数func的原型说明QD不合法的。9、以下程序的输出结果是()。charstr15=''hcllo!"Printf('i%dn",strlen(str);A.15B.14C.7D.610、分析以下程序的输出结果是()。main()inta=5,b=l,c;c=adds(a,b);Printfe%d'',c);c=adds(a,b);PrintfC%dn",c);intadds(intx,inty)staticintm=0,n=3;n*=+m;m=n%x+y+÷return(m);A.2,3B.2,2C.3,2D.2,411、下列描述中不正确的是()。A.字符型数组中可能存放字符串。B.可以对字符型数组进行整体输入、输出。C.可以对整型数组进行整体输入、输出。D.不能在赋值语句中通过赋值运算符“="对字符型数组进行整体赋值。12、以下程序的输出结果是()。#definef(x)x*xmain()inta=6,b=2,c;c=f(a)f(b);Printfct%dn",c);A.9B.6C.36D.1813、设有如下定义:intx=10,y=3,z;则语句Printf("%dnz=(x%y,xy);的输出结果是()。A.1B.0C.4D.314、定义如下变量和数组:inti;intx33=1,2,3,4,5,678,9;则语句for(i=0;i<3;i+)printf(,%d,',xi2-i);的输出结果是()。A.159B.147C.357D.36915、以下对二维数组a进行正确初始化的是()A.inta23=(l,2,3,4M5,6;B.inta3=1,2,3,4,5,6;C.inta2=1,2,3,456;D.inta2=1,2,3,4);16、两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是()。intx;scanf(,%d",x);if(x+>5)printf("%d'x);elsePrintf("%dn",x);A.7和5B.6和3C.7和4D.6和417、设有如下定义:Char*aa2=SbcdTABCD"则以下说法中正确的是(A)aa数组成元素的值分别是"abed"和ABCD"B)aa是指针变量,它指向含有两个数组元素的字符型-维数组C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D)aa数组的两个元素中各自存放了字符支和A的地址18、下列程序的输出结果是()。char*pl="abcd",*p2="ABCD",str50="xyz"strcpy(str+2,strcat(p1+2,p2+1);printf(,%s",str);A.xyabcABB.abcABzC.ABabczD.xycdBCD19、下列程序的输出结果是()。inta5=2,48J0,*P,*k;p=a;k=&p;printf(,%d",*(p+);Printf("%d"产*k);A.44B.22C24D.4620、不能把字符串:HeIIo!赋给数组b的语句是()。A.charb10='H',e,T,T,T;B.charb10;b="Hello!H;C.charb10;StrCPy(bJHcllo!");D.charb10=,Hello!,;三、读程序题1、floatf=3J415927;printf(wfc%f,%5.4f%3.3f,f,f,f);则程序的输出结果是O2、intx=6,y=7;Printfe%d,x+);Printfc%dn'',+÷y);程序的输出结果是O3、a=3;a+=(a<1)?a:1;PrintfC'%d",a);结果是4、for(a=l,b=l;a<=100;a+)if(b>=20)break;if(b%3=l)b+=3;continue;b-=5;程序的输出结果a的值为。5、inty=l,x,*p,a=2,4,6,8,10;p=&al;for(x=0;x<3;x+)y+=*(p÷x);Printf("%dn",y);程序的输出结果y的值是o四、程序填空题1、从键盘上输入10个数,求其平均值。main()(inti;floatf,sum;for(i=l,sum=0.0ji<ll;i+);jprintf(iiaverage=%fn,sum/10);)2、以下程序是建立一个名为mynic的文件,并把从键盘输入的字符存入该文件,当键盘上输入结束时关闭该文件。#include<stdio.h>main()FILE*fp;charc;=;doc=getchar();fputs(c,fp);while(c!=EOF);3、以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入请填空.main()floatx,amax,amin;scanf("%f',x);amax=x;amin=x;while()if(x>amax)amax=x;if()amin=x;scanf(,'%f,x);printf(,namax=%fnamin=%fnm,amax,amin);五、编程题I.三个整数a、b、C,由键盘输入,输出其中最大的一个数。2.输出19002000年中所有的闰年。每输出3个年号换-行。(判断闰年的条件为下面二者之一:能被4整除,但不能被100整除。或者能被400整除。)3.清编个函数intfun(inta),它的功能是:判断a是否是素数,若a是素数,返回1:若不是素数,返回0。A的值由主函数从键盘读入。4.有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。第二部分数组及简单指针1、C语言中普通整型变量的类型说明符为一,在内存中占一字节,有符号普通整型的数据范围是=2、C语言中基本的数据类型有:、。3、设整型变量n的值为2,执行语句"n+=n-=n*n"后,n的值是。4、共用体和结构体的定义格式类似,不同点是。5、有如下输入语句:SCanf(“a=%d,b=%d,c=%d”,&a、&b,&c);为使变量a的值为1,b的值为3,C的值为2,从键盘输入数据的正确形式应是。6、有语句:charA=rTamastudent"该字符串的长度是,A3=。7、符号"a"和言的区别o8、下列程序的输出结果是。intast(intx,inty,int*cp,int*dp)*cp=x+y;*dp=x-y;main()inta=4,b=3,c,d;ast(a,b,&c,&d);Printf("%d,%dnc,d);)二、选择题I、以下选项中属于C语言的数据类型是()。A.复合型B.双精度型C.逻辑型D.集合型2、以下说法中正确的是()。A.C语言程序总是从第-个的函数开始执行B.在C语言程序中,要调用的函数必须在main()函数中定义C.C语言程序总是从main()函数开始执行D.C语言程序中的main()函数必须放在程序的开始部分3、选出下列标识符中不是合法的标识符的是()。A.hot_doB.catlC._priD.2ab4、下列描述中不正确的是()。A,字符型数组中可能存放字符串。B、可以对字符型数组进行整体输入、输出。C、可以对整型数组进行整体输入、输出。D、不能在赋值语句中通过赋值运算符"=”对字符型数组进行整体赋值。5、定义:inta9,*p=a;并在以后的语句中未改变P的值,不能表示al地址的表达式为()A.p÷lB.a+1C.a÷+D.÷+p6、设有如下定义:intx=10,y=3,z;则语句PrintfC%dnz=(x%y,xy);的输出结果是()。A.1B.0C.4D.37、定义如下变量和数组:inti,x33=1,2,3,4,5,678,9;则下面语句for(i=0;i<3;i+)printf(,%d,xi2-i);的输出结果是()A.159B.147C357D3698、读出以下