程序设计基础练习题.docx
《程序设计基础练习题.docx》由会员分享,可在线阅读,更多相关《程序设计基础练习题.docx(59页珍藏版)》请在冰点文库上搜索。
程序设计基础练习题
《程序设计基础》习题集
计算机科学与技术系
第一章程序设计概论
一、选择题
1.一个C程序的执行是从()
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序文件的第一个函数开始,到本程序main函数结束
D.本程序的main函数开始,到本程序文件的最后一个函数结束
2.下列关于C语言注释的叙述中错误的是()
A.以“/*”开头并以“*/”结尾的字符串为C语言的注释符
B.注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义
C.程序编译时,不对注释作任何处理
D.程序编译时,需要对注释进行处理
3.下列不是C语言的分隔符的是()
A.逗号B.空格C.制表符D.双引号
4.在VisualC++6.0环境下,C源程序文件名的默认后缀是()
A..cppB..exeC..objD..dsp
5.若在当前目录下新建一个名为“LX”的工程,则在当前目录下生成的工作区文件名为()
A.LX.DSWB.LX.OPTC..LX.DSPD.LX.C
二、问答题
1.简述程序的概念
2.简述算法的概念。
3.简述程序设计的一般方法和过程。
4.程序设计的表示方法有哪些?
5.请用程序流程图设计出求n!
的算法。
第二章程序设计的基本要素
一、选择题
1.以下叙述不正确的是()
A.一个C源程序必须包含一个main函数
B.一个C源程序可由一个或多个函数组成
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
2.以下叙述正确的是()
A.在对一个C程序进行编译的过程中,可发现注释中的拼写错误
B.在C程序中,main函数必须位于程序的最前面
C.C语言本身没有输入输出语句
D.C程序的每行中只能写一条语句
3.一个C语言程序是由()
A.一个主程序和若干个子程序组成B.函数组成
C.若干过程组成D.若干子程序组成
4.下列四组选项中,均不是C语言关键字的选项是()
A.defineIFtype
B.getccharprintf
C.includecasescanf
D.whilegopow
5.下列四组选项中,均是不合法的用户标识符的选项是()
A.WP_0do
B.b-agotoint
C.floatla0_A
D.-123abcTEMP
6.下列四组选项中,均是合法转义字符的选项是()
A.‘\”’‘\\’‘\n’
B.‘\’‘\017’‘\”’
C.‘\018’‘\f’‘xab’
D.‘\\0’‘\101’‘xlf’
7.所有C函数的结构都包括的三部分是()
A.语句、花括号和函数体B.函数名、语句和函数体
C.函数名、形式参数和函数体D.形式参数、语句和函数体
8.C语言程序由()组成
A.子程序B.主程序和子程序C.函数D.过程
9.下面属于C语言标识符的是()
A.2abB.@fC.?
bD._a12
10.C语言中主函数的个数是()
A.2个B.1个C.任意个D.10个
11.下列关于C语言注释的叙述中错误的是()
A.以“/*”开头并以“*/”结尾的字符串为C语言的注释符
B.注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义
C.程序编译时,不对注释作任何处理
D.程序编译时,需要对注释进行处理
12.下列不是C语言的分隔符的是()
A.逗号B.空格C.制表符D.双引号
二、填空题
1.C程序是由构成的,一个C程序中至少包含。
因此,是C程序的基本单位。
2.C程序注释是由和所界定的文字信息组成的。
3.开发一个C程序要经过编辑、编译、和运行四个步骤。
4.在C语言中,包含头文件的预处理命令以开头。
5.在C语言中,主函数名是。
三、程序设计题
1.编写程序输出以下的图案
*
*S*
*
2.试编写一个C程序,输出如下信息。
*****************
Yourarewelcome!
*****************
第三章简单数据类型与变量
一、选择题
1.关于C语言数据类型的叙述,正确的是()。
A.枚举类型不是基本类型B.数组不是构造类型
C.变量必须先定义后使用D.不允许使用空类型
2.下面关于C语言用户标识符的描述,正确的是()。
A.不区分大小写B.用户标识符不能描述常量
C.类型名也是用户标识符D.用户标识符可以作为变量名
3.以下叙述不正确的是()
A.在C程序中,逗号运算符的优先级最低
B.在C程序中,MAX和max是两个不同的变量
C.若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,二b中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
4.以下()是正确的变量名。
A.5fB.ifC.f.5D._f5
5.以下()是正确的常量。
A.E-5B.1E5.1C.'a12'D.32766L
6.若有说明语句:
charc='\95';则变量c包含()个字符。
A.1B.2C.3D.语法错误
7.语句x=(a=3,b=++a);运行后,x、a、b的值依次为()。
A.3,3,4B.4,4,3C.4,4,4D.3,4,3
8.语句a=(3/4)+3%2;运行后,a的值为()。
A.0B.1C.2D.3
9.char型变量存放的是()。
A.ASCII代码值B.字符本身C.十进制代码值D.十六进制代码值
10.以下叙述正确的是()
A.在C程序中,每行只能写一条语句
B.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C.在C程序中,%是只能用于整数运算的运算符
D.在C程序中,无论是整数还是实数,都能被准确无误地表示
11.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为()
A.DB.68C.不确定的值D.C
12.sizeof(float)是()
A.一个双精度型表达式B.一个整型表达式
C.一种函数表达式D.一个不合法的表达式
13.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为()
A.0~255B.0~32767C.0~65535D.0~2147483647
14.设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为()
A.floatB.charC.intD.double
15.设以下变量均为int类型,则值不等于7的表达式是()
A.(x=y=6,x+y,x+1)B.(x=y=6,x+y,y+1)
C.(x=6,x+1,y=6,x+y)D.(y=6,y+1,x=y,x+1)
16.变量的指针,其含义是指该变量的()
A.值B.地址C.名D.一个标志
17.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是()
A.a,point,*&aB.&*a,&a,*point
C.*&point,*point,&aD.&a,&*point,point
18.若有说明;int*p,m=5,n;以下正确的程序段的是()
A.p=&n;B.p=&n;
scanf("%d",&p);scanf("%d",*p);
C.scanf("%d",&n);D.p=&n;
*p=n;*p=m;
二、填空题
1.设a为short型变量,描述“a是奇数”的表达式是___________________。
2.若有以下定义,则计算表达式y+=y-=m*=y后的y值是___________。
intm=5,y=2;
3.若a是int型变量,则下面表达式的值为_____。
(a=4*5,a*2),a+6
4.若有定义:
floatx=3.5;intz=8;则表达式x+z%3/4的值为______________。
5.若x和a均是int型变量,则计算表达式
(1)后的x值为_____,计算表达式
(2)后的x值为_____。
(1)x=(a=4,6*2)
(2)x=a=4,6*2__________。
6.若有定义:
inta=2,b=3;floatx=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是_____。
7.若有定义:
intb=7;floata=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是____________。
8.以下的输出结果是________________________。
#include
voidmain()
{shorti;
i=-4;
printf(“\ni:
dec=%d,oct=%o,hex=%x,unsigned=%u\n”,i,i,i,i);
}
9.以下的输出结果是_______________。
#include
voidmain()
{charc=‘x’;
printf(“c:
dec=%d,oct=%o,hex=%x,ASCII=%c\n”,c,c,c,c);
}
10.以下的输出结果是_____________________。
#include
voidmain()
{intx=1,y=2;
printf(“x=%dy=%d*sum*=%d\n”,x,y,x+y);
printf(“10Squaredis:
%d\n”,10*10);
}
11.假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空。
a+=_____;b=a-_______;a-=_______;
12.若x为int型变量,则执行以下语句后的x值为_______。
x=7;
x+=x-=x+x;
z=m=0xFFFF
13.有一输入语句scanf(“%d”,k);则不能使float类型变量k得到正确数值的原因是____________________和____________________。
三、程序设计题
1.已知圆半径的r=2.5,圆柱高h=1.8,求圆周长,圆柱体积。
2.要将“China”译成密码,译码规律是:
用原来字母后面的第4个字母代替原来的字母。
例如,字母”A”后面第4个字母是”E”,用”E”代替”A”。
因此,”China”应译为”Glmre”。
请编写1程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、c3、c4、c5分别变为‘G’、‘l’、‘m’、‘r’、‘e’、,并输出。
(1)输入事先已编好的程序,并运行该程序。
分析是否符合要求。
(2)改变c1、c2、c3、c4、c5、的初值为:
‘T’、‘o’、‘d’、‘a’、‘y’,对译码规律作如下补充:
‘W’用‘A’代替,‘X’用‘B’代替,‘Y’用‘C’代替,‘Z’用‘D’代替。
修改程序并运行。
(3)将译码规律修改为:
将字母用它前面的第4个字母代替,例如:
‘E’用‘A’代替,‘Z’用‘U’代替,‘D’用‘Z’代替,‘C’用‘Y’代替,‘B’用‘X’代替,‘A’用‘V’代替。
修改程序并运行。
3.输入秒数,将它按小时、分钟、秒的形式来输出。
例如输入24680秒,则输出6小时51分20秒。
4.求前驱字符和后继字符。
输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值,按从大到小的顺序输出这三个字符及其对应的ASCII码值。
第四章逻辑表达与流程控制
一、选择题
1.逻辑运算符两侧运算对象三数据类型()。
A.只能是0和1B.只能是0或非0正数
C.只能是整型或字符型数据D.可以是任何类型的数据
2.判断char型变量ch是否为大写字母的正确表达式是()。
A.‘A’<=ch<=‘Z’B.(ch>=‘A’)&(ch<=‘Z’)
C.(ch>=‘A’)&&(ch<=‘Z’)D.(‘A’<=ch)AND(‘Z’>=ch)
3.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是()。
A.A%2==1B.!
(A%2==0)C.!
(A%2)D.A%2
4.设有:
inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为()。
A.1B.2C.3D.4
5.以下程序的运行结果是()。
#include
voidmain()
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d”,a,b);
}
A.6,1B.2,1C.6,0D.2,0
6.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是()。
if(x>y)z=x;x=y;y=z;
A.x=10,y=20,z=30B.x=20,y=30,z=30
C.x=20,y=30,z=10D.x=20,y=30,z=20
7.以下程序的运行结果是()。
#include
voidmain()
{intm=5;
if(m++>5)
printf(“%d\n”,m);
else;
printf(“%d\n”,m--);
}
A.4B.5C.6D.7
8.若运行时给变量x输入12,则以下程序的运行结果是()。
#include
voidmain()
{intx,y;
scanf(“%d”,&x);
y=x>12?
x+10:
x-12;
printf(“%d\n”,y);
}
A.4B.3C.2D.1
二、填空题
1.若有定义:
inta=5,b=2,c=1;则表达式a-b2.已知charc=’A’;inti=1;j=0;执行语句j=!
c&&i++后,i和j的值分别是____和_____。
3.若有定义:
inta=1,b=2,c=3,d=4,x=5,y=6;则表达式(x=a>b)&&(y=c>d)的值为___________。
4.有如下程序
#include
voidmain()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec++;
printf("%d\n",c);
}
该程序的输出结果是___________
5.以下程序判断输入的整数能否被3或7整除。
将程序补充完整。
#include
voidmain()
{intx,f=0;
scanf(“%d”,&x);
if_________
________
if(f==1)printf(“YES\n”);
elseprintf(“NO\n”);
}
6.阅读以下程序,若输入60,程序运行结果是__________________。
#include
voidmain()
{intx;
scanf("%d",&x);
if(x>=60)
printf("pass");
else
printf("fail");
}
三、程序设计题
1.输入1个整数,输出它的绝对值。
2.编程实现:
输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。
3.编程判断输入的正整数是是否既是5又是7的整倍数。
若是,则输出yes;否则输出no。
4.用switch编程实现:
「-1(x<0)
y=│ 0(x=0)
└ 1(X>0)
5.输入某个点A的平面坐标(x,y),判断(输出)A点是在圆内、圆外还是在圆周上,其中圆心坐标为(2,2),半径为1。
6.用switch语句编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩,设:
90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’
第五章逻辑表达与流程控制
(2)
一、选择题
1.设有程序段
intk=10;
while(k=0)k=k-1;
这下面描述中正确的是()
A.while循环执行10次C.循环是无限循环
C.循环体语句以此也不执行D.循环体语句执行一次
2.语句while(!
E);中的表达式!
E等价于()
A.E==0B.E!
=1C.E!
=0D.E==1
3.下面程序段的运行结果是()
intn=0;
while(n++<=2);printf("%d",n);
A.2B.3C.4D.有语法错
4.下面程序的运行结果是()
#include
voidmain()
{intnum=0;
while(num<=2)
{num++;
printf("%d\n",num);
}
}
A.1B.1C.1D.1
222
33
4
5.以下程序段()
x=-1;
do{
x=x*x;
}while(!
x);
A.是死循环B.循环执行二次C.循环执行一次D.有语法错误
6.若有如下语句
intx=3;
do
{printf(""%d\n",x-=2);}while(!
(--x));
则上面程序段()
A.输出的是1B.输出的是1和-2C.输出的是3和0D.是死循环
7.下面程序的运行结果是()
#include
voidmain()
{inty=10;
do
{y--;}
while(--y);
printf("%d\n",y--);
}
A.-1B.1C.8D.0
8.若i为整型变量,则以下循环执行次数是()
for(i=2;i==0;)
printf("%d",i--);
A.无限次B.0次C.1次D.2次
9.执行语句for(i=1;i++<4;);后变量i的值是()
A.3B.4C.5D.不定
10.以下正确的描述是()
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
二、填空题
1.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束
循环。
请填空。
intn=0,c;
c=getchar();
while________
{if_________
n++;
c=getchar();
}
2.下面程序的功能是用"辗转相除法"求两个正整数的最大公约数。
请填空。
#include
voidmain()
{intr,m,n;
scanf("%d%d",&m,&n);
if(mr=m%n;
while(r)
{m=n;n=r;r=___________;}
printf("%d\n",n);
}
3.下面程序的运行结果是______________.
#include
voidmain()
{inta,s,n,count;
a=2;
s=0;
n=1;
count=1;
while(count<=7)
{n=n*a;
s=s+n;
++count;
}
printf("s=%d",s);
}
4.下面程序段的运行结果是________________.
i=1;
a=0;
s=1;
do
{a=a+s*i;
s=-s;
i++;
}while(i<=10);
printf("a=%d",a);
5.以下程序的输出结果是______________.
#include
voidmain()
{intn=12345,d;
while(n!
=0)
{d=n%10;
printf("%d",d);n/=10;}
}
}
6.下面程序段的运行结果是________________.
i=1;
s=3;
do
{s+=i++;
if(s%7==0)continue;
else
++i;
}while(s<15);
printf("%d",i);
7.阅读以下程序,若输入5,程序运行结果是_______________。
#include
voidmain()
{inti,n;
doublefact;
scanf("%d",&n);
fact=1;
for(i=1;i<=n;i++)
fact*=i;
printf("%.0f\n",fact);
}
三、程序设计题
1.输入1个整数,输出它的绝对值。
2.编一程序,统计从键盘输入一行字符的个数。
3.印出如下图案(菱形)
*
***
******
********
******
***
*
4.编写程序,用穷举法输出100以内的素数。
5.求1!
-2!
+3!
-4!
+……+49!
-50!
的和。
6.输入10个字符,分别统计出其中空格、数字和其他字符的个数。
7.设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超500亿元?
8.输入一个三位数,判断是否是一个“水仙花数”。
水仙花数是指三位数的各位数字的立方和等于这个三位数本身。
例如:
153=1*1*1+5*5*5+3*3*3
9.输出1-999中能被3整除,而且到少有一位数字是5的所有数字。
第六章自顶向下的程序设计
一、选择题
1.以下函数的正确定义形式是()
A.doublefun(intx,inty)