C语言程序是由函数构成的,函数是C程序的基本组成单位,一个C语言程序中仅有一个main()函数,除main函数之外可以有若干个其它的函数,每个函数实现某一特定的 *** 作。
:C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
函数(function)。
C语言程序的基本单位是函数(function)。每个C程序都包含一个或多个函数,其中必须包含一个主函数main()。C程序从main()函数开始执行,当main()函数执行完毕时,程序也就终止了。
C语言程序是用C语言编写的程序,它可以在计算机上执行。C语言是一种高级编程语言,具有灵活性和强大的功能。C语言程序可以在不同的平台和 *** 作系统上编写和运行,因为它们使用了标准的C语言编译器和库。v
函数。c语言程序的基本单位是函数,函数是C程序的基本组成单位,一个C语言程序中仅有一个main函数,除main函数之外可以有若干个其它的函数,每个函数实现某一特定的 *** 作。
C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接 *** 作,因此既能够用于开发系统程序,也可用于开发应用软件。
主要特点如下:
(1)简洁的语言
C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
(2)具有结构化的控制语句
C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、ifelse语句和switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。
试题一
一、单项选择题
1C语言程序的执行,总是起始于 。
A) 程序中的第一条可执行语句
B) 程序中的第一个函数
C) main函数
D) 包含文件中的第一个函数
分析:在一个C语言源程序中,无论main函数书写在程序的前部,还是后部,程序的执行总是从main函数开始,并且在main函数中结束。
本题正确答案为C。
2下列说法中正确的是 。
A) C程序书写时,不区分大小写字母
B) C程序书写时,一行只能写一个语句
C) C程序书写时,一个语句可分成几行书写
D) C程序书写时每行必须有行号
分析:C语言严格区分大小写字母,如"A1"和"a1"被认为是两个不同的标识符,C程序的书写非常灵活,既可以一行多句,又可以一句多行,且每行不加行号。
本题正确答案为C。
3下面对C语言特点,不正确描述的是 。
A) C语言兼有高级语言和低级语言的双重特点,执行效率高
B) C语言既可以用来编写应用程序,又可以用来编写系统软件
C) C语言的可移植性较差
D) C语言是一种结构式模块化程序设计语言
分析:C语言是介于汇编语言和高级语言之间的一种语言,由于它可以直接访问物理地址,对硬件 *** 作,所以C语言既可以编写应用程序,又可以开发系统软件,而且C程序可移植性好于汇编语言,程序清晰具有模块化的特点。
本题正确答案为C。
4C语言源程序的最小单位是 。
A) 程序行B) 语句C) 函数D) 字符
分析:程序行、语句、函数都是由字符构成的,字符是C语言的最小单位。
本题正确答案为D。
5以下四项中属于C语言关键字的是 。
A) CHAR B) define C) unsigned D) return
分析:C语言有32个关键字(或称保留字),它们都有特定的含意,并且由小写字母组成,所以选项A是错的,选项B不是保留字,选项D是return的错误拼写。
本题正确答案为C。
6十进制数2403转换成十六进制数为 。
A) 963 B) 369 C) 953 D) 359
分析:十进制数化成十六进制数的方法是:不断除以16,商0为止,倒取余数。
本题正确答案为A。
7二进制数00110101转换成八进制数是 。
A) 055 B) 065 C) 056 D) 152
分析:二进制数化成八进制数的方法是:从右向左划分,将每3位二进制数书写成1位八进制数。
本题正确答案为B。
8将二进制数1011011011转换成十进制数是 。
A) 9175 B) 91375 C) 91125 D) 9125
分析:二进制数化成十进制数的方法是:各数字乘以权重再相加,题中整数部分为:(1011011)2=1×26+1×24+1×23+1×21+1×20=64+16+8+2+1=91,小数部分为:(0011)2=0×2-1+1×2-2+1×2-3=025+0125=0375,再将两者合在一起得91375。
本题正确答案为B。
9计算机内部运算使用的数是 。
A) 十进制数 B) 十六进制数 C) 二进制数 D) 八进制数
分析:在实际生活中找不到具有十个稳定状态的物理元件,而具有两种稳定状态的元件到处可见,如一个开关具有通电和断电两个稳定状态,计算机内部的元件正是以"1"代表通电,以"0"代表断电的,所以计算机内部运算使用的数是二进制数,至于八进制数和十六进制数是对二进制数的人为缩写。
本题正确答案为C。
10一个字长的二进制位数是 。
A) 2个BYTE,即16个bit B) 3个BYTE,即24个bit C) 4个BYTE,即32个bit D) 随计算机系统不同而不同
分析:一个二进制位也称做1bit,八个二进制位称做1个BYTE,即所说的一个字节,BYTE和bit有固定的换算关系,但是计算机中的字长WORD和字节BYTE没有固定的换算关系,字长WORD是随CPU型号而异的。
本题正确答案为D。
11在C语言系统中,假设int类型数据占2个字节,则double、long、unsigned int、char类型数据所占字节数分别多少 。
A) 8,2,4,1 B) 2,8,4,1 C) 4,2,8,1 D) 8,4,2,1
分析:由上题知CPU字长决定了分配给各种类型变量多少个字节,当int类型占2个字节时,double、long、unsigned int、char型所占的字节分别为8、4、2、1个字节。
本题正确答案为D。
12下面程序段执行结果是 。
int i=5,k;
k=(++i)+(++i)+(i++);
printf("%d,%d",k,i);
A) 24,8 B) 21,8 C) 21,7 D) 24,7
分析:k=(++i)+(++i)+(i++)表达式中,"++"号在i前面的有两个,所以在计算k之前,i要先增两次,即i变为7,然后再将3个7相加,使k得21,表达式中"++"号在i后面的有1个,所以得出k的值以后i又增1次变为8。
本题正确答案为B。
13下面程序段执行结果是 。
int i=5;
printf("%d,%d,%d", i,(++i)+(++i)+(i++),i);
A) 8,20,5 B) 8,21,5 C) 5,20,8 D) 5,21,8
分析:此题不能看作将12题中的k=(++i)+(++i)+(i++)代入printf函数,因为函数处理参数的顺序是从右向左,所以(++i)+(++i)+(i++)表达式的值不再是求7+7+7,而是为8+7+5=20。
本题正确答案为A。
14下面程序段的输出结果是 。
int i=32769;
printf("%d\\n",i);
A) 32769 B) 32767 C) -32767 D) 输出不是确定的数
分析:int型变量表示数据的范围是-32768~+32767,赋值时比-32768小或比+32767大,都会发生溢出,溢出后存放的数值是:正向溢出时,为该数减去模65536,负向溢出时,为该数加上模65536,所以本题输出为32769-65536=-32767。
本题正确答案为C。
15下面的程序运行后输出为 。
main( )
{ int a=-32769;
ptintf("%8U\\n",a);
}
A) 32769 B) %8U C) 32767 D) -32767
分析:格式字符必须小写,题中的"%8U"不会当作格式控制符,而是原样输出,变量a将没有对应的格式说明,也不会送出。
本题正确答案为B。
二、填空题
1若以下程序的输出结果是13,请填空。
main( )
{ int x=016;
printf("%d\\n",1); }
分析:在C语言中以0开头的数字是八进制数,016相当于十进制数14,执行printf语句时,输出项应为x的值减1。
本题正确答案为 1 --x或x-=1。
2下面程序段的输出结果是2。
int k=10;
float a=35,b=67,c;
c=a+k%3(int)(a+b)%2/4;
分析:本题考查运算符的优先级概念,式中要先算(a+b)的值,再算强制类型变换,、/、%是同级的要从左到右计算,最后算加法和赋值。
本题正确答案为2 3500000
3若执行下面程序段后的输出为:3,4,5,请填空。
int a,b=3,c=5;
a=b<c3:c++;
printf("%d,%d,%d",a,b,c);
分析:本题考查条件运算符和增量运算符的概念,题中b<C为真,应取B++的值给A,因B的值是先用后增1,所以A为3,题中的C++没有执行到,C保持原值。
本题正确答案为 3 b++。
4C语言中的运算符,优先级最低的是4。
分析:与其它高级语言相比,在C语言中赋值号并不是优先级最低的,C语言中优先级最低的运算符是逗号运算符。
本题正确答案为 4 逗号运算符。
5若下面程序的输出结果是4,请填空。
main( )
{ int i,j,k;
k=0 ; i=j=-2 ;
k+=-i--5;
printf("%d\\n",k);
}
分析在C语言中当3个加号或3个减号连在一起时,中间的符号归属左边的变量,即-i---j相当于-(i--)-j。
本题正确答案为 5-j 。</c3:c++;
试题二
一、单项选择题
1下面叙述不正确的是 。
A) C语句末尾必须有分号
B) C语言中无论是整数还是实数都能准确的表示
C) 运算符“%”只能用于整数运算
D) 乘除运算符优先级高于加减运算符
2以下叙述正确的是 。
A) C语句前面必须有行号
B) C程序中每行只能写一条语句
C) C语言本身没有输入输出语句
D) 注释必须跟在一行语句的后面
3复合语句应用 括起来。
A) 小括号 B) 方括号 C) 大括号 D) 尖括号
4.将二进制数101101101111转换成十六进制数是 。
A) 5557 B) B6F C) 7555 D) F6B
5将十进制数0625转换成二进制数是 。
A) 0.111 B) 0101 C) 05 D) 0A
6C语言语句一行写不下时,可以 。
A) 用逗号换行 B) 用分号换行 C) 用回车换行 D) 在任意一空格处换行
7C语言允许将一条语句写在两行上,下列语句不正确是 。
A) int a, B) int a C) int D) int a,b
b; ,b; a,b; ;
8下面程序的输出是 。(“□”表示一个空格)
int a=3366;
printf("|%-08d|",a);
A) |-0003366| B) |00003366| C) |3366□□□□| D) 输出格式非法
9若有说明语句:int a; float b;,以下输入语句正确的是 。
A) scanf("%f%f",&a,&b);
B) scanf("%f%d",&a,&b);
C) scanf("%d,%f",&a,&b);
D) scanf("%62f%62f",&a,&b);
10以下程序的输出结果是 。
main( )
{ int x=11,y=11;
printf("%d%d\\n",x--,--y);
}
A) 11,11 B) 10,10 C) 10,11 D) 11,10
11.将八进制数307转换成二进制数是 。
A) 100110011 B) 11000111 C) 1100000111 D) 111000011
12.执行下面程序段,给x、y赋值时,不能作为数据分隔符的是 。
int x,y;
scanf("%d%d",&x,&y);
A) 空格 B) Tab键 C) 回车 D) 逗号
13下面合法的语句是 。
A) int a=8,b;
b=++a++;
printf("%d,%d",a,b++);
B) int a;
printf("\\"%d\\"",scanf("%d",&a));
C) char a;
scanf("%c",&a);
char b=scanf("b=%c",&b);
D) char c=getchar( );
putchar((int)c);
14执行下面程序时,欲将25和25分别赋给a和b,正确的输入方法是 。
int a;
float b;
scanf("a=%d,b=%f",&a,&b);
A) 25□25
B) 25,25
C) a=25,b=55
D) a=25□b=25
15与数学公式a•b x•y不等价的语句是 。
A) ab/xy
B) ab/x/y
C) ab/(xy)
D) a/(xy)b
二、填空题
1表达式5%(-3)的值是1,表达式-5%(-3)的值是2。
2在C语言中,格式输入库函数为3,格式输出库函数为4。
3下面程序的输出结果是5。
int x=-32769;
printf("%d",x);
4执行下列程序的输出结果是6。
main( )
{
float a=1,b;
b=++a++a;
printf("%f\\n",b);
}
5执行下列程序的输出结果是7。
main( )
{
int x=5,y;
y=++x++x;
printf("y=%d\\n",y);
}
参 考 答 案
一、选择题(1)B (2)C (3)C (4)B (5)B (6)D (7)D (8)C (9)C (10)D (11)B (12)D (13)D (14)C (15)A
二、填空题1 2 2 -2 3 scanf 4 printf 5 32767 6 6000000 7 49
试题三
一、单项选择题
1下面不属于C语言的数据类型是 。
A) 整型 B) 实型 C) 逻辑型 D) 双精度实型
分析:和其它高级语言相比,C语言中没有逻辑型数据,也没有逻辑型变量。
本题正确答案为C。
2C语言中,下列属于构造类型的是 。
A) 整型 B) 实型 C) 指针类型 D) 结构体类型
分析:C语言中构造类型的数据有三种:数组、结构体和共用体,数组是同类型数据的集合,结构体是不同类型的数据集合。
本题正确答案为D。
3下列字符串不符合标识符规定的是 。
A) SUM B) sum C) 3cd D) end
分析:标识符规定只能由26个英文字母(大小写均可),数字0~9和下划线组成,且不能以数字开头,题中的3cd不符合规定。
本题正确答案为C。
4下面能正确表示八进制数的是 。
A) 0x16 B) 029 C) -114 D) 033
分析:选项A)以0x开头是十六进制数,选项B)虽然是0开头,但出现了数字9,选项C)是十进制数。
本题正确答案为D。
5下面四个选项中,均是合法实数的选项是 。
A) 2e-42 B)-050 C) 02e-5 D)-e5
分析:实数有两种表示形式:小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e之前必须有数字,e之后必须是整数。选项A)中的"2e-42",选项C)中的"02e-5",选项D)中的"-e5"均是不合法的。
本题正确答案为B。
6C语言中,字符型数据在内存中存储形式是 。
A) 原码 B) 反码 C) 补码 D) ASCII码
分析:C语言中int型数据是以补码形式存放的,字符型数据是以ASCII码形式存放的。
本题正确答案为D。
7下列正确的字符型常量是 。
A) "a" B) ′\\\\′ C) "\\r" D) 277
分析:字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,′\\\\′是转义字符。
本题正确答案为B。
8若有说明语句char ch1=′\\x41′;则ch1 。
A) 包含4个字符 B) 包含3个字符 C) 包含2个字符 D) 包含1个字符
分析:"\\x41"中的"41"是十六进制数,即十进制的65,题中ch1存放的65是字母"A"的ASCII码。
本题正确答案为D。
9下列程序段输出的字符串长度为 。
printf("\\\\aaa\\′ccc\\bddd\\"");
A) 11 B) 12 C) 13 D) 17
分析:\\\\、\\′、\\b和\\"为转义字符,程序输出结果为:\\aaa′ccddd"。
本题正确答案为A。
10下列运算符中,要求运算对象必须是整数的是 。
A) / B) C) % D) !
分析:题目中"/"、""、"!"的运算对象既可以整数,也可以是实数,只有取余数运算符"%"要求运算对象必须是整数。
本题正确答案为C。
11下面合法的赋值语句是 。
A) x+y=2002; B) ch="green"; C) x=(a+b)++; D) x=y=0316;
分析:赋值号左端不能为表达式,选项A)是错的;赋值号不能将字符串赋给某个变量,选项B)也是错的;增量运算符“++”不能用于表达式,选项C)也是错的。
本题正确答案为D。
12已知a为int型,b为double型,c为float型,d为char型,则表达式a+bc-d/a结果的类型为 。
A) int 型 B) float型 C) double型 D) char型
分析:不同类型数据混合运算的转换规律是:运算前float型数据会自动转换为double型,char型数据会自动转换为int型。运算时int型数据和double型数据要先化为相同类型,即double型,运算结果也为double型。
本题正确答案为C。
13执行以下程序段后的输出结果是 。
int x=0xcde;
printf("M,%4o,%4x\\n",x,x,x);
A) 3294,6336,cde B) 3294,6336,xcde C) 3294,06336,0xcde D) 3294,6336,0cde
分析:0xcde是十六进制数,写成二进制数形式为:1100 1101 1110,按八进制送出时,是从右向左3位二进制数写成1位,按十六进制形式送出时,是从右向左4位二进制数写成1位。
本题正确答案为A。
14下面的程序运行后输出为 。
#include
#include
main( )
{ int a,b;
float c;
b=5;c=6;c=b+7;b=c+1;
a=sqrt((double)b+c);
printf("%d,%f,%d",a+6,c,b);
}
A) 11000000,12000000,13000000
B) 11000000,12000000,13
C) 110000000,12,13
D) 11,12000000,13
分析:C语言允许将一种类型的数据赋给另一种类型的变量,但是变量的类型并不会因为赋值而发生改变,如本题中将b+7,即12赋给float型变量c,c值应为12000000而不是整数12,同样a=sqrt((double)b+c),赋值号右边是双精度数,但由于a是整形变量,故a的值为5。
本题正确答案为D。
15执行以下程序后x的值为 。
unsigned int x=65535;
printf("%d\\n",x);
A) 65535 B) 1 C) 有错误 D) -1
分析:题中将x定义成无符号整数,并且已初始化为:1111111111111111,若按%d格式输出,则最高位的1被当成了符号,1111111111111111成了负数的补码,输出结果为-1。
本题正确答案为D。
二、填空题
1下面程序段的功能是输出大写字母对应的小写字母的ASCII码,请填空。
char ch;
scanf("%c",&ch);
ch=(ch>=′A′&&ch<=′Z′)(1):ch
printf("2\\n",ch);
分析:题目中条件运算为判断输入字母是否为大写,当ch>=′A′&&ch<=′Z′为真时,将其转换成对应的小写字母,需ASCII码值加上32,已知题意是将大写字母对应的小写字母ASCII值输出,所以printf语句中的输出格式应为十进制格式。
本题正确答案为 1 ch+32, 2 %d。
2下面程序段的执行结果是x=3,y=4。
inta=3,b=5,x,y;
x=a+1,b+6;
y=(a+1,b+6);
printf("x=%d,y=%d",x,y);
分析:此题考查逗号表达式的概念,因逗号运算符的优先级比赋值号还低,所以执行x=a+1,b+6时,x得到的是a+1的值。
本题正确答案为 3 4, 4 11。
3下面程序执行后k的值为5。
int a=1,b=2,c=3,d=4,k;
k=a>ba:c>dc:d
分析:因题中a>b的值为假,故求解表达式k=a>ba:c>dc:d相当于求k=a>ba:(c>dc:d)。
本题正确答案为 5 4。
4已知:int a=5;则执行a+=a-=aa;语句后,a的值为6。
分析:a+=a-=aa的运算顺序是从右向左,相当于求a+=(a-=aa),其中小括号内的运算得a=5-55即a=-20,下一步再求a+=a,即a=a+a,将-20代入得a=-40。
本题正确答案为 6 -40。
5下面程序的运行结果是x=7,y=8。
main( )
{ float x=49;int y;
y=(int)x;
printf("x=%f,y=%d",x,y); }
分析:强制类型变换并不改变x的原值,x仍为49,而变换得到的是中间结果,此题将中间结果赋给了y,另外注意是舍弃小数部分,而不是四舍五入。
本题正确答案为 7 4900000 8 4。
试题四
一、单项选择题
1对if语句中表达式的类型,下面正确的描述是 。
A) 必须是关系表达式
B) 必须是关系表达式或逻辑表达式
C) 必须是关系表达式或算术表达式
D) 可以是任意表达式
分析:C语言中if语句的表达式可以是任意类型,只要表达式的值非0就算作真,是0就作为假。
本题正确答案为D。
2多重if_else语句嵌套使用时,寻找与else配套的if方法是 。
A) 缩排位置相同的if
B) 其上最近的if
C) 下面最近的if
D) 同行上的if
分析:多重if_else嵌套时,else总是与它上面最近的if配对。
本题正确答案为B。
3以下错误的if语句是 。
A) if(x>y) z=x;
B) if(x==y) z=0;
C) if(x!=y) printf("%d",x) else printf("%d",y);
D) if(x
分析:选项C)中的第一个printf语句后面丢了分号,所以是错误的。
本题正确答案为C。
4以下判断两个字符串相等的正确方法是 。
A) if(str1=str2)
B) if(str1==str2)
C) if(strcpy(str1,str2)=0)
D) if(strcmp(str1,str2)==0)
分析:选项A)中用了赋值号,显然是错误的,选项C)中的字符串拷贝函数strcpy不能比较大小,选项B)中的"=="号也不具有串比较功能,比较两个字符串的大小应用字符串比较函数。
本题正确答案为D。
5执行下面程序的正确结果是 。
main( )
{ float a=19;
switch(a)
{ case 0: printf("0000");
case 1: printf("1111");
case 2: printf("2222");
}
printf("%f",a);
}
A) 1900000
B) 111122221900000
C) 22221900000
D) 0000111122221900000
分析:题中定义了单精度实数a,所以最下面的printf语句输出有6位小数,另外C语言在判断switch表达式的值时,是按整型数据处理的(但不4舍5入),所以程序是从case 1处开始执行的,因没有break语句,接着会执行case 2。
本题正确答案为B。
6以下程序的输出为 。
main( )
{ int a=20,b=30,c=40;
if(a>b) a=b,
b=c;c=a;
printf("a=%d,b=%d,c=%d",a,b,c);
希望对你有所帮助!!! 也希望能赏点分!!!谢谢
这种东西又不是学术问题,大概明白是那个意思就行了。
每个人的理解可能都不一样,我理解这句话的意思就是说一个c程序是由c语句构成的。
但是什么是c语句,似乎也没有一个严格的定义,感觉也没有必要去严格定义它。
在C语言中,函数是程序的基本组成单位。
C程序是由函数构成的,函数是C程序的基本组成单位,一个C源程序中仅有一个main()函数,除main函数之外可以有若干个其它的函数,每个函数实现某一特定的 *** 作。因此,函数是C程序的基本单位。
一个函数由两部分组成:函数的说明部分。包括函数名、函数类型、函数属性、函数参数(形式参数)名、形式参数类型。
扩展资料:
一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。在C语言中,子程序的作用是由一个主函数和若干个函数构成。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。
在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。要善于利用函数,以减少重复编写程序段的工作量。
函数分为全局函数、全局静态函数;在类中还可以定义构造函数、析构函数、拷贝构造函数、成员函数、友元函数、运算符重载函数、内联函数等。
参考资料来源:百度百科-函数
以上就是关于c语言程序的基本单位是什么全部的内容,包括:c语言程序的基本单位是什么、c语言程序的基本单位、c语言的基本组成单位是什么啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)