C语言二
C语言全国计算机二级等级考试教程第一二章(章节带习题)
2.2 标识符、常量和变量
2.2.3 符号常量
在C语言中,可以用一个符号名来代表一个常量,称为符号常
量。但是这个符号名必须在程序中用(#define)进行特别的“
指定"。 例2.2 计算圆面积和周长,此程序中将如何教大家使用符号常量。
#include “stdio.h” /*包含头文件*/
#define PI 3.14159 /*定义符号常量,符号常量名为PI,用PI来代表3.14159*/
main()
/*主函数,程序的入口*/
{double r,s,l;
/*声明部分,定义了3实型个变量*/
r
r=5.0;
/*给变量r赋值*/
函 s=PI*r*r;
数 体
l=2*PI*r;
/*计算圆的面积*/ /*计算圆的周长*/
s
printf(“s=%f,l=%f\n”,s,l/)*;分别圆的面积和周长*/
/*给变量b赋值*/
数 体
area=a*b;
/*将a*b的结果赋值给变量area*/
printf(“a=%f,b=%f,area=%f\n”,a,b,area/)*;分别输出矩形的两条边长和面积*/
1.2
}
3.6
a=1.200000,b=3.600000,area=4.320000
4.32
注意:
1. C程序由函数组成,一个程序必须有一个且只能有一个主函数(main),C程
a
b
1.5000002.500000 2.5000003.500000
a b
内存空间
2.在程序中,声明变量就是在计算机内存中申请了某个内存单元。对变量 进行赋值,实质上就是把数据存入该变量所代表的存储单元中。
c语言二进制运算法则
c语言二进制运算法则C语言中的二进制运算法则是计算机科学中的基本概念,它涉及到计算机如何处理和操作二进制数据。
在C语言中,二进制运算主要包括按位与(&)、按位或(|)、按位异或(^)和左移(<<)和右移(>>)等操作。
按位与运算符(&)对两个操作数的每一个二进制位进行逻辑与操作。
只有当两个相应的二进制位都为1时,结果位才为1,否则为0。
例如,假设我们有两个8位的二进制数01100101和10110010,按位与运算的结果是00100000。
按位或运算符(|)对两个操作数的每一个二进制位进行逻辑或操作。
只要有一个相应的二进制位为1,结果位就为1。
例如,对上述两个二进制数进行按位或运算,结果为11110111。
按位异或运算符(^)对两个操作数的每一个二进制位进行逻辑异或操作。
当两个相应的二进制位相同为0或1时,结果位为0,否则为1。
例如,对上述两个二进制数进行按位异或运算,结果为11010111。
左移运算符(<<)将左操作数的所有位向左移动若干位,移动的位数由右操作数决定。
例如,将二进制数00100000左移2位,结果是01000000。
右移运算符(>>)将左操作数的所有位向右移动若干位,移动的位数由右操作数决定。
需要注意的是,对于有符号整数,右移可能是算术右移(保持符号位不变)或逻辑右移(不保持符号位)。
例如,将二进制数11010111逻辑右移2位,结果是01100111。
这些二进制运算法则在C语言中广泛应用于位操作和底层编程。
它们允许程序员直接操作整数的二进制位,实现高效的数据处理和算法设计。
全国计算机等考二级C语言模拟试题二
全国计算机等考二级C语言模拟试题二一、选择题(1)~(10)每小题2分,(11)-(50)每小题1分,共60分)下列各题A)、B)、c)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下面叙述正确的是________。
A)算法的执行效率与数据的存储结构无关B)算法的空间复杂度是指算法程序中指令(或语句)的条数C)算法的有穷性是指算法必须能在执行有限个步骤之后终止D)算法的时间复杂度是指执行算法程序所需要的时间答案:C评析:算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。
数据结构和算法是计算机科学的两个重要支柱。
(2)以下数据结构属于非线性数据结构的________。
A)队列B)线性表C)二叉树D)栈答案:C评析:线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。
栈又称后进先出表(Last In First Out);队列又称先进先出表(First:In First Out)。
二叉树的数据结构是树型结构,结构中数据元素之间存在着一对多的关系,因此它是一种非线性数据结构。
(3)在一棵二叉树上第8层的结点数最多是________。
A)8B)16C)128D)256答案:C评析:根据二叉树的性质:二叉树第i(i≥1)层上至多有2i-1个结点。
得到第8层的结点数最多是128。
(4)下面描述中,不符合结构化程序设计风格的是________。
A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B)自顶向下C)注重提高程序的执行效率D)限制使用goto语句答案:C评析:结构化程序设计方法的四条原则是:1.自项向下;2.逐步求精;3.模块化;4.限制使用goto语句。
(5)下面概念中,不属于面向对象方法的是________。
A)对象、消息B)继承、多态c)类、封装D)过程调用答案:D评析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。
C语言程序设计二
int x=10, y=10, z=10 ;
//不能写成int x=y=z=10;
2.2.3 标准函数
C编译系统提供的库函数
− 包括: 输入输出函数、数学函数、字符和字符串函数等。
数学函数 − sin(x) − cos(x) − exp(x)
− log(x)
− log10(x) − fabs(x)
空类型
一种无返回 值函数的数 据类型。 void
自定义
用新的类型 名替代已有 类型名使用。 用typedef 定义
C语言的基本数据类型 整型: 包括有、无符号的基本整型、短整型、长整型 实型: 包括单精度实型、双精度实型 float,double 字符型: 用于表示和存储ASCII字符。 char
2.2
−无符号整数: 用后缀 U/u 表示。
017u, 0xfdbU
−无符号长整数: 用后缀 UL/ul 表示。
15uL
2. 实型常量——浮点数
实型常量又称实数, 指带有小数部分的数。C语言中的实数 是以十进制表示的, 有两种表示形式:
−十进制小数形式:
由数字、数符和小数点组成。
例:
0.123, .123, 123. ,0.0 , -2.5,…
( 存放的是字符的ASCII码值) 字符数据与整型数据可相互赋值,直接运算。 可以把字符变量按整型量输出, 也允许把整型量按 字符量输出。
【例2.4】字符型变量的使用 #include <stdio.h> void main( ) { int a=„b‟; char c1=97; c1=c1-32;
第二章
数据类型、运算符和表达式
§2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式
c语言 2输入输出
二、基本输入输出语句(一)选择题1.逻辑运算符两侧运算对象三数据类型A.只能是0和1 B.只能是0或非0正数C.只能是整型或字符型数据 D.可以是任何类型的数据2.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为A. 1 B. 2 C. 3 D. 43.以下程序的运行结果是main(){ int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A. 6,1 B. 2,1 C. 6,0 D. 2,04.若运行时给变量x输入12,则以下程序的运行结果是main(){ int x,y;scanf(“%d”,&x);y=x>12 ? x+10 : x-12;printf(“%d\n”,y);}A. 4 B. 3 C.2 D. 15.指出下面不正确的赋值语句是A.a++ B.a==C.a+=b;D.a=1,b=26.在C语言中,错误的语句是。
A.a=b=c;B.;C.breakD.b=3*5,a*=4;7.以下所列语句中,合法的语句是。
A.a=1,b=2B.++a;C.a=a+1=5;D.y=int(a);8.若x,y均为int型数据,z为double型数据,则以下的scanf函数调用语句中不合法的是A.scanf(“%d%lx,%le”,&x,&y,&z); B.scanf(“%2d*%d%lf”,&x,&y,&z);C.scanf(“%x%*d%o”,&x,&y); D.scanf(“%x%o,%6.2f”,&x,&y,&z);9. 若x, y均为int型变量且有值,要输出x, y的值,正确的输出函数调是A. printf("%d%d",&x,&y);B. printf("%f%f",x,y);C. printf("%f%d",x,y);D. printf("%d%d",x,y);10. x为int型变量,且值为2345,不正确的输出函数调用是A. printf("%d",x);B. printf("%3d",x);C. printf("%c",x) ;D. printf("%s",x);11. 若m为float型变量,则执行以下语句后的输出为m=1234.123;printf(“%-8.3f\n”,m);printf(“%10.3f\n”,m);A.1234.123B. 1234.1231234.123 1234.123C.1234.123D. 1234.123001234.123 001234.12312.putchar函数可以向终端输出一个A. 整型变量表达式B.实型变量值C. 字符串D. 字符或字符型变量值13.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。
C语言学习第二章数据类型
基本整型:表示的范围为0X0~0XFFFF。
2.4.2 整型变量
1.整型变量在内存中的存放形式
以二进制补码的形式存放。
正数:最高位为0,其余各位是该数的二进制表示 负数:最高位为1,其余各位是该数绝对值的二进制
再按位取反加1
2. 整型变量的分类
放一个字符。
下面是对c1、c2赋值: c1=‘a’;c2=‘b’; (实际上其内存中存放的是该字符的ASCII码)
字符变量的初始化,如:char c1=‘a’,c2=‘b’;
2.5.3 字符数据在内存中的存储形式及其使用方法
将一个字符常量放到一个字符变量中,实际上是将该字 符的ASCII代码以二进制形式放到存储单元中。
无符号型:(只能存放0和正整数) ① 基本整型:类型说明符为unsigned int或unsigned
在内存中占2个字节 取值范围为0~2161,即0~65535。 ② 短整型:类型说明符为unsigned short (int) 所占字节和取值范围均同基本整型。 ③ 长整型:类型说明符为unsigned long (int) 在内存中占4个字节 其取值范围是0~2321 即0~4294967295
实型常量也称为实数或者浮点数。 实型常量不分单、双精度,都按双精度double型处理,其有 效位数为(15~)16位。
实型常量的表示方式有:
(1)十进制小数形式
小数形式由数字0~ 9和小数点组成。
当某浮点数整数部分或小数部分为0时,0可以省略,但小 数点不可省略。
例如:
0.0 , .25 ,5.789 ,0.13 ,5.0 , 300. 267.8230 , 123. 等均为合法的实数。
c语言程序设计教程第二版
c语言程序设计教程第二版
《C语言程序设计教程》第二版是一本经典的编程学习教材,由谭浩强编写。
该书系统地介绍了C语言的基本语法和常用编程技巧,适合初学者入门和提高。
第二版在第一版的基础上进一步完善了内容,使得读者可以更好地理解和运用C语言。
首先,书中通过简单易懂的示例代码来解释C语言的各种语法和数据类型,帮助读者掌握基本知识。
其次,书中介绍了C语言的常用库函数和文件操作,能够帮助读者更加高效地编写实用的程序。
此外,书中还有大量的实例程序和练习题,读者可以通过实际操作来巩固所学知识。
与第一版相比,第二版在结构和内容上都有所调整。
作者对书中的章节顺序进行了优化,使得学习过程更加合理和流畅。
此外,对于某些难点知识,作者还增加了相关的解析和说明,帮助读者理解和掌握。
该书的编写风格简洁明了,例子生动具体,适合初学者阅读。
即使没有编程基础的读者,也可以通过本书的学习逐步掌握C 语言的基本概念和编程技巧。
此外,由于C语言在计算机领域具有广泛的应用,学好C语言对于深入学习计算机科学和软件工程非常重要。
总之,《C语言程序设计教程》第二版是一本很好的学习C语言的教材。
无论是初学者还是有一定基础的读者,都可以通过
这本书来提高编程能力。
读者只需要按照书中的教程一步步实践,相信能够很快掌握C语言的编程技巧。
C语言2级基础知识
计算机二级C第一章基本概念 (2)第二章C程序设计的初步知识 (4)2-1 第一节简单C语言的构成和格式 (4)2-4 第二节标识符的组成和分类 (4)2-5 第三节整型数据和实型数据 (5)第四节算术表达式和赋值表达式 (9)2-16 第五节自加自减运算 (11)2-17 第六节课后习题和典型例题讲解 (12)第三章顺序结构 (13)3-1 第一节输出函数 (13)3-6 第二节输入函数 (14)3-10 第三节程序举例 (15)3-11 第四节课后习题和典型例题详解 (16)第四章选择结构 (16)4-1 第一节关系运算符和关系表达式 (16)4-3 第二节逻辑运算符和逻辑表达式 (17)4-6 第三节选择语句的使用 (18)4-10 第四节goto语句及课后习题讲解 (22)5-1 第五章循环结构 (24)第一节while语句和do-while语句的组成 (24)5-6 第二节for语句和累加累乘算法 (26)5-11 第三节循环嵌套的实例讲解 (29)5-31 第四节break语句和continue语句的使用方法 (37)5-32 第五节课后习题和典型例题的讲解 (38)6-1 第六章字符型数据 (40)第一节字符型常量和字符型变量 (40)6-5 第二节输入输出函数 (42)6-8 第三节程序举例 (43)6-11 第四节课后习题讲解和典型例题分析 (43)7-1 第七章函数 (44)第一节函数的定义和返回值 (44)7-5 第二节函数的调用和说明 (47)7-7 第三节调用函数和被调用函数之间数据的传递 (47)7-9 第四节函数程序举例 (48)7-16 第五节课后习题讲解 (52)备注:该内容为视频内容笔记。
视频内容出处为:全国计算机等级考试二级(C语言)视频教程- 视频中心·网易学院网络地址为:/special/000915SN/cyuyan.html第一章基本概念1-1计算机语言高级语言远离硬件 VB、VF、C、C++、Java低级语言贴近硬件汇编、T-Basic基本概念1.机器语言:对于计算机本身来说,它只是接受和处理由0和1代码构成的二进制指令或数据,由于这种形式的指令是面向机器的,因此也称为“机器语言”。
C语言 第二章ppt课件
最新版整理ppt
14
(2)宏定义 宏定义的位置可以在初始说明部 分,也可以在程序的其他位置,其命令格式为:
• #define 字符串 常量 • 使用宏定义替代一个字符串,可以减少程序中
重复书写过程。请看下面的宏定义:
• #define PI 3.1415926 • 在程序中出现3.1415926的地方使用PI,就可
最新版整理ppt
13
初始说明部分
初始说明部分的位置在主函数之前,一般包括: (1)包含文件(又称头文件) 头文件的格式为:
#include <文件名>(或“文件名”)
C环境为用户提供了很多标准库函数,每一个 库函数都有自己的头文件(扩展名为.h)。如果 在程序设计时使用了库函数,则必须在初始说明
部分将该函数对应的头文件包含进去,否则,程 序会在编译时报错。
}
通过本例,可以了解到:
(1)任何一个C程序必须包含一个主函数 main(),并且主函数是唯一的主程序入口函数。 main()后面的括号可以为空,如果需要还可以包 含适当的参数。
(2)花括号中的部分是函数体,主要由C语言 的语句序列组成。每个语句后面要有一个分号,表 示命令的结束,否则编译时出错。
\n是控制字符,功最能新版是整理输ppt出一个回车。
➢ C程序由语句组成
➢ 用“;”作为语句终止符
v注释
➢ /* */为注释,不能嵌套
➢ 不产生编译代码
最新版整理ppt
17
优秀程序员的素质之一:
➢使用TAB缩进 ➢{ }对齐 ➢有足够的注释 ➢有合适的空行
最新版整理ppt
18
2.3.2 C语言的标识符
在C语言中,标识符可用作变量名、符号名、 函数名、数组名、文件名及专门含义的名字。合 法的标识符由字母、数字、下划线组成,且第一 个字符必须是字母或下划线。判断对错:
二级c语言考试习题
读程序第一章概述[1]分析下列程序段的运行结果。
main( ){ char ch1='\101',ch2='\x 5c ';printf("%c,%c\n",ch1,ch2);}第二章基本数据类型和运算[1]分析下列程序,写出运行结果。
main(){printf("C语言各数据类型的长度为:\n");printf("short %d bytes\n",sizeof(short)); printf("int %d bytes\n",sizeof(int));printf("long %d bytes\n",sizeof(long);printf("char %d bytes\n",sizeof(char));printf("float %d bytes\n",sizeof(float)); printf("double %d bytes\n",sizeof(double)); }第三章顺序、选择和循环结构的程序设计[1]阅读程序,写出运行结果。
main(){ int a=10,b=4,c=3;if (a<b) a=b;if (a<c) a=c;printf("%d,%d,%d",a,b,c);}[2]阅读下列程序,写出程序的输出结果。
main(){ int x=100,a=10,b=20,ok1=5,ok2=0; if (a<b)if (b!=15)if (!ok1)x=1;else if(ok2)x=10;else x=-1;printf("%d\n",x);}[3]阅读下列程序,写出程序运行的输出结果。
main(){ int y=9;for (;y>0;y--)if(y%3==0){printf("%d",--y);continue;}}[4]阅读下列程序:main(){int a;char b;float c;printf("input a b c:");scanf("%d%c%f",&a,&b,&c);printf("a=%d,b=%c,c=%f\n",a,b,c);}程序运行后若输入“1234r1234.567(回车)”,写出程序的输出结果。
C语言2
C:如果函数值的类型与返回值类型不一致,以函数值类型为准
D:如果形参与实参类型不一致,以实参类型为准
答案:C
第5题 (1.0分) 题号:561 难度:中 第1章
以下叙述中正确的是 ()。
A:C程序中注释部分可以出现在程序中任意合适的地方
}
A:0
B:5
C:1
D:不确定值
答案:A
第11题 (1.0分) 题号:491 难度:中 第1章
下列程序段的输出结果为()。
float k=0.8567;
printf("%06.1f%%",k*100);
A:0085.6%%
B:0085.7%
答案:D
第23题 (1.0分) 题号:544 难度:中 第1章
char *s1="hello",*s2;s2=s1;则()。
A:s2指向不确定的内存单元
B:不能访问"hello"
C:puts(s1);与puts(s2);结果相同
D:s1不能再指向其它单元
D:&
答案:A
第8题 (1.0分) 题号:148 难度:中 第1章
C语言中要求对变量作强制定义的主要理由是()。
A:便于移植
B:便于写文件
C:便于编辑预处理程序的处理
D:便于确定类型和分配空间
答案:D
第9题 (1.0分) 题号:92 难度:中 第1章
A:static int a[2][3]={1,2,3,4,5,6};
B:static int a[2][3]={{1},{4,5}};
c语言中的二维数组
c语言中的二维数组一、二维数组的定义和基本概念在C语言中,二维数组是具有二维结构的数组,它相当于一个矩阵。
二维数组由行和列组成,每一行都是一个一维数组,而整个二维数组是由多个这样的行组成的。
二维数组的元素用方括号和行号、列号表示,例如:array[i][j]。
二、二维数组的初始化1.静态初始化:在定义二维数组时,可以使用大括号{}为数组元素赋初值。
例如:```cint array[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};```2.动态初始化:在程序运行过程中,可以使用循环为二维数组赋值。
例如:```cint array[3][3];for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {array[i][j] = i * 3 + j + 1;}}```三、二维数组的访问和操作1.访问二维数组的元素:使用数组名和方括号表示,如:array[i][j]。
2.修改二维数组的元素:使用赋值操作符“=”,如:array[i][j] = value。
3.遍历二维数组:使用嵌套循环,如:```cfor (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {printf("%d ", array[i][j]);}printf("");}```四、二维数组的应用实例1.矩阵加法:两个矩阵相加,结果为一个同样大小的矩阵,元素为两个矩阵对应位置元素的和。
```c#define ROW 3#define COL 3int matrix1[ROW][COL] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};int matrix2[ROW][COL] = {{9, 8, 7},{6, 5, 4},{3, 2, 1}};int result[ROW][COL];for (int i = 0; i < ROW; i++) {for (int j = 0; j < COL; j++) {result[i][j] = matrix1[i][j] + matrix2[i][j];}}for (int i = 0; i < ROW; i++) {for (int j = 0; j < COL; j++) {printf("%d ", result[i][j]);}printf("");}```2.矩阵乘法:一个矩阵与另一个矩阵相乘,结果为一个大小为行数乘以列数的矩阵,元素为两个矩阵对应位置元素的乘积之和。
c语言程序设计教程第二版课后习题答案
c语言程序设计教程第二版课后习题答案第一章:C语言基础1. 以下为C语言的特点:- C语言是一种结构化编程语言,可以通过模块化的方式构建复杂的程序。
- C语言具有较高的可移植性,可以在不同的操作系统和硬件平台上运行。
- C语言提供了丰富的库函数,方便开发者进行程序开发。
- C语言对指针的支持较好,可以进行底层的内存操作。
2. C语言中的标识符规则:- 标识符由字母、数字和下划线组成,且第一个字符不能是数字。
- 标识符区分大小写,因此变量名"num"和"Num"是不同的。
- 标识符不能与关键字重名,如"if"、 "for"等。
- 标识符长度一般不超过32个字符。
3. 在C语言中,预处理指令的作用是在程序编译之前对代码进行处理,包括宏展开、文件包含等。
预处理指令以"#"开头,常见的预处理指令有:- #include:用于包含头文件,将头文件中的内容插入到当前文件中。
- #define:用于定义宏,将宏名称替换为指定的值或代码片段。
- #ifdef、#ifndef、#endif:用于条件编译,根据条件是否成立来选择性地编译代码。
4. C语言中的数据类型分为基本数据类型和派生数据类型两种。
基本数据类型包括整型、浮点型、字符型和布尔型,派生数据类型包括数组、指针、结构体和共用体。
5. C语言中的运算符主要分为算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符等。
算术运算符用于执行加减乘除等基本算术操作,关系运算符用于比较两个值的大小关系,逻辑运算符用于组合多个条件的判断结果,位运算符用于对二进制位进行操作,赋值运算符用于将右侧的值赋给左侧的变量。
第二章:C语言程序结构1. C语言程序结构由函数、语句和注释组成。
每个C语言程序至少包含一个main()函数,作为程序的入口。
2. 以下为C语言程序的基本结构:```c#include <stdio.h>int main() {// 程序代码return 0;}```3. C语言中的控制语句包括条件语句和循环语句。
二级C语言习题汇总及答案
计算机二级C语言习题集汇总及答案目录第一章C语言基础知识第二章C语言程序设计的初步知识第三章顺序结构程序设计第四章选择结构程序设计第五章循环结构程序设计第六章数组第七章函数第八章指针第九章结构体与共用体第十章文件附录1 预处理命令附录2 位运算模拟试题一模拟试题二模拟试题三模拟试题四模拟试题五第一章答案第二章答案第三章答案第四章答案第五章答案第六章答案第七章答案第八章答案第九章答案第十章答案附录1 答案附录2 答案模拟试题一答案模拟试题二答案模拟试题三答案模拟试题四答案模拟试题五答案第一章C语言基础知识一、选择题1.C语言规定,必须用C 作为主函数名。
(0级)A)Function B)include C)main D)stdio 2.一个C程序可以包含任意多个不同名的函数,但有且仅有一个,一个C程序总是从 B 开始执行。
(0级)A)过程B) 主函数C)函数D)include3. A 是C程序的基本构成单位。
(0级)A)函数B) 函数和过程C) 超文本过程D) 子程序4.下列说法正确的是C 。
(0级)A) 一个函数的函数体必须要有变量定义和执行部分,二者缺一不可B) 一个函数的函数体必须要有执行部分,可以没有变量定义C) 一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数D) 以上都不对5.下列说法正确的是D 。
(0级)A) main函数必须放在C程序的开头B) main函数必须放在C程序的最后C) main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的D) main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的6.下列说法正确的是 C 。
(0级)A) 在执行C程序时不是从mian函数开始的B) C程序书写格式严格限制,一行内必须写一个语句C) C程序书写格式自由,一个语句可以分写在多行上D) C程序书写格式严格限制,一行内必须写一个语句,并要有行号7.在C语言中,每个语句和数据定义是用C 结束。
C语言 习题二 参考答案
第二章:C程序的基本结构一、单项选择题1、以下不是C语言的特点的是________。
A)语言的表达能力B)语言定义严格 C)数据结构系统化 D)控制流程结构化2、TC编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是________。
A)编辑和编译 B)编译和连接 C)连接和运行D)编辑和运行3、以下不是二进制代码文件是________。
A)标准库文件 B)目标文件C)源程序文件 D)可执行文件4、下面个选项组中,均属于C语言关键字的一组是________。
A)auto,enum,include B)switch,typedef,continueC)signed,union,scanf D)if,struct,type5、下面四组字符串中,都可以用作C语言标识符的是________。
A)print B)I \am C)signed D)if_maf scanf 3mf ty_prmx_2d mx_ a.f x1#aMb6 AMB A&B 5XY6、以下不属于流程控制语句的是_________。
A)表达式语句 B)选择语句 C)循环语句 D)转移语句7、下面描述中,不正确的是________。
A)C语言的函数体由一系列语句和注释组成。
B)注释内容不能单独写在一行上。
C)C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明。
D)scanf和printf是标准库函数而不是输入和输出语句。
8、下面描述中,正确的是________。
A)主函数的花括号必须有,而子函数中的花括号是可有可无的。
B)一个C程序行只能写一个语句。
C)主函数是程序启动时的唯一入口。
D)函数体包含了函数说明部分。
二、填空题1、一个完整的C程序至少要有一个________函数。
(主函数)2、标准库函数不是C语言本身的组成部分,它是由__________提供的功能函数。
(编译系统)3、C语言是以________为基本单位、整个程序由________组成。
C语言编程第二类
编写一程序P219.C实现以下功能从键盘读入一行字符(约定:字符数≤127字节),将其中的数字字符以及这些数字字符的数量在屏幕上显示,注意:要求先显示这些数字字符的数量。
编程可用素材:printf("Please input string:")...、printf("\nshu zi ge shu wei:...、printf("\nshu zi wei:...。
程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwafl faf32535as3bf0是从键盘输入的内容。
#include <stdio.h>#include <string.h>int main(void){int num=0, i;char str[128], jieguo[128];printf("Please input string: ");gets(str);for (i=0; str[i]!='\0'; i++){if (str[i]>='0' && str[i]<='9'){jieguo[num] = str[i];num++;}}jieguo[num] = '\0';printf("\nshu zi ge shu wei:%d", num);printf("\nshu zi wei:%s", jieguo);return 0;}编写一程序P220.C实现以下功能从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。
编程可用素材:printf("Please input string:")...、printf("\nzimu=...,shuzi=...,kongge=...,qita=..."...。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012-10-18
5 6 5 5
3 6 2 3
8 10 4 9
x1 x2 x3 x4
自变量
6
Y AX
数学函数(4)
y
一个变量 二个变量
f (x)
自变量 与 因变量 的关系 一个变量 二个变量 …… N个变量
2012-10-18 15
对函数接口加以注释说明
/* 函数功能:实现××××功能 函数参数:参数1,表示××××× 参数2,表示××××× 函数返回值: ××××× */ 返回值类型 函数名(参数表) { 函数体 return 表达式; }
2012-10-18 16
例计算两个整数的平均数
/* 函数功能: 计算平均数 函数入口参数: 整型x,存储第一个运算数 整型y,存储第二个运算数 函数返回值: 平均数 */ int Average(int x, int y) { int result; result = (x + y) / 2; return result; }
*/ int Average(int x, int y) { int result; result = (x + y) / 2; return result; 2012-10-18 }
23
函数的嵌套调用
在被调函数中,又调用了函数----嵌套调用
main() { ① … … a(); ⑦ }
2012-10-18
2012-10-18 17
函数调用(call)
单向值传递 调用函数时,必须提供所有的参数 – printf和scanf是采用变长变量表定义的函数,所以
变量的个数不固定。
提供的参数个数、类型、顺序应与定义时相同
实际参数 形式参数
2012-10-18
18
例5.1b 使用了Average函数的main()
Moe
2012-10-18
2
程序设计的艺术
结构化程序设计有两大最高级的艺术 – 算法设计艺术 – 结构设计艺术 C语言为程序的结构提供了两样武器 – 函数和模块 函数(function)是结构设计的最基本单位 – “一个程序应该是轻灵自由的,它的子过程就象
串在一根线上的珍珠。”
Geoffrey James的《编程之道》
2012-10-18 25
6. 写出下列程序的输出结果________ #include <stdio.h> long fac( int n ) { if ( n==1 ) return 1; return n*fac(n-1); } main() { printf( “5!=%ld\n”, fac(5) ); } 答案: 【5!=120】
发生调用时,实参数组 的首地址传给形参数组 ,这样实参数组和形参 数组共用同一段内存单 元,对形参数组的操作 就是对实参数组的操作
29
} 2012-10-18
数组名作函数的参数 (程序)
void sort(int s[],int n) { int j,t,k; main()
for(j=0;j<n-1;j++)
main() { int a = 12; int b = 24; int ave;
main() { int a = 12; int b = 24; int ave; ave = Average(a, b); } int Average(int x, int y) { int result; result = (x + y) / 2; return result; 数据传递 执行顺序
– 有助于编译器进行类型检查
声明时不要省略参数以及返回值的类型
2012-10-18
21
#include <stdio.h>
/*
函数功能: 计算平均数 函数入口参数: 整型x,存储第一个运算数 整型y,存储第二个运算数 函数返回值: 平均数 */ int Average(int x, int y) { int result; result = (x + y) / 2; return result; }
2012-10-18 26
参数传递
传值 传地址
2012-10-18
27
“值传递”举例
main() /*将一整数乘以10后显示出来*/ 在内存mnu与n {int num=5,result; 是两个不同的 result=mult10(num); 存储单元,如 printf(“result=%d ”,result); 果同名呢? printf(“num=%d ”,num);} int mult10(n) “值传递”是单向传 int n; 调用mult10时: 递 返回时: {n*=10; return(n);} 实参变量num的值 num
2012-10-18
31
printf(……);
}
ave = Average(a, b); printf("Average of %d and %d is %d.\n", a, b, ave);
}
2012-10-18 19
函数调用(call)
有返回值时 – 放到一个数值表达式中
如
返回值 = 函数名(实参表列);
c = max(a,b); – 作为另一个函数调用的参数
函数定义和调用
函数的定义方法 函数类型和返回值
·函数原型、函数名、形式参数、函数返回值、函数体 ----函数执行过程的描述 ·不同类型函数定义、缺省类型、空类型
掌握 理解
函数传值调用
·形参、实参及其参数单向传递
·函数原型及作用 ·用户定义函数说明 ·系统库函数说明---用头文件包含 ·传值调用和传址调用 ·数组名作为函数参数 ·递归函数的定义和调用 ·递归函数的执行过程
例5.1
main() { int a = 12; int b = 24; int ave = Average(a, b); printf("Average of %d and %d is %d.\n", a, b, ave); }2012-10-18 22
#include <stdio.h> int Average(int x, int y); /*声明Average()函数*/
掌握
理解 理解 理解 掌握 理解 知道 理解
函数说明
函数参数类型和函 数的传址调用 函数嵌套调用和递 归调用
2012-10-18
1
内容提要
函数定义、函数调用、函数原型、函数返回值 – 难点:函数的参数传递与返回值 全局变量、自动变量、静态变量、寄存器变量 – 难点:变量的作用域与存储类型 程序调试 结构设计与模块化 Larry 代码风格问 = 12; int b = 24; int ave = Average(a, b); printf("Average of %d and %d is %d.\n", a, b, ave); }
/*
函数功能: 计算平均数 函数入口参数: 整型x,存储第一个运算数 整型y,存储第二个运算数 函数返回值: 平均数
a 函数 ③ { ② b(); … ⑥ ⑤ return; }
b函数 { … ④ … return; }
24
递归(Recursion)函数
函数直接或间接调用自己为递归 阶乘函数的递归实现()
unsigned long Factorial(unsigned int n) { if (n < 0) printf("data error!"); else if (n==0 || n==1) return 1; else return n * Factorial(n-1); }
s[k]=t;}
2012-10-18
printf(“%d,”,a[j]);
}
30
函数间的参数传递
在函数被调用时才分配形参的存储单元 实参可以是常量、变量或表达式 实参类型必须与形参相符 单个变量传递时是传递参数值,即单向传递 数组作为参数时的情况:
*数组元素作实参,与单个变量一样,是“值传递” *数组名作参数,形、实参数都应是数组名,类型要 一样,传送的是数组首地址,是“地址传递”
7
……
N个变量
2012-10-18
数学函数(5)
关系
集合A 集合B
2012-10-18 8
程序设计中的函数
程序设计中的函数不局限于计算 – 计算类,如打印阶乘表的程序…… – 判断推理类,如排序、查找……
2012-10-18
9
用函数解决问题的要点
分而治之 – 函数把较大的任务分解成若干个较小的任务,并提炼出
for( k=j+1;k<n;k++) 发生调用时对s数组的排序, sort(a,10); if(s[j]<s[k]) 就是对a数组的排序 for(j=0;j<10;j++) {t=s[j];
{int j,a[]={60,70,55,89,90,100 ,67,88,76,95};
s[j]=s[k];
公用任务
复用 – 程序员可以在其他函数的基础上构造程序,而不需要从
头做起
信息隐藏 – 设计得当的函数可以把具体操作细节对程序中不需要知
道它们的那些部分隐藏掉,从而使整个程序结构清楚 Larry Curly Moe
2012-10-18
10
C中的函数(Function)
说明:
一个源程序文件由一个或多个函数组成。