C语言程序设计练习题文档格式.docx
《C语言程序设计练习题文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计练习题文档格式.docx(93页珍藏版)》请在冰豆网上搜索。
![C语言程序设计练习题文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/7/ec6ac806-f86a-49d8-922c-61dbbcae6cb5/ec6ac806-f86a-49d8-922c-61dbbcae6cb51.gif)
14.C程序的基本结构
⑴C程序是由若干个函数构成的。
每个C程序有且仅有一个主函数,其名字为main。
除主函数外可以没有其它函数,也可以有一个或多个其它函数。
⑵每个函数的定义分为两个部分:
函数说明部分和函数体。
函数说明部分的格式如下:
返回值的类型函数名(形式参数1,形式参数2,…)
形式参数的说明
函数体的格式如下:
{
变量定义部分
实现函数功能的语句串
}
⑶C程序的每个语句都是以分号“;
”结束的。
⑷用/*注释内容*/为程序加注释。
⑸C程序书写格式灵活,一行上可以写多个语句,一个语句也可以写在多行上。
⑹程序的执行总是从主函数开始,并在主函数中结束。
主函数的位置是任意的,可以在程序的开头,可以在程序的结尾,也可以在两个函数之间。
其它函数总是通过函数调用语句来执行的。
⑺主函数可以调用任何非主函数;
任何非主函数都可以互相调用,但不能调用主函数。
二、习题
(一)单项选择题
1.二进制语言是属于_____。
①面向机器语言②面向过程语言③面向问题语言④面向汇编语言
2.下列语言中不属于面向问题的语言是_____。
①高级语言②低级语言③C语言④ALGOL语言
3.下列字符中属于键盘字符的是_____
①\②\n③\t④\b
4.下列不正确的转义字符是_____
①\\②\'
③074④\0
5.不是C语言提供的合法关键字是_____
①switch②cher③case④default
6.正确的标识符是_____
①?
a②a=2a.3④a_3
7.下列说法中错误的是_____
①主函数可以分为两个部分:
函数说明部分和主函数体
②主函数可以调用任何非主函数的其它函数
③任何非主函数可以调用其它任何非主函数
④程序可以从任何非主函数开始执行
(二)填充题
1.汇编语言属于面向__________语言,高级语言属于面向__________语言
2.用高级语言编写的程序称为__________程序,它可以通过__________程序翻译一句执行一句的方式执行,也可以通过__________程序一次翻译产生__________程序,然后执行。
3.转义字符是由__________符号开始的单个字符或若干个字符组成的。
4.C语言的词类主要分为__________、__________、__________、__________、__________和__________等6类。
5.C语言的语句主要分为_________语句、_________语句、________语句和________语句。
6.C程序是由函数构成的。
其中有并且只能有__________个主函数。
C语言程序的执行总是由__________函数开始,并且在__________函数中结束。
7.C语言程序的注释可以出现在程序中的任何地方,它总是以__________符号作为开始标记,以__________符号作为结束标记。
第二章基本数据类型和运算
1.使用高级语言编写程序时需做好的两件事:
一是数据描述,二是描述数据的加工方法。
2.数据类型:
是指数据的内在表现形式。
通俗地说,数据在加工计算中的特征就是数据的类型。
C语言的数据类型详见教材。
整型和实型合称为“数值型”,数值型和字符型合称为“基本数据类型”。
不同类型数据所占用的内存字节数(数据长度)是不同的,因此C语言规定每使用一个数据之前,必须对数据的类型加以定义,以便为其分配长度合适的内存(即:
先定义,后使用)。
3.常量:
是程序运行过程中其值不改变的数据。
C语言规定常量的类型有四种:
整型常量、实型常量、字符常量和字符串常量。
4.各种常量的表示形式
整型常量:
有三种书写形式
⑴十进制整数。
如-123,+15等
⑵八进制整数。
如0144,015等,100,13。
⑶十六进制整数。
如0x64,0x15等,分别表示十进制数100,21。
另:
在整数后加后缀L或l,表示长整型常量,如0L,0123L,0x64L等。
实型常量:
有两种书写形式
⑴一般形式的实数。
如12.345,-123.456等。
⑵指数形式的实数。
如-1.2345E3,-123e-3等
字符常量:
如'
a'
、'
1'
A'
\n'
\101'
\x41'
\\'
\'
'
等。
字符串常量:
如"
abc"
、"
1234567890"
\\ABCD\\"
\101\102\x43\x44"
等
5.变量:
是程序运行过程中其值可以发生变化的量。
用来保存程序运行过程中的输入数据、中间结果和最终结果。
6.变量的定义:
存储类型符数据类型符变量名1=初值1,……,变量名n=初值n;
其中:
存储类型符有auto(自动型),register(寄存器型),static(静态型),
extern(外部参照型)
数据类型有int,short,long,unsignedint,unsignedshort,unsignedlong,
float,double,char
7.内部变量:
在函数内定义的变量。
8.外部变量:
在函数外定义的变量。
9.变量的生存期:
变量从开始分配内存单元到分配的内存单元被收回的期间。
10.变量的作用域:
在变量的生存期中,变量可以使用的程序区域。
11.全局变量:
生存期覆盖了定义点到整个程序结束的变量。
12.局部变量:
生存期只覆盖某个函数(或某个复合语句)的变量。
13.变量生存期和作用域的确定:
可由两方面确定①变量的定义点(内部变量或外部变量)②变量的存储类型。
如下表所示:
变量
允许的存储类型
生存期
作用域
外部变量
省略(称无存储类型)
全局变量
定义点到程序结束
静态型(static)
内部变量
省略(默认为自动型auto)
局部变量
定义该变量的函数或复合语句内部
自动型(auto)
寄存器型(register)
14.运算符和表达式:
用来表示各种运算的符号称为运算符;
用运算符将运算对象连接起来所组成的运算式称为表达式。
运算符的优先级和结合性详见教材附录。
15.变量赋值及表达式计算时的数据类型转换原则
⑴表达式计算中数据类型的自动转换原则
参加运算的各个数据都转换为数据长度最长的数据类型,然后计算,计算结果是数据长度最长的数据类型。
⑵运算结果存入变量是数据类型的自动转换原则
先将运算结果的数据类型自动转换成变量的数据类型,然后再赋予该变量。
⑶强制数据类型转换原则
用如下的形式(数据类型符)(表达式)将表达式的值强制转换成指定的数据类型。
(一)单项选择题
1.下列数据中属于“字符串常量”的是_____
①ABC②"
ABC"
③'
abc'
④'
2.在PC机中,'
在内存占用的字节数是_____
①1②2③3④4
3.字符串"
①3②4③5④6
4.在C语言中,合法的长整型数是_____
①0L②4962710③0.054838743④2.1869e10
5.char型常量在内存中存放的是_____
①ASCII代码值②BCD代码值③内码值④十进制代码值
6.设m,n,a,b,c,d均为零,执行(m=a==b)||(n=c==d)后,m,n的值是_____
①0,0②0,1③1,0④1,1
7.设a为5,执行下列语句后,b的值不为2的是_____
①b=a/2②b=6-(--b)③b=a%2④b=a>
3?
2:
2
8.执行语句x=(a=3,b=a--);
后,x,a,b的值依次为_____
①3,3,2②3,2,2③3,2,3④2,3,2
9.设整型变量m,n,a,b,c,d均为1,执行(m=a>
b)&
&
(n=a>
b);
后,m,n的值是_____
10.设有语句inta=3;
则执行了语句a+=a-=a*a;
后,变量a的值为_____
①3②0③9④-12
11.在以下一组运算符中,优先级最高的运算符是_____
①<
=②=③%④&
12.设整型变量i的值为3,则计算表达式i---i后,表达式的值为_____
①0②1③2④表达式出错
13.设整型变量a,b,c均为2,表达式:
a+++b+++c++的结果是_____
①6②9③8④表达式出错
14.若已定义x和y为double类型,则表达式:
x=1,y=x+3/2的值为_____
①1②2③2.0④2.5
15.设a=1,b=2,c=3,d=4,则表达式:
a<
b?
a:
c<
d?
d的值为_____
①4②3③2④1
16.设a为整型变量,不能正确表达数学关系:
10<
15的C语言表达式是_____
①10<
15②a==11||a=12||a=13||a=14
③a>
10&
15④!
(a<
=10)&
!
(a>
=15)
17.下列表达式中,符合C语言语法的赋值表达式是_____
①a=7+b+c=a+7②a=7+b++=a+7③a=(7+b,b++,a+7)④a=7+b,c=a+7
18.若有以下定义:
chara;
intb;
floatc;
doubled;
则表达式a*b+d-c值的类型为_____
①float②int③char④double
19.表达式10!
=9的值是_____
①true②非零值③0④1
20.用十进制数表示表达式“12|012”的运算结果是_____
①1②0③14④12
21.设字符变量a=3,b=6,计算表达式c=(a^b)<
<
2后,c的二进制是_____
①00011100②00000111③00000001④00010100
22.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中值不为0的是_____
①'
b'
②a<
=b③a||b+c&
b-c④!
((a<
c||1)
23.设ch是char型变量,其值为'
,则下面表达式的值是_____
ch=(ch>
='
ch<
Z'
)?
(ch+32):
ch
①A②a③Z④z
24.设有无符号短整型变量i、j、k,i的值为013,j的值为0x13。
计算表达式“k=~i|j>
>
3”后,k的值是_____
①06②0177776③066④0177766
(二)填充题
1.在内存中存储"
A"
要占用_____个字节,存储'
要占用_____个字节。
2.C语言中的逻辑值“真”是用_____表示的,逻辑值“假”是用_____表示的。
逻辑表达式值为“真”是用_____表示的,逻辑表达式值为“假”是用_____表示的,
3.符号常量的定义方法是__________符号常量__________
4.说明变量时,若省略存储类型符,系统默认为_____存储类别,该存储类别的类型符为_____。
5.无符号基本整型的数据类型符为__________,双精度实型数据类型符为__________,字符型数据类型符为__________。
6.定义变量的完整语句格式是
存储类型符数据类型符变量名1=初值1,……,变量名n=初值n;
7.设有下列运算符:
、+、++、&
、<
=,其中优先级最高的是_____,优先级最低的是_____。
8.设二进制数A是00101101,若想通过异或运算A^B使A的高4位取反,低4位不变,则二进制数B应是_____。
9.设a=3,b=2,c=1,则a>
b的值为_____,a>
b>
c的值为_____。
10.若已知a=10,b=20,则表达式!
b的值为_____。
11.设x和y均int型变量,且x=1,y=2,则表达式1.0+x/y的值为_____。
12.设整型变量x,y,z均为5:
①执行“x-=y-z”后x=_____
②执行“x%=y+z”后x=_____
③执行“x=(y>
z)?
x+2:
x-2,3,2”后x=_____
13.能表述“20<
x<
30或x<
-100”的C语言表达式是____________________。
14.请写出数学式的C语言表达式__________.
15.C语言中运算结果可以当成逻辑值使用的表达式有:
__________表达式、__________表达式、__________表达式、__________表达式、__________表达式和__________表达式
第三章基本结构程序设计
一、基本内容
1.程序结构:
是指程序中语句的执行顺序。
2.三种基本结构:
顺序结构、选择结构和循环结构。
3.赋值语句:
一般形式为变量赋值运算符表达式;
功能:
将表达式的值或将变量和表达式进行指定的运算后赋予变量。
赋值运算符有=,*=,/=,%=,+=,-=,&
=,|=,^=,>
=,<
=(共11个)
举例:
x=1;
y=1;
z=x+y;
z%=x+y;
4.系统函数(库函数):
系统提供了大量的函数,这些函数存储在函数库中,在程序中使用这些函数时,要先说明。
对库函数的说明都保存在“头文件”中。
即只要在程序开始写上:
#include"
头文件"
或#include<
头文件>
如:
#include"
stdio.h"
string.h"
5.字符输入函数:
getchar()从键盘上读取一个字符。
ch=getchar();
6.字符输出函数:
putchar(ch)输出字符ch到显示器上。
putchar('
);
7.格式输入函数:
scanf("
格式字符串"
变量地址表)依据格式串的格式要求输入若干个数据,按“变量地址表”中变量的顺序,依次存入对应的变量。
常用的格式说明如下:
%d、%o、%x、%u、%md、%mo、%mx、%mld、%mlo、%mlx、%f、%e、%c、%s等
%d"
&
n)输入一个整数保存在变量n中。
scanf("
%d%d%d"
a,&
b,&
c)输入三个整数(空格或回车分隔)保存在变量a,b,c中。
%f,%f"
x,&
y)输入两个实数(逗号分隔)保存在变量x,y中。
8.格式输出函数:
printf("
表达式表)按自右向左的顺序计算各表达式的值,然后按“格式字符串”中规定的格式输出到显示器上。
输出格式字符详见教材。
9.程序调试:
包括输入源程序清单,编辑修改源程序,编译和连接源程序生成可执行的程序,运行程序,从运行结果判断程序的正确性。
10.选择控制语句:
①if(表达式)语句;
②if(表达式)语句1;
else语句2;
③if(表达式1)语句1;
elseif(表达式2)语句2;
……
elseif(表达式n)语句n;
else语句n+1;
④switch(表达式)
{case常量表达式1:
语句组1;
break;
case常量表达式2:
语句组2;
case常量表达式n:
语句组n;
default:
语句组n+1;
11.循环控制语句:
①while(表达式)语句
②do语句while(表达式);
③for(表达式1;
表达式2;
表达式)语句
④break和continue
12.多重循环:
是由嵌套的循环结构组成的,是指在某个循环语句的循环体中含有另一个循环语句。
外面的循环语句称为“外层循环”,外层循环语句的循环体中的循环语句称为“内层循环”。
1.设a=3,b=4,执行printf("
%d,%d"
(a,b),(b,a);
的输出是_____
①3,4②4,3③3,3④4,4
2.使用scanf("
x=%f,y=%f"
y);
要使x,y均为1.25,正确的输入是_____
①1.25,1.25②1.251.25③x=1.25,y=1.25④x=1.25y=1.25
3.设有inti=010,j=10;
则printf("
%d,%d\n"
++i,j--);
①11,10②9,10③010,9④10,9
4.执行scanf("
a=%c,b=%c"
b);
后使a为'
b为'
B'
从键盘上的正确输入是_____
②'
'
③A=A,B=B④a=A,b=B
5.设x,y,z,t均为int型变量,则执行以下语句后,t的值为_____
x=y=z=1;
t=++x||++y&
++z;
①不定值②2③1④0
6.启动TurboC的命令是_____
①TC②C③TURBO-C④TURBOC
7.假定所有变量均已正确定义,下列程序段运行后x的值是_____
a=b=c=0;
x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
①34②4③35④3
8.下面的程序片段所表示的数学函数关系是_____
y=-1;
if)x!
=0)if(x>
0)y=1;
elsey=0
①②③④
9.下列语句中,错误的是_____
①while(x=y)5;
②dox++while(x==10);
③while(0);
④do2;
while(a==b);
10.循环语句for(x=0,y=0;
(y!
=123)||(x<
4);
x++);
的循环执行_____
①无限次②不确定次③4次④3次
11.若i,j已定义为int类型,则以下程序段中内循环体的执行次数是_____
for(i=5;
i;
i--)
for(j=0;
j<
4;
j++){…}
①20②24③25④30
12.假定a和b为int型变量,则执行以下语句后b的值为_____
a=1;
b=10;
do{b-=a;
a++;
}while(b--<
0);
①9②-2③-1④8
13.设x和y均为int型变量,则执行下面的循环后y的值为_____
for(y=1,x=1;
y<
=50;
y++)
{if(x>
=10)break;
if(x%2==1){x+=5;
continue;
}
x-=3;
①2②4③6④8
14.在C语言中,下列说法正确的是_____
①不能使用“do语句while(条件)”的循环
②“do语句while(条件)”的循环必须使用“break”语句退出循环
③“do语句while(条件)”的循环中,当条件为非0时将结束循环
④“do语句while(条件)”的循环中,当条件为0时将结束循环
15.若有以下程序段,w和k都是整型变量,则不能与左边程序段等价的循环语句是_____
……①for(w=k;
w!
=0;
w--)printf("
*"
w=k;
②w=k;
LB:
if(w==0)gotoLE;
do{w--;
printf("
w--;
}while(w!
=0);
③w=k;
gotoLB;
while(w--!
=0)printf("
w++;
LE:
④for(w=k;
w;
--w)printf("
1.结构化程序设计规定的三种基本结构是__________结构、选择结构和__________结构。
2.若有定义语句inta=25,b=14,c=19;
以下语句的执行结果是____________________
if(a++<
=25&
b--<
=2&
c++)printf("
***a=%d,b=%d,c=%d\n"
a,b,c);
elseprintf("
###a=%d,b=%d,c=%d\n"
3.以下两条if语句可合并为一条if语句为________________________________________
if(a<
=b)x=1;
________________________________________
elsey=2;
if(a>
b)printf("
***y=%d\n"
y);
elseprintf