c语言程序设计
页眉内容
《c语言程序设计》听课笔记:01
演变历史:CPL-BCPL-B-C
面向机器的高级语言
C语言的特点:1语言简洁,紧凑,使用灵活 2运算符丰富 3具有数据类型构造能力 4具有很强的流程控制结构 5语言生成的代码质量高 6可移植性较好(显著的特点) 7语言限制不够严格
程序设计语言的构成:数据,运算,控制结构,存储管理,运算环境
数据:提供用于加工的各种类型的初等数据项和数据结构
运算:为数据提供一组有效的数据运算
控制结构:为一系列被执行的基本运算提供控制运算顺序的机构
存储管理:动态,静态
运算环境:内部,外部
程序设计语言的实现:(1)翻译或编译:1编译程序:高级语言源程序-机器语言目标程序 2汇编程序:汇编语言源程序-机器目标语言程序 3装配程序:机器语言源程序-机器语言目标程序(2)软件模拟:高级语言源程序-运行结果
字符集:1数字:0-9 2字母:A-Z,a-z 3特殊字符:-,#,、,(,)等 4运算符:+,-,/,%等
保留字:1类型说明和定义保留字:chai,int,short等 2存储类说明保留字:auto,resgister,static,extern 3特定字:用在预处理程序中,define,undef,include.
标示符:保留字,特定字,一般标示符,
一般标示符:用来标识变量名,常量名,函数名,数组名,类型名,文件名等的符号名字:(1)标识符其结构定义:以字母(包括下划线)开头的字母数字串
注意:书写标识符时有大小写区别,标示符的长度无统一规定
C语言以左大括号开头以右大括号结束,分号前的语句表示C语言的输出字符
《c语言程序设计》听课笔记:02
一、整形数据的类型:
a)整型常量:整型常量即整常数,有十进制、八进制和十六进制整数。
十进制数:一串连续的数字表示,最高位为非零。
八进制数:以数字零开头。
十六进制数:以数字零和字母x开头,a-f不区分大小写。
b)整型变量:分为有符号和无符号两种,所有整型变量在使用前必须加以说明和定义
有符号的整型变量分为三种:标准整型(int)、短整型(short)和长整型(long),其值可正可负。
无符号的亦可分为三种:标准整型(unsigned int)、短整型(unsigned short)和长整型(unsigned long),其值不能为负。
? int、short和long区别主要是表示的整数范围不同,用一个机器字来存放一个int型数据。且int、short和long型整数的字长满足:short short占16位,即两个字节。long占32位,即四个字节。 16位处理的数的范围:-32768~32767 正整数:以原码形式存放在内存中,16位是正数范围为0~32767 负整数:以补码方式存放在内存中 补码的求法:1.原码除符号位其余位均取反+1;2.用模减去绝对值。 补码还原十进制:除符号位其余位取反后转化成十进制数,将结果-1,还原出十进制数 二、字符型数据 a)字符型常量: 1.由一对单引号引起来的单个字符(可打印) 2.转义序列:反斜线后跟特定的字符(不可打印),作为一个字符对待,如其后的字符不能和\构成转义序列,则\被忽略。 \n 换行符\r 回车符,回到此行的开头,并不换行 \t Tab键,一次性输入多个空格 \b 退格符,光标向回走 \f 换页符,到下一页的开始 \\ 输出符号\ \' 输出单引号' \0 空字符,不是空格,ASCII 码中=0 \ddd 1~3位8进制数字 \0xff 1~2位16进制数字 PS:ASCII 码是2进制7位有效,占8位,所以对于8进制来说需要3位,对于16进制来说需要2位 《c语言程序设计》听课笔记:03 b)字符型变量:由保留字char来说明(格式为char c1,c2;)其中c1、c2中只能各存放一个字符标准输入输出函数stdio.h(putchar:将键盘输入的字符显示在显示器上、getchar:用户从键盘输入字符给变量) ? 字符数据在计算机内部是以一个字节(8位)的二进制形式表示的,所以对要处理的字符通常先进行编码(整数型,但是对于有无符号,没有特别规定),对一个char型变量赋值一个 整型值时,可能是ASCII 码 printf中的参数可以有多个,但第一个参数必须是字符串,我们称其为格式串(可显示字符直接显示,\n之类的控制字符则产生相应的动作)。 常用的转换符有:%d 输出的是十进制整型%c输出的是字符型%f输出的是浮点型%s输出的是字符串型(C语言中用数组实现)\0是字符串结束的标志。 char型可参与任何整数运算,但是必须转化成ASCII 码后进行 数字字符<--->整数值:基准字符‘0’,任意数字字符‘X’-‘0’=X(数值) 字符量可以参加关系运算(<、>之类),但是必须转化成ASCII 码后进行 字符量可以参加逻辑运算(&之类),但是必须转化成ASCII 码后进行 c)字符串常量(字符串无变量):用一对双引号括起来的零个或多个字符的序列。 字符串常量“x”内存中占2个字节(“x”=x/0) 字符串两边的双引号是字符串的分界符,而不是字符串的一部分,双引号的ASCII码值是042,要输出双引号\042 eg:The "a" is an indef art.The \042a\042 is an indef art. 字符串中所含的字符个数称字符串的长度(不包含结尾的\0)。例如:“XYZ”的长度为3,“”的长度为0,称为空串。但是字符串所占的空间为长度+1(包含结尾的\0) 转义系列也可以出现在字符串中,但只是作为一个字符串来看待。 三、浮点型数据 分为浮点型常量和浮点型变量。 a)浮点型常量:分为非指数型和指数型两种。 非指数型是不带指数部分的实数型常数 指数型常数是指带有指数部分的实数:e(E)之前必须有数字,之后的指数必须为整数,且不能插入空格。b)浮点型变量:通过保留字float来说明(格式为float x, y, z;) 《c语言程序设计》听课笔记:04 ? 十进制含有小数的转化为二进制的方法:整数部分和小数部分分别转化为二进制,中间用点连接,这种小数表示方法将小数点放置最后(没有小数点),或者最前面 (可忽略小数点),则可剔除小数点的问题 所以任意一个二进制实数N总可以表达成N=S*2P(P次方)(P、S为有符号二进制整数,P称阶码,S称尾数并约定其中没有小数点或可忽略小数点),可假设存储时P占8位 (若指数为负,存储时取其补码,用(8位模)减绝对值即可),S占24位(具体S、P占的位数并无硬性规定) 浮点型数据在内存中一般占4个字节(32位:24位尾数+8位阶码),7位精度,浮点型输出时,小数点留6位整型数据占两个字节(16位) 四、双精度数据 双精度变量:双精度一般占8个字节(64位:48位尾数+16位阶码),17位精度(C中浮点常量通常以双精度存放和表示) 双精度变量通过保留字double来说明(格式为double a, b;) 复习: 整型数据:int a, b;(内存中占2个字节16位) 字符型数据:char a, b;(内存中占1个字节8位)可参与整数运算 浮点型数据:float a, b;(内存中占4个字节32位,以阶码和尾数表示) 双精度数据:double a, b;(内存中占8个字节64位) 五、变量的初始化 变形说明完之后到使用之前,要赋初值 六、变量的存储类 变量的两个属性: 存在性:变量都具有一个数据类型并以一定方式存在在内存中 可见性:在其作用域(作用域指该变量有定义的程序部分)中是可见的(活动的),出了作用域则不再可见 变量的以上两个属性以四个变量存储类决定: 自动的(auto):每一次从程序中进入某个函数时,函数中的这个变量的值总会取初始化的值 寄存器(register):用到计算机的寄存器,硬件变量 静态的(static):下次进入这个函数时,函数中的这个变量绕过初始化的部分,取上次这个函数结束时的值 外部的(extern):全局变量 《c语言程序设计》听课笔记:05 a)自动变量:由保留字auto说明(auto可省略) 是局部变量,每进入一次函数体,就赋一次指定的初值(在进行编译前必须赋值),作用域局限于所在函数或块b)寄存器变量:在变量说明前面加保留字register来完成 是局部变量,用法和作用域同自动变量,变量保留在CPU的寄存器中,占用固定的存储空间,只是对编译程序的一种建议(希望为寄存器变量),不是强制的,一般用于系统开发 寄存器变量无地址,不能进行求地址运算 寄存器变量的说明应尽量靠近使用的地方,用完尽快释放(有限的硬件资源) c)静态变量:在变量说明前面加保留字static来完成 静态局部变量生存期延长到程序运行结束(不止是函数结束),不一定赋初值,编译时对无值的赋予0,用法和作用域同自动变量 d)外部变量: 函数外部任意位置定义的全局变量(作用域:从定义位置起到整个源文件结束;生存期:整个程序的运行期间) 外部变量与局部变量同名时,外部变量被摒弃 每个引用外部变量的函数,都应对外部变量用extern加以说明 第三章运算 一、运算符 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符?: 逗号运算符, 指针运算符*& 求字节数符sizeof(数据类型) 强制类型() 成员运算符-> 其他 二、算术运算符 a)基本算术运算符: C中算术运算符的先后顺序(单步运算优先级高于双步运算):-(负号) * / + -(减号) 运算符优先级从高到低,从左至右 b)模运算符%:二元运算符,优先级同和结合方向同* / 两侧操作数为整型数据,n%m结果为n/m的余数,余数符号与被除数一致 c)赋值运算符:二元运算符,做操作数必须为变量,右操作数可以为常量、变量、表达式 赋值表达式可以出现在其他表达式中,右侧也可为赋值表达式 “=”的结合方式从右至左 算术运算符优先级高于赋值运算符 复合的赋值运算符:+= -= *= /= d)++ --运算符(使对象加1或者减1) 单目运算,运算变量可以是整型或者实型变量,不能是常量或表达式 优先级和结合方向:++--(一元复)从右到左 */%从左至右 +-(二元减)从左至右 构成形式:前缀(++a,--a)后缀(a++,a--),前缀值是运算之后的,后缀值是运算之前的,但a的值相同 eg:a=3 ++a,表达式的值为4,a=4 a++,表达式的值为3,a=4 《c语言程序设计》听课笔记:06 eg:i=3 j=i++*++i+i--*--i j=3*4+3*2=18 先同时运行++i和--i e)混合运算中的类型转换 当运算符两边的操作数类型不同时,其中一个要进行类型转换和另一个保持一致后,才能进行运算 转换过程中遵循就高不就低的原则:即级别低的操作数先转换成和级别高的操作数类型一致,然后再运算,结果的数据类型和级别高的一致(字节多级别高,这样定义不会损失精度) 具体关系:高double<------float | long | unsigned 低 int <------char,short 强制类型转换表达式(高级别向低级别转换时使用,低级别向高级别转换由系统自动完成):(类型)(表达式),此表达式只转换离自己最近的数,表达式可不带括号 ps:使用强制类型转换表达式时,若浮点型向整型转化,小数点后的数直接舍去,不存在四舍五入 类型转换也发生在赋值运算符的两边,且不管赋值运算符右边的表达式的结果类型如何,一律转换为左边变量的类型,然后再赋给左边的变量 类型的提升:将低级类型转换成高级的(增加二进制位),精度不损失 类型的下降:将高级类型转换成低级的(截断和舍入二进制位),一般会造成精度的损失 f)逗号表达式 结合方式:由左至右 优先级最低,从第一个表达式开始计算,一直到最后一个表达式,且逗号表达式的值为最后一个表达式的值,但不能前面的表达式不求而直接求最后一个 eg:(i=3,i++,--i,i+5) i=10 《c语言程序设计》听课笔记:07 %取余 第四章C语句及控制结构 1、C语句分为四类 1)、空语句: ; 作用:循环体和转向点 2)、表达式语句 功能:表达式求值 函数调用语句也属于表达式语句的一个特例,如: ch=getchar();putchar(ch);printf("%d\n",5); 3)块(复合语句) { 语句组 } 4)控制语句:条件、循环 一、关系运算符 关系表达式 值是逻辑值,1真,0假 二、逻辑运算符 &&优先级高于|| 三、说明 1、将一个量作为逻辑量来判断真假值是,非零真,零假 2、逻辑运算符的操作数,可以是任何类型的数据 3、若&&前的表达式是0,或||前的表达式是1,则不用执行后面的表达式,这种现象称为短路1。条件分支语句 1、简单if if()putchar() 语句也可以是块: if(){} if(条件).1.; .2.; 若条件成立,执行1,再执行2;不成立,执行2。 《c语言程序设计》听课笔记:08 b)块if if(表达式) 语句1 else 语句2 c)if-else-if语句 if(表达式1) 语句1 else if(表达式2) 语句2 ∶ else if(表达式n) 语句n else 语句n+1 ps:嵌套使用if语句时,else只和其前面最接近它的if配对 如果让其和最外层if配对,必须用块来显示地标界 输入函数scanf(“格式串”,&变量名); d)条件运算符?:(三目运算符) 表达式1 ?表达式2 :表达式3 若表达式1的值非0,则结果为表达式2的值,否则为表达式3的值 常用来构成一个赋值语句 ps:条件运算符?:的优先级仅比赋值运算符和逗号运算符高,所以一般应该加括号使用 五、循环 1、while循环 a)while循环 while(表达式)语句 条件满足时执行循环体,不满足时结束循环转去执行下一条语句。 Ctrl+break键可以结束程序中的死循环 ps:while循环是“先判断,后执行”,若一开始表达式就不满足,则语句永远不会被执行循环条件一定要有不满足的时候,避免死循环 循环体若包含一个语句以上,应组成复合语句{} b)break语句 可中断循环,跳出循环执行下面的语句,常与if语句一起使用 《c语言程序设计》听课笔记:09 c)continue语句 跳出本次循环体直接进行下一轮循环(个别情况不处理时使用) 2、do-while(直到型循环) do 语句 while(表达式) ps:先执行,后判断,至少执行一次循环体,break和continue在do-while语句中也起相同的作用3、for循环 用于定长循环(循环次数确定),也可以用于变长循环,完全可取代while循环。 for(e1;e2;e3)语句 a)e1:循环变量初始化 b)e2:循环条件测试(成立执行语句) c)e3:循环控制变量的增量操作 《c语言程序设计》听课笔记:10 六、goto语句及语句标号(不提倡使用) goto 语句标号; 语句标号是一个标识符(命名规则同变量),只在说明它的函数中是可见的,不能重名。 七、switch 语句 swich (整型表达式) { case常量表达式1; 语句组1 ...... case n; 语句组n default: 语句组n+1 } 匹配上后,逐条执行以后语句。 a)switch后边括号内表达式可以为整型或字符型 b)多个case可以执行一个语句 c)加break可实现多分支 d) default 可省略 《c语言程序设计》听课笔记:11 习题课 例1:打印出1900~2000所有的闰年 四年一闰,百年不闰,四百年再闰 公历闰年的简单计算方法: 设年份year if (year能被4整除and 不能被100整除) or year能被400整除 该年为闰年 否则该年为平年 #include main() { int year; for(year=1900;year<=2000;year++) if((year%4==0&&year%100!=0)||(year%400==0))printf("%d,",year); getch(); } 若改为打印出平年,则将上述程序划线部分改为以下程序 if(!((year%4==0&&year%100!=0)||(year%400==0)))printf("%d,",year); 例2:求最大公因数a=12 b=32 1)比大小a:小b:大 2)设一个数for(i=1,i<=a,i++) 3)(a%i==0)&&(b%i==0),则把i的值赋给一个变量k,将其记忆#include main() { int a,b,t,i,k; printf("Please input a and b\n"); scanf("%d %d",&a,&b); if(a>b) { t=a; a=b; b=t; } for(i=1;i<=a;i++) { if((a%i==0)&&(b%i==0))k=i; } printf("%d\n",k); getch(); } 若改求最小公倍 1)比大小a:小b:大 2)设一个数for(i=1,i<=a,i++) 3)(b*i)%a==0,则把b*i的值赋给一个变量k,将其记忆 将上述程序的划线部分更换成以下部分即可 for(i=1;i<=a;i++){ if((b*i)%a==0) { k=b*i; break; } } 例3:三三数之剩二,五五数之剩三,七七数之剩二,x最小? 即:x%3 = 2 x%5 = 3 x%7 = 2 假设x从9开始 #include main() { int x=9; while(!((x%3==2)&&(x%5==3)&&(x%7==2)))x++; printf("%d\n",x); getch(); } 例四:百钱买百鸡,小鸡0.5元,母鸡2元,公鸡3元,共100元要买100只,有哪些买法?设小鸡买h只 公鸡买c只 母鸡买100-h-c只 则有0.5*h+2*(100-h-c)+3*c=100 #include main() { int h,c; for(h=1;h<98;h++) { for(c=1;c<98;c++) { if(((0.5*h+3*c+2*(100-c-h))==100)&&((c+h)<100)) { printf("h=%d m=%d c=%d\n",h,100-h-c,c); } } } getch(); } ps:程序最后的getch(); 语句是在WIN-TC中需要的,TURBOC不需要 《c语言程序设计》听课笔记:12 第五章函数 一、函数和C程序结构 1、函数是构成C程序的基本单位。 2、一个程序中含函数的个数没有限制,但必须有main()函数。 3、整个程序从main开始执行,各函数之间的关系是平行的,无主次之分,可返回值,也可不返回。 4、C函数可分为库函数和自编函数。 5、调用C标准库函数时用#include 二、函数的构成及定义 函数构成: 类型函数名(形参表)类型指返回值的类型 形参说明 { 内部说明和定义 函数执行部分 } 函数的构成可以概括为:函数头部+函数体 同一函数的定义在同一程序中只能出现一次,一个函数只能定义一次,但可以说明多次 三、函数的参数和返回值 a)形式参数和实际参数 1、形参:定义函数时,函数后面圆括号中的参数。 2、实参:调用函数时,函数后面圆括号中的参数,可以是变量(可以是变量名,但是要有确定的值)、常量、表达式。 3、实参的个数和类型应与形参的个数和类型按定义时的顺序完全一致。 4、实参和形参分别占据不同的存储单位。 5、形实结合采用值传递,即实参的值单向传给形参,实参的值不变。 6、函数名();———函数的调用 b)数的返回值 1、函数的返回值是通过函数中的return语句得到。 2、语法是:return(表达式)或return 表达式 3、先求解表达式,然后返回该表达式的值(返回调用处,所以一般在赋值语句的右边); 4、一个函数中可有多个return语句,当执行到该函数的任一条return语句时,都从该函数返回(其他部分不执行)。 5、如果不需要从函数返回值,则函数中可以没有return语句或return语句后不带有任何表达式。 《c语言程序设计》听课笔记:13 四、函数的调用 1、调用的一般形式:函数名(实参列表)(函数的定义后面为形参列表) 2、过程调用:不引用被调函数的返回值 3、函数调用:引用被调函数的返回值 4、函数调用若无返回值可能出现垃圾数据(若为函数调用,被调用的函数应该有返回值) ps:过程调用和函数调用都与返回值无关 五、函数的类型及说明 1、函数的类型是指函数返回值的类型 2、对返回值不是int或char的函数,必须在定义时给出类型说明(没有说明的默认为int或char) 3、在main中对函数类型进行说明:类型被调用函数名()或将函数定义放在main前 4、一个函数只能被定义一次,可说明多次,定义与说明不同 5、每个函数可当成外部变量,即全局的 6、只能以过程调用的函数,一般应定义为void类型,C编译不再为其返回值分配存储单元 ps:被调用的函数,其形参类型的说明,应该在整个函数块之前,即{}之前 被调用的函数,若在main函数之前,则不再需要特别的说明,若在main函数之后,则需要进行说明 六、函数的递归调用 1、函数的递归调用:在函数中又调用了其本身 2、递归调用分为直接递归调用和间接递归调用 直接递归调用: a() {...a();...} 间接递归调用: a() {...b();...} b() {...a();...} 3、递归与嵌套循环的区别: 递归调用终止于系统空间耗尽之时,循环嵌套会陷入死循环(死循环永远不会停) 递归调用是循环和函数之间,死循环是在循环与变量之间,所以递归更占空间 4、编写递归之前,应先给出递归的边界条件(若无,则递归无从终止)和递推公式(若无,则不是递归) 《c语言程序设计》听课笔记:14 建立递归:边界条件,递推公式 1、汉诺塔:边界条件:h(1)= 1 递推公式:h(n)= 2h(n-1)+1 2、20级楼梯,一次可以迈一级或两级,迈完一共几种方法? 边界条件:c(1)= 1,c(2)=(2) 递推公式:c(n)= c(n-1)+c(n-2)(n>=3) 3、编写一个程序它从键盘上读入一个整数,经它的所有正因子输出。 for(d=1;d<=n;d++) if(n%d==0)printf(“%d\n”,d); 《c语言程序设计》听课笔记:15 第六章C预处理程序 源程序在编译前要进行“预处理” 预处理主要完成以下功能:1.宏替换 2.文件包含 3.条件编译 一、宏替换 1)简单的宏替换 #define PI 3. …… double area(radius) double radius; { return(PI*radius*radius); } ps:由“#”开始的命令是C预处理程序处理的命令 #define是宏的定义命令,其一般形式为:#define P a 表示要把源代码中出现在该行之后的每一个P都用a来代替。 说明:1、宏定义必须定义在第一次使用该宏之前 2、宏定义不是以分号结束的 3、#define Pa之间至少要有一个空格 4、P为宏,a为宏扩展 5、宏名用大写字母表示(习惯) 6、宏的好处:a)简化书写 b)提高可读性 c)便于修改 d)提高可移植性 7、预处理程序将不替换字符串中或用单引号括起来的字符常量的宏#define HELLO “bonjour\n” #define A ‘B’ main() { 预处理替换为: prntf(HELLO); prntf(“bonjour\n”); printf(“%c\n”,A); printf(“%c\n”,‘B’); } 运行结果:bonjour B 以上程序若改为: #define HELLO bonjour #define A B main() { prntf(“HELLO\n”); printf(“%c\n”,‘A’); } 因为为字符常量,所以不替换 运行结果:HELLO A 8、前面定义的宏名,在后面的#define中可以被引用 2)带有参数的宏替换 宏替换一定要看成字符串(字符串不能计算) #define N 2 #define M N+1 #define NUM (M+1)*M/2 NUM 的值为:(M+1)*M/2 =(N+1+1)*N+1/2 =(2+1+1)*2+1/2 =8 宏定义:#define 宏名(参数表)字符串 注意:字符串中要包含参数表中指定的参数 经C预处理(cpp.ex)的宏替换可由cpp text.c type test.i查看 宏调用:宏名(实参表) 注意:1、宏定义中的“宏名”和“(参数表)”之间不能有空格 2、定义有参数的宏替换时,要用圆括号将宏扩展括起来,避免误算 3、带参数的宏调用和函数调用的区别:a)宏调用在编译前,函数调用在编译后 《c语言程序设计》听课笔记:16 n*n=i+4*i+4=1+4+4=9,不能达到预期效果 所以最好把每个形参也用圆括号括起来。如:#define square(n)((n)*(n))则经宏扩展后变为:((i+4)*(i+4)) 取消已有的宏定义:#undef,在undef后出现的宏将不再被扩展 二、文件包含:一个源文件可将另一个源文件的所有内容包含进来 一般形式:#include“文件名”(从当前目录中寻找文件,找不到再去一系列系统预先设定的目录中寻找,可普遍使用) 或#include<文件名>(不在当前目录中寻找,径直到一系列系统预先设定的目录中寻找)ps:1、头文件之所以成为头文件,是因为#include命令常出现在源文件头部 2、C本身包含很多头文件 stdio.h(输入输出函数) string.h(字符串) math.h(数学函数) 3、一个#include只能指定一个被包含的文件 4、#include可以嵌套,不可递归 三、条件编译:有时希望程序中的一部分只有在满足一定条件时才进行编译,否则不参与编译 一般形式: 1、如果常量表达式为真,非零,则相应程序段被编译,否则跳过它 #if 常量表达式 程序段 #endif 常量表达式是在编译时求值的,因此他只能由事先定义的宏名和常量组成,不能出现变量 2、如果常量表达式为真,非零,则程序段1被编译,否则编译程序段2 #if 常量表达式 程序段1 #else 程序段2 3、#if 常量表达式1 程序段1 #elif 常量表达式2 程序段2 ∶ #elif 常量表达式n 程序段n #else 程序段n+1 #endif 4、如果已经定义了相应的“宏名”,则编译程序段,否则跳过 #ifdef 宏名 程序段 #endif 5、如果已经定义了相应的“宏名”,则编译程序段1,否则编译程序段2 #ifdef 宏名 程序段1 #else 程序段2 #endif 6、如果没有定义相应的“宏名”,则编译程序段,否则跳过 #ifudef 宏名 程序段 #endif 7、如果没有定义相应的“宏名”,则编译程序段1,否则编译程序段2 #ifudef 宏名 程序段1 #else 程序段2 #endif 《c语言程序设计》听课笔记:17 第七章数组和指针 数组:是按一定格式排列起来的一系列具有同一属性的项目(向量、矩阵、立体矩阵等) 1、数组名:表示群体的共性(具有同一种数据类型) 2、下标:表示个体的个性(各自占有独立的单元) 一、一维数组 定义方式: 类型说明符数组名[变量表达式] 1、常量表达式表达元素的个数,即数组长度。 例如:int a[10]; 2、组元素的表达形式:数组名[下标] ps:下标是整形常量或整形表达式,对于任何数组下标都由0开始 对一位数组赋值:int a[10]; getchar();等待用户输入一个字符 scanf("%d",&n);输入多种字符(一次输入一个字符) int a[10] , i; for(i=0;i<10;i++) { scanf("%d",&a[i]); printf("%d",a[i]); } ps:若没有块语句会出现垃圾数据(因为for循环会执行之后的scanf直到i=10) 输入输出各有一个循环,就会一起输入,一起输出。 给出一个提示: please input array value: printf("a[%d]=%d",i,a[i]); 《c语言程序设计》听课笔记:18 排序汽泡法 原则:每次只找一个最小数(方便起见,从a[1]开始) a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 4 5 3 1 2 6 9 7 8 0 4 5 3 1 2 6 9 7 0 8 4 5 3 1 2 6 9 07 8 4 5 3 1 2 6 0 9 7 8 4 5 3 1 2 0 6 9 7 8 4 5 3 1 0 2 6 9 7 8 4 5 3 0 1 2 6 9 7 8 4 5 0 3 1 2 6 9 7 8 4 0 5 3 1 2 6 9 7 8 a[1] 0 4 5 3 1 2 6 9 7 8 以此类推将1放入a[2],2放入a[3]。。。。9放入a[10] #include"stdio.h" main() { int a[11],i,j,t; /*i表示找第几小的数,j表示找的次数*/ printf("please input the numbers\n"); for(i=1; i<11; i++) { scanf("%d",&a[i]); } printf("\n"); for(i=1; i<10; i++) /*扫描第几趟*/ { for(j=10; j>i; j--) { if(a[j] { t=a[j]; a[j]=a[j-1]; a[j-1]=t; } } } printf("the arry is:\n"); for(i=1;i<11;i++) { printf("%d\n",a[i]); } getch(); } 可以改进: 1、为不再有交换时,程序停止 2、可下沉、可上浮 输入无序,输出有序 《c语言程序设计》听课笔记:19 气泡法是发现后面的比前面的小就交换 选择法排序是记住最小的,不交换,比较完后将记忆的最小数放在最前面 木瓜未知世界说:“这节很难懂呀!要看例题……100例!我有了!想要的就留言!呵呵”的确很难啊~~~ 《c语言程序设计》听课笔记:20 二、二维数组 1、定义形式:类型说明符数组名[常量表达式][常量表达式] 2、二维数组元素的表示形式:数组名[下标1][下标2] 3、下标1称为行下标,下标2称为列下标 eg:1、二维矩阵的输入和输出 #include"stdio.h" main() { int a[4][4]; int i,j; for(i=0; i<4; i++) { for(j=0; j<4; j++) scanf("%d",&a[i][j]); } for(i=0; i<4; i++) { for(j=0; j<4; j++) printf("%6d",a[i][j]); printf("\n"); } getch(); } 2、矩阵转置并输出 三、多维数组 多维数组的定义、数组元素的引用:与二维数组类似,只是需要相应维数的下标。 四、数组的储存表示 1、同一个数组中的所有元素占有一组连续的储存空间; 2、数组的存储分配按行进行; 3、数组名字表示该数组的首元素地址。 4、对于一维数组而言,各元素按下标依次存放。 《c语言程序设计》听课笔记:21 对话语言——C语言——汇编语言——机器语言——硬件 整型数据——整型常量,整型变量八进制的10——010 0X开头的数表示16 进制的数 123L 长整型123U无符号 32767-32768 018是错误的 《c语言程序设计》听课笔记:22 一、字符串变量的表示 1、在C中,用一维字符数组来表示字符串变量 2、为了描述字符串的有效长度,采用'\0'束标志,扫描整个数组,直到碰见字符'\0' 3、字符串变量中存放的字符个数<=数组长度减一 4、可以用字符串变量对字符型数组进行初始化 static char c[]={"I am a boy"}; 5、能用赋值方式给字符串变量赋值。 二、字符串处理函数 1、puts(字符串) C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y); }elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x); C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 4. 求1×2×3×…×10的值。 5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1 1、用筛选法求100之内的素数。解: #include {printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20. 指针 一单项选择题(每题2分,共40分) 1 以下叙述中错误的就是_B__。 A 在程序中凡就是以“#”开始的语句行都就是预处理命令行 B 预处理命令行的最后不能以分号表示结束 C #define MAX就是合法的宏定义命令行 D C程序对预处理命令行的处理就是在程序执行的过程中进行的 2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的就是__B_。 A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符 3 若有如下宏定义: #define N 2 #define y(n) ((N+1)*n) 则执行下列语句:z=4*(N+y(5));后的结果就是_B__。 A 语句有错误 B z值为68 C z值为60 D z值为180 4 以下程序运行后的输出结果就是_A__。 #define F(X,Y) (X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } A 12 B 15 C 16 D 20 5 以下程序运行后的输出结果就是_C__。 #define f(x) (x*x) main() { int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } A 64,28 B 4,4 C 4,3 D 64,64 6 若已定义a为int型变量,则__D_就是对指针变量p的正确说明与初始化。 A int p=&a; B int *p=a; C int *p=*a; D int *p=&a; 7 已知下列说明语句: static int a[]={2,4,6,8} static int *p[]={a,a+1,a+2,a+3}; int **q; q=p; 则表达式**(q+2)的值就是_A__。 A 6 B 2 C 4 D 8 8 下面就是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该__C_。 A *px B a C px D &a 9 若指针px为空指针,则_B__。。 《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号 C程序设计(第四版)期末考试题 本卷共有4道大题: 一、单项选择题(20道小题,共20分) 1、以下对C语言函数的有关描述中,正确的是( )(1分) A、在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B、C函数既可以嵌套定义又可以递归调用 C、函数必须有返回值,否则不能使用函数 D、C程序中有关调用关系的所有函数必须放在同一个源程序文件中 2、strcpy库函数用于复制一个字符串。若有以下定义:char *str1="copy",str2[10],*str3="hijklmn";char *str4,*str5="abcd";则对strcpy库函数的错误调用是( )(1分) A、strcpy(str2,str1) B、strcpy(str3,str1) C、strcpy(str4,str1) D、strcpy(str5,str1) 3、设有以下语句:char str[4][12]={"aaa","bbb","ccc","ddd"}; char *strp[4]; int i;for(i=0;i<4;i++) strp[i]=str[i]; 若0<=k<4,下列选项中对字符串的非法引用是( )(1分) A、strp B、str[k] C、strp[k] D、*strp 4、以下各选项企图说明一种新的类型名,其中正确的是( )(1分) A、typedef v1 int; B、typedef v2=int; C、typedef v1 int v3; D、typedef v4: int; 5、若以下定义和语句:int a[]={1,2,3,4,5,6,7,8,9,0}; int *p,i;p=a;0 习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。 #include 盛年不重来,一日难再晨。及时宜自勉,岁月不待人。 C语言程序设计试题 一、单项选择题(本题共25小题,每小题2分,共50分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其正确答案涂写在答题卡上。错选、多选或未选均无分。 1. 以下正确的C语言自定义标识符是______。 A. _1a B. 2a_ C. do D. a.12 2. 在C语言中,错误的常数表示是_______。 A. 0L B.-0x6aL C. '6' D. 1.234E3.5 3. 设int a, x=2; 执行语句a=x>0?3*x:x=10;后,变量x的值是_______。 A. 1 B. 2 C. 6 D. 10 4.设有以下程序段: int x=2,y=2,z=0,a; a=++x||++y&&z++; printf("%d,%d,%d\n",x,y,z); 执行后输出的结果是_________。 A. 2, 2, 0 B. 3, 3,1 C. 3, 2, 0 D. 3, 2, 1 5. 在C语言中,字符串"\\TOP\t\65\""的长度是_______。 A. 5 B.7 C. 8 D. 12 6. 设float x,由键盘输入:12.45, 能正确读入数据的输入语句是_________。 A. scanf("%5f",&x) B. scanf("%5d",&x); C. scanf("%f",x); D. scanf("%s",&x); 7.逗号表达式a=2*6,a*3,a+5的值是_________。 A. 12 B. 17 C.36 D. 41 8. C语言程序中,整型常量的书写形式不包括_________。 A. 二进制 B. 八进制 C. 十进制 D. 十六进制 9. 在C语言中,下列运算符中结合性属于自右向左的是_________。 A. && B. - C.<< D. -> 10. 设int x;,则与计算︱x︱等价的表达式是_________。 A. x>0?-x:x B. x>0?x:-x C. x<0?x:-x D. x<0?-x:-x 11. 执行下面的程序段后,k的值是_______。 int k=1,n=325; do { k*=n%10;n/=10;}while(n); 水仙花 #include 的排列后再去掉不满足条件的排列。 2.程序源代码: #include "stdio.h" #include "conio.h" main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } getch(); } 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按1 0%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码: 《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型 c语言程序设计教程(第2版)课后题及模拟题参考答案 习题1 1-1 填空题 1.函数 2.主函数main(),主函数main() 3.主函数main() 4.函数首部,函数体 5.{, } 6./*, */ 7.顺序结构,选择结构,循环结构 8..c, .obj, .exe 1-2 思考题 1.结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。其基本结构包括顺序结构、选择结构和循环结构三种。 2.算法是对具体问题求解步骤的一种描述。计算机算法的表达工具通常采用以下几种方法:(1)用自然语言表示算(2)用流程图表示算法(3)用伪代码表示算法(4)用程序设计语言表示算法 3.语言简洁、紧凑,使用方便、灵活; 支持结构化程序设计;运算符丰富;数据类型丰富;较强的编译预处理功能;C语言的可移植性好;C语言本身既有一般高级语言的优点,又有低级(汇编)语言的特点;语法限制不太严格,程序设计自由度大。 1-3 编程题 1. 试参照本章例题编写计算梯形面积的C语言程序,梯形的上底、下底和高分别用a,b,h表示,并用a=10,b=20,h=5测试所编写的程序。 #include "stdio.h" main() { float a, b, h, s; a=10; b=20; h=5; s=(a+b)*h/2; printf("s=%f\n" , s ); } 2. 编写程序显示如图1.11所示信息。 图1.11 显示信息 #include "stdio.h" main() { printf("******************************\n"); printf("* hello world *\n"); printf("******************************\n"); } 习题2 2-1 单选题 1~5 DBDCA 6~10 DCABA 11~12 CA 2-2 思考题 1.2.000000 2.1,0.5 3.9,2 4.6 5.100,d 6.(1)20 (2)0 (3)60 7. (1)10,6,4 (2)6,9,15 (3)3,60,83 8. 55 习题3 3-1 选择题 1-5BDABC 6-10ADCAC 11-12BB 3-2 填空题 1. 3 2.0261 3.0x10 4. 2, 1 互换a,b的值 5. 6.6 6.–003 8.7 7. 5.0,4,c=3 C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT- C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。 《C语言程序设计课程设计》课程教学大纲 (数字媒体技术专业使用) (计算机科学与技术专业使用) (信息管理与信息系统专业使用) (计算机科学与技术专业中职技能使用) 荆楚理工学院 二О一五年七月 《C语言程序设计课程设计》教学大纲本课程大纲依据计算机科学与技术专业、计算机科学与技术专业(中职技能)、数字媒体技术专业、信息管理与信息系统专业2015版人才培养方案制定。 课程名称:C语言程序设计课程设计 课程代码:B1504123 课程管理:计算机科学与技术教研室 教学对象:计算机科学与技术专业、计算机科学与技术专业(中职技能)、数字媒体技术专业、信息管理与信息系统专业 教学时数:总时数40学时(2周) 课程学分:2学分 课程开设学期:第2学期 课程性质:必修课程(集中实践教学课程) 课程衔接:先修课程计算机基础、C语言程序设计 一、课程设计的目的 1、通过本项课程设计,巩固《C语言程序设计》课程学习的内容;培养学生独立思考、综合运用所学知识的能力;掌握工程软件设计的基本方法,强化上机动手编程能力;将理论与实践相结合,培养学生的团队合作精神。 2、通过C语言程序设计课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。 二、课程设计教学内容和基本要求 (一)教学内容 课程设计分为以下几个阶段进行:选题,系统设计,系统编码实现,系统测试,系统评价与验收。 1、选题:题目可来自教师指定的参考题目,也可自由选题,特别是鼓励有创新性的题目或是在已知题目的基础上进行创新。 第一章基础知识 一、填空 1. 每个C 程序都必须有且仅有一个________ 函数。 2. C 语言程序开发到执行通常要经过6 个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C 语言是由________组成的。 7. C 语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C 语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作的要求。不同的任务功能,就会需求不 同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA) 、管理信息系统(MIS) 、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C 程序的执行均是由执行_________开始。15. 函数体即为包含在{ }内的部分。它分为________和为完成功能任务由若干个C 语句组成的执行部分。 16. C 语言程序中一条简单语句是以________字符作为结束符的。 17. C 语言是结构化、________的程序设计语言。 C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解: mian() {int a,b,c,max; printf(“请输入三个数a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max main() { char c1=?C?,c2=?h?,c3=?i?,c4=?n?,c5=?a?; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII) C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后( #include C语言程序设计试题 第1、2、3章概述、类型、表达式 一、选择题 1、一个C程序由若干个C函数组成,各个函数在文件中的位置顺序为:() A、任意 B、第一个函数必须是主函数,其他函数任意 C、必须完全按照执行的顺序排列 D、其他函数可以任意,主函数必须在最后 2、下列四个叙述中,正确的是:() A、C程序中的所有字母都必须小写 B、C程序中的关键字必须小写,其他标示符不区分大小写 C、C程序中的所有字母都不区分大小写 D、C语言中的所有关键字必须小写 3、下列四个叙述中,错误的是:() A、一个C源程序必须有且只能有一个主函数 B、一个C源程序可以有多个函数 C、在C源程序中注释说明必须位于语句之后 D、C源程序的基本结构是函数 4、下面不是C语言合法标识符的是:() A、abc B、5n C、_4m D、x3 5、以下叙述不正确的是:() A. 分号是C语句的必要组成部分 B. C程序的注释可以写在语句的后面 C. 函数是C程序的基本单位 D. 主函数的名字不一定非用main来表示 6、C语言中允许的基本数据类型包括:() A. 整型、实型、逻辑型 B. 整型、实型、字符型 C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型、字符型 7、C语言中能用八进制表示的数据类型为:() A、字符型、整型 B、整形、实型 C、字符型、实型、双精度型 D、字符型、整型、实型、双精度型 8、下列属于C语言合法的字符常数是:() A、’\97’ B、”A” C、’\t’ D、”\0” 9、在C语言(VC环境)中,5种基本数据类型的存储空间长度的排列顺序为:() A、charC语言程序设计第三版习题库答案
C语言程序设计习题答案(1-5章)
C语言程序设计第四版第六章答案_谭浩强
C语言程序设计试题集与答案解析
C语言程序设计习题集3
(完整版)《C语言程序设计》基本知识点
c语言程序设计第四版考精彩试题
c语言程序设计第五版习题答案
C语言程序设计试题
C语言程序设计50例(经典收藏)
(完整版)C语言程序设计练习及答案
c语言程序设计教程(第2版)课后题及模拟题参考答案
C语言程序设计第二版习题参考答案
15版C语言程序设计课程设计大纲
c语言程序设计答案
C语言程序设计第三版谭浩强课后习题答案完整版
C语言程序设计期末考试试题(含答案)
C语言程序设计试题及答案解析[1]全解