C++程序设计 清华大学版 第3章 函数
《C语言程序设计》课后习题参考答案 李勃 邱晓红 主编 清华大学出版社
《C语言程序设计》课后习题参考答案第1章C语言及程序设计概述1.单选题(1)A (2)B (3)A (4)B (5)C2.填空题(1)//,/*…*/(2)scanf()(3)printf()3.判断题(1)对(2)错(3)错(4)对第二章:数据类型运算符与表达式1.单选题(1)C (2)D (3)C (4)B (5)C (6)A (7)B (8)D (9)A(8)D(9)A(10)B(11)C(12)C(13)D(15)B(16)C(17)A(18)A(19)B(20)C(21)C(22)D(23)C(24)A(25)D(26)B(27)C(28)B(29)B(30)A2.填空题(1)sqrt(pow(y,x)+log10(y)) (2)36(3)6(4)3 3(6)36(7)int x=8,y=8;(8)1(9)E(10)6,7,8,9(11)6(12)66,96(13)240(14)1,1,-1,-1(15)5,2,6(16)1(17)!(18)2(19)(a>0&&a<101)&&(a%3==0||a%7==0) (20)A3.程序分析题(1)2 72 74 94 412 12116(3)100 d 68 D97 a 49 1 (4)0 1 0 1 (5)2 4 6 7-0.58 7046.587.5(6)33 12 113 13 082 32(7)618 30181814.改错题(1)①无初始赋值,不能输出②数据精度丢失③少“;”号④单字符变量不能保存字符串常量⑤不能连续初始化⑥非法标识符(2)short i=38000溢出PI=3.1416 常量不能修改值Printf(“%d”,x%y) %必须是整数a*=(b+c)/=d符合赋值左边不能是表达式第三章:算法概念与顺序结构程序设计1.选择题(1)D(2)B、D(3)D(4)B(5)C(6)A(8)C(9)B(10)D2.填空题.(1)一条语句;(2)小于左右(3)%%(4)输出项列表输出控制符(5)取地址取a的地址(6)从盘获取一个字符(7)大括号(8)f=68.00(9)n1=%d\n n2=%d(10)7,5,c=33.程序分析题.(1)i=100,c=a,f=1.234000(2)65535,65536(10)1234,123.5,12345.5第四章:选择结构程序设计(1)C (2)B (3)B (4)B (5)D (6)D (7)D (8)A (9)B (10)A (11)B (12)B (13)D (14)A (15)C (16)A (17)C (18)D (19)B (20)D (21)A(23)A(24)A2.填空题.(1)1(2)5 8 8(3)4 5 99(4)2(5)10 20 0(6)2 1(7)-4(8)3(9)No(10)25(11)45 45(12)0(13)5.5(14)13(15)3第五章:循环结构程序设计(1)C(2)A(3)D(4)B(5)D(6)B(7)A A或B(8)输出4444(9)B(10)A(11)B(12)C(13)A(14)B2.填空题.(1)r=m;m=n;n=rm%n(2)3(3)-5(4)i%3==2&&i%5==3&&i%7==2 j==5j!=k(6)int s=8,j=i+2k+i+j==8(7)8(8)k&&i<=500 k/10 continue第六章:数组1.选择题(1)B(2)C(3)D(4)D(5)B(6)C(7)B(8)A(9)A(10)D2.填空题.(1)按行序优先的原则(2)0 9(4)1 2(5)6(6)前者以回车后者以空格或回车作为间隔符(7)gets()(8)&a[i](9)char k -1(10)9 83.程序分析题.(1)1 3 7 15(2)0 0 0(3)读取输入字符串中数字字符(4)①if(str1==str2) (strcmp(str1,str2)==0)②&c1[0]③m[i][k-1]第七章:函数的调用1.选择题(1)B(2)C(3)C(4)A(6)D(7)D(8)D(9)B(10)D(11)A(12)A(13)B(14)B2.填空题.(1)有参无参(2)顺序类型(3)定义调用(4)①fmax(a,N) ②s[k]=s[p](5)①age(n-1)+2 ②age(5)(6)①prt(c,n-1) ②prt(…‟,n-i) ③prt(…*‟,2*i-1) 3.程序分析题.(1)h l o(2)3(3)2 6(4)5 25。
c++面向程序设计(清华大学出版)部分课后题答案
{t=x;x=y;y=t;} }
int main ( ) {
int a,b; cout<<"please input two numbers:"<<endl; cin>>a>>b; if(a<b) swap(a,b); cout<<"the sorted numbers:"<<endl;
第一章 1.11 #include <iostream> using namespace std;
cout<<a<<" "<<b<<endl; return 0; }
int main ( ) {int max(int a,int b, int c=0);
int a,b,c; cout<<"please input three numbers:"<<endl; cin>>a>>b>>c; cout<<"max(a,b,c)="<<max(a,b,c)<<endl; cout<<"max(a,b)="<<max(a,b)<<endl; return 0; }
c[5]={333.5,45.7,23.8,345.1,32.6}; sort(a); sort(b); sort(c); return 0;
} 第二章 2.4 //main.cpp #include <iostream> using namespace std; #include "student.h" int main() {
第3章 自定义函数设计
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
16
/* LI3_2_2.C */ #include <stdio.h> #include define PI 3.14159 /* 计算圆面积函数*/ double areas(double r) { return PI*r*r; } int main( ) { printf("area = %.2f\n", printf("area = %.2f\n", printf("area = %.2f\n", printf("area = %.2f\n", printf("area = %.2f\n", printf("area = %.2f\n", printf("area = %.2f\n", return 0; }
一般情况下,均使 用现代风格定义函 数,并且要指定函 数类型。
2015-1-18
《解析C程序设计(第2版)》第3章 自定义函数设计
10
【例3-3】定义计算圆面积的函数。其源代码如 下: #include PI 3.14159 /* 函数功能:计算圆面积 函数参数:双精度实型r,存储半径 函数返回值:圆的面积 */ double areas(double r) { return PI*r*r; }
Hale Waihona Puke 【例3-5】调用函数完成计算两个整数平均值。其源代码如下: /* LI3_5.C */ #include <stdio.h> /* 计算平均值函数*/ float average(int x, int y) { float result; result=(x + y)/2; return result; } int main() { int a, b; float ave; printf("Input a,b:"); scanf("%d%d", &a,&b); ave = average(a,b); /* 函数调用作表达式 */ printf("ave = %f\n", ave); return 0; }
C语言程序设计(2014年清华大学出版社出版的图书)
谢谢观看
C语言程序设计(2014年清华大学出 版社出版的图书)
2014年清华大学出版社出版的图书
01 成书过程
03 教材目录 05 教材特色
目录
02 内容简介 04 教学资源 06 作者简介
《C语言程序设计》是2014年清华大学出版社出版的图书,作者是宋丽华、雷鹏、张小峰、韩婷婷。 该书是普通高等教育“十一五”国家级规划教材、计算机系列教材。该教材可作为计算机类、电气信息类的 本科教材,也可作为科技工作者业务学习的参考用书。 该教材共分9章,以程序设计思想为中心,强化算法思想和规范化编程。
雷鹏,男,工学硕士,毕业于山东大学计算机软件与理论专业,鲁东大学信息与电气工程学院副教授。研究 方向为计算机算法设计与分析、Led照明最优化、伽马辐照装置放射源棒最优化排列、软件工程、程序设计。
张小峰,男,工学博士,鲁东大学信息与电气工程学院副教授。主要从事数字图像处理、模式识别等方面的 研究工作。先后为本科生讲授《离散数学》《信息论与编码》《算法分析与设计》等课程。
2014年6月1日,该教材由清华大学出版社出版。
内容简介
第1章C语言入门:介绍简单的C程序组成、C程序的运行环境,算法的特性以及描述算法的方法,结构化程序 设计思想。
第2章数据类型和表达式:介绍C语言的基本数据类型,数据的表示,常量和变量,运算符和表达式,以及表 达式的计算过程。
第3章C语言的基本控制结构:介绍了C语言的三种基本结构,包括C语句的种类、数据的输入与输出、选择结 构和循环结构,并通过程序实例分析了选择和循环结构的构造过程。
成书过程
c语言程序设计(2015年清华大学出版社出版的图书)
内容简介
该教材讲解了C语言程序设计的基础知识及程序设计语句和常用的编程方法。全书共9张,主要内容包括C语 言程序设计基础知识、基本数据类型及运算符、C语言的控制结构、数组、函数、指针、结构体、编译预处理、文 件。书中对数组、函数、指针、变量的存储类型、结构体和共用体、文件等重点和难点内容进行了讲解和分 析。
作者简介
张静,女,1978年生,河南焦作人,汉族,博士,河南理工大学计算机科学与技术学院副教授,主要从事信 息安全、计算机网络技术及应用等方面的研究。
杜庆东,1971年生,男,辽宁锦州人,博士,沈阳师范大学软件学院教授、硕士研究生导师。
谢谢观看
c语言程序设计(2015年清华大学出 版社出版的图书)
2015年清华大学出版社出版的图书
01 成书过程
03 教材目录 05 教材特色
目录02 内容简介Fra bibliotek04 教学资源 06 作者简介
《C语言程序设计 》是张静、杜庆东主编,2015年清华大学出版社出版的21世纪高等学校规划教材。该教材 适用于高等学校各专业程序设计基础教学,适合作为应用型本科、高职院校的计算机及非计算机相关专业的学生 使用,同时也可作为参加计算机等级考试和其他自学者的参考用书。
该教材讲解了C语言程序设计的基础知识及程序设计语句和常用的编程方法。全书共9张,主要内容包括C语 言程序设计基础知识、基本数据类型及运算符、C语言的控制结构、数组、函数、指针、结构体、编译预处理、文 件。
成书过程
该教材的第1章、第4章、第9章由杜庆东编写;第2章、第3章由闫红编写;第5章、第6章由张静编写;第7章 由侯彤璞、郝颖编写;第8章由侯彤璞、高婕姝编写;附录由封雪编写;全书由王丽君主审。
C 面向对象程序设计(2010年清华大学出版社出版的图书)
第1章计算机和C++编程入门 概述 1.1计算机系统 1.2编程和问题求解 1.3 C++入门 1.4测试和调试 小结 自测题答案 编程项目 第2章 C++基础知识 概述
图书五
内容简介
图书目录
《C++面向对象程序设计》从实际应用出发,系统地介绍C++面向对象程序设计的原理、方法和技巧。重点突 出,叙述清楚,深入浅出,论述详尽,使读者既能深刻领会面向对象程序设计的思想,了解面向对象程序设计的 特征,又能掌握C++语言的编程与应用。全书共8章,主要包括:面向对象程序设计语言概述、C++语言基础知识、 类和对象、对象成员和友员、继承和派生、多态性和运算符重载、模板、C++的输入/输出流。在每一章的知识点 后面,都给出了相应的程序设计实例,这些实例不仅有助于读者巩固知识点的内容,而且更有助于读者创新能力 的培养。
图书一
内容提要
目录
C++面向对象程序设计本书介绍了C++面向对象程序设计的基本知识和编程方法,以及C++面向对象的基本特征。 针对初学者的特点,本书力求通过大量实例、习题和上机实验题,以通俗易懂的语言讲解复杂的概念和方法,使读 者能深刻理解和领会面向对象程序设计的特点和风格,掌握其方法和要领,以期帮助读者尽快地迈入面向对象程 序设计的大门。
Savitch教授的研究领域包括复杂性理论、形式语言理论、计算语言学和计算机教材的开发。他因为对复杂 性理论所做的贡献而声名远扬,其中包括他提出的第一个完整语言(complete1anguage)范例。这个奠基性的
c语言程序设计(2008年清华大学出版社出版的图书)
成书过程
修订过程
出版工作
该教材由王浩主审,姚合生主编。在全书的策划和出版过程中,得到了高校从事C语言教学工作的同仁的关心 和帮助,特别是孙家启教授、陈桂林老师等,他们对该教材提出了修改建议。全书各章节的编写分工如下:第1、 2章由刘桂江编写,第3、4、9章由蔡庆华编写,第5、10章由程玉胜编写,第6、7、8章由姚合生编写,第11章由 刘涛编写。
教材目录
(注:目录排版顺序为从左列至右列 )
教学资源
该教材有配套教材——《C语言程序设计习题集、上机与考试指导》。 该教材提供电子教案、课件和参考资料。
教材特色
该教材是为C语言程序设计课程的教学和考试的需要而设计的。考虑到该课程一般为大学第一门程序设计课程, 在内容编排上尽量符合初学者的要求,采用案例驱动教学法,给初学者的系统学习提供良好的向导。
感谢观看
c语言程序设计(2008年清华 大学出版社出版的图书)
2008年清华大学出版社出版的图书
Hale Waihona Puke 01 成书过程03 教材目录 05 教材特色
目录
02 内容简介 04 教学资源 06 作者简介
《C语言程序设计》是姚合生等编著,2008年清华大学出版社出版的高等学校计算机教材。该教材适合作为 高等学校C语言程序设计课程的教材,也可作为全国计算机等级考试C语言考试的教材或参考书,同时还可供从事 程序设计的技术人员的自学和参考。
除章节中包含例题外,每章还有程序举例。为了与全国计算机等级考试上机环境改变相一致,所有程序的运 行结果均采用VisualC++6.0集成环境下实际运行效果图形方式显示。每章后均附有设计的习题,其中很多是模拟 历年C语言考试试题而设计。
精品-清华大学C语言课件 第3章02 描述算法
描述算法
1.用自然语言描述 2. 用流程图描述 3.三种基本结构 4.绘制N-S流程图 5.用伪代码描述算法
实例3 任意输入三个数,求这三个数中的最大数 实例4 判断2000~2500年中的年份是否为闰年 实例5 用伪代码描述n!
用自然语言描述
所谓自然语言就是日常生活中的语言,它可以是汉语,英语,日语等,一般描述一些简单问题步 骤可以通俗简单易懂。下面通过具体实例来介绍自然语言。 【例3.1】 求正整数a和b的最大公约数。 第一步:输入a和b的值; 第二步:求a除以b的余数c; 第三步:若c等于0,则b为最大公约数,算法结束;否则执行第四步; 第四步:将b的值放在a中,将c的值放在b中; 第五步:重新执行第二步。
【例3.6】 从键盘中输入一个数n,求n!。 该程序流程图如图3.16所示。
图3.16 求n!
该程序的N-S流程图如图3.17所示。
输入一个数赋给变量n
Y s=1 n>0
Y i=1
i<=n
n>=0
N
N 输出 error
s=s*i i=i+1 输出s
图3.17 求n!的N用介于自然语言和计算机语言之间的文字和符号来描述算法。它采用某一程序设计语言 的基本语法,如操作指令可以结合自然语言来设计。而且,它不用符号,书写方便,没有固定的语法 和格式,具有很大的随意性,便于向程序过渡。 下面通过一个例子用伪代码描述算法。 【例3.7】 用伪代码描述两个正整数a和b最大公约数的算法。
图3.12 顺序结构 (2)选择结构的N-S流程图如图3.13所示。
图3.13 选择结构
(3)当型循环的N-S流程图如图3.14所示。 当P成立
图3.14 当型循环 (4)直到型循环的N-S流程图如图3.15所示。
编译原理清华大学第3章 文法和语言ppt课件
当我们表述一种语言时,无非是要说明这种语言的句子,如果语言只 含有穷多个句子,则只需列出句子的有穷集就行了,但对于含有无穷句子 的语言来讲,就存在着如何给出它的有穷表示的问题。 以自然语言为例,人们无法列出全部句子,但是人们可以给出一些规 则,用这些规则来说明(或者定义)句子的组成结构,比如汉语句子可以是 由主语后随谓语而成,构成谓语的是动词和直接宾语。 任何语言均可看作一个集合。这个集合中的每个元素都是在一定符号集 (字母表)上的一个符号串。 对于自然语言来说,它们是定义在某个字母表上的句子的集合。 对于程序语言来说,它们也是定义在某个字母表上的句子的集合。这里 的句子,就是一个源程序。 通常,源程序是由关键字、标识符、常数、运算符以及一些界限符组成。 这些语法成分统称为单词或单词符号。 单词符号是语言中具有独立意义的最基本单位。语言的单词符号是由词法 规则所确定的,即词法规则规定了单词符号的形成规则。
2 在乔姆斯基(Chomsky)的文法类型中,为什么特别 关注上下文无关文法? 3 文法的递归性、二义性等性质是什么? 4 句子、句型和语言的定义是什么? 5 推导和归约是什么? 6 什么是语法分析?语法分析方法的分类?
7 如何确定一个输入符号串是否是所给文法的句子?
第3章:文法和语言
3.0 概述 3.1 形式语言基础 3.2 3.3 3.4 3.5 3.6 文法的直观理解 文法和语言的定义 文法的类型 语法树与二义性 句型的分析
4.符号串集合:由符号串构成的集合。
3.0 概述
用高级语言编程比用低级语言方便,但要解决两个问题: (1)计算机怎样懂得高级语言程序,这就需要一个翻译程序实现从源程序到目 标程序的转换。 (2)用什么方法来精确定义高级语言,即怎样精确描述高级语言。 要构造一个编译程序,应深刻理解被编译的源语言的结构(即词法和语法) 及其含义(即语义),同时要弄清源语言的语法规则和语义规则是采用什么理 论或什么方法来描述的。 本章目的 为语言的语法描述寻求工具,该工具要对程序设计语言给出精 确无二义的语法描述。(严谨、简洁、易读) 形式工具----形式语言抽象地定义为一个数学系统。 “形式”----:语言的所有规则只以符号串能出现的方式来陈述。
C语言程序设计教程 李含光 郑关胜 清华大学出版社习题答案
第1章习题参考答案1.单项选择题(1) A (2) C (3) D (4) C (5)B2.填空题(1)函数(2)主函数(main)(3)printf() ,scanf()第2章习题参考答案1.单项选择题(1) C (2) B (3) C (4) C (5)C(6) C (7)D (8) C (9) D (10)C(11) D (12)B (13) B2.填空题(1)1(2)26(3)6 ,4 , 2(4)10 , 6(5)3.000000(6)双精度(double)(7)9(8)字母,数字,下划线(9)13.700000(10)11(11)((m/10)%10)*100+(m/100)*10+m%10(12)0(13)10 ,9 ,11(15)(x<0&&y<0)||(x<0&&z<0)||(y<0||z<0 )(16)double (17)x==0(18)sqrt(fabs(a-b))/(3*(a+b))(19)sqrt((x*x+y*y)/(a+b))第3章习题参考答案1.单项选择题(1) C (2) C (3) C (4) D (5)D(6) B (7)C (8) D (9) B (10)C(11) B (12)C (13) B (14) B (15)B(16) A2.填空题(1)用;表示结束(2){ }(3)y=x<0?1:x==0?0:-1(4)y%4==0&&y%100!=0||y%400==0(5)上面未配对(6)default标号(7)while ,do while ,for(8)do while(9)本次(10)本层3.阅读程序,指出结果(1)yes(2)*&(3)ABother(4)28 70(5)2,0(6)8(7)36(8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12(11)i=6,k=4(12)1,-24.程序填空(1)x:y ,u:z(2)m=n ,m!=0 ,m=m/10(3)t<eps , t*n/(2*n+1) , printf(“%lf\n”,2*s)(4)m%5==0 ,printf(“%d\n”,k)(5)cx=getchar() , cx!=front , cx(6)double s=0 , 1.0/k , %lf(7)s>=0 , s<gmin ,5.编程题(1).#include <stdio.h>int main(){double x,y;scanf("%lf",&x);if(x<1)y=x;else if(x>=1.0&&x<10)y=2*x-11;elsey=3*x-11;printf("%lf\n",y);return 0;} (2).#include <stdio.h>int main(){double x,y,z,min;scanf("%lf%lf%lf",&x,&y,&z);if(x>y)min=y;elsemin=x;if(min>z)min=z;printf("min=%lf\n",min);return 0;}(3).#include <stdio.h>int main(){int y,m,d,flag,s=0,w,i;scanf("%d%d%d",&y,&m,&d);flag=(y%4==0&&y%100!=0||y%400 ==0);w=((y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400)%7;for(i=1;i<=m;i++){switch(i){case 1:s=d;break;case 2:s=31+d;break;case 3:s=59+d;break;case 4:s=90+d;break;case 5:s=120+d;break;case 6:s=151+d;break;case 7:s=181+d;break;case 8:s=212+d;break;case 9:s=243+d;break;case 10:s=273+d;break;case 11:s=304+d;break;case 12:s=334+d;break;}}if(flag==1&&m>2)s=s+1;s=(w+s)%7;if(s==0)printf("星期日\n");elseprintf("星期%d\n",s);return 0;}(4).#include <stdio.h>int main(){float p,r;scanf("%f",&p);if(p<=10)r=p*0.1;else if(p>10&&p<=20)r=10*0.1+(p-10)*0.075;else if(p>20&&p<=40)r=10*0.1+10*0.075+(p-20)*0.05;else if(p>40&&p<=60)r=10*0.1+10*0.075+20*0.05+(p-40) *0.03;else if(p>60&&p<=100)r=10*0.1+10*0.075+20*0.05+20*0.0 3+(p-60)*0.015;else if(p>100)r=10*0.1+10*0.075+20*0.05+20*0.0 3+40*0.015+(p-100)*0.01;printf("%f\n",r);return 0;}(5).#include <stdio.h>int main(){char c;while((c=getchar())!='\n'){if(c>='a'&&c<='z')c=c-32;putchar(c);}return 0;}(6).#include<stdio.h>int main(){int m,k=2;printf("输入一个正整数:\n");scanf("%d",&m);while(k<m)if(m%k==0){printf("%4d",k);m=m/k;}elsek++;printf("%4d\n",m);return 0;}(7).#include<stdio.h>int main(){int a,n,s=0,p=0,i;scanf("%d %d",&n,&a);for(i=1;i<=n;i++){p=p*10+a;s=s+p;}printf("%d\n",s);return 0;}(8).#include<stdio.h>int main(){int i,j,k;for(i=1;i<=9;i++)for(j=0;j<=9;j++)for(k=0;k<=9;k++)printf("%5d",100*i+10*j+k);return 0;}(9).#include<stdio.h>#include<math.h>int main(){float a=-10,b=10,x,f1,f2,f;f1=(((2*a-4)*a+3)*a)-6;f2=(((2*b-4)*b+3)*b)-6;do{x=(a+b)/2;f=(((2*x-4)*x+3)*x)-6;if(f*f1<0){b=x;f2=f;}else{a=x;f1=f;}}while(fabs(f)>=1e-6);printf("%6.2f\n",x);return 0;}(10).#include<stdio.h>#include<math.h>int main(){int n=2;double eps,t,s=0,x;scanf("%lf %lf",&x,&eps);t=x;s=t;while(fabs(t)>=eps){t=-t*(2*n-3)*x*x/(2*n-2);s=s+t/(2*n);n++;}printf("%d,%lf\n",n,s);return 0; (11).#include<stdio.h>int main(){unsigned long s,t=0,p=1;scanf("%u",&s);while(s!=0){if((s%10)%2!=0){t=t+(s%10)*p;p=p*10;}s=s/10;}printf("%u\n",t);return 0;}第4章习题参考答案1.单项选择题(1) D (2) D (3) D (4) B (5)D(6) B (7)A (8) D (9) C (10)D(11) B (12)D (13) A (14) B2.填空题(1)2(2)嵌套,递归(3)全局变量,局部变量,静态变量,动态变量(4)auto , static , register , extern(5)外部变量(6)编译,运行3.阅读程序,指出结果(1)15(2)5(3)5,4,3(4)i=5i=2i=2i=4i=2(5)求水仙花数(6)-5*5*5(7)30(8)0 101 112 124.程序填空(1)float fun(float , float) ,x+y,x-y , z+y,z-y(2)x ,x*x+1(3)s=0 , a=a+b5.编程题(1).#include<stdio.h>unsigned int fun(unsigned int);int main(){unsigned int s;scanf("%u",&s);printf("%u\n",fun(s));return 0;}unsigned int fun(unsigned int s){unsigned int p=0;while(s!=0){p=p+s%10;s=s/10;}return p;}(2).#include<stdio.h>#include<stdlib.h>#include<math.h>void f1(float,float,float,float);void f2(float,float,float,float);voidf3(float,float,float,float);int main() {float a,b,c,d;scanf("%f %f %f",&a,&b,&c);if(a==0){printf("不是一元二次方程\n");exit(0);}d=b*b-4*a*c;if(d>0)f1(a,b,c,d);else if(d==0)f2(a,b,c,d);elsef3(a,b,c,d);return 0;}void f1(float a,float b,float c,float d){ float x1,x2;{x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf("%.2f ,%.2f\n",x1,x2);}}void f2(float a,float b,float c,float d){ float x1,x2;{x1=-b/(2*a);x2=-b/(2*a);printf("%.2f ,%.2f\n",x1,x2);}}void f3(float a,float b,float c,float d){ float x1,x2;{x1=-b/(2*a);x2=sqrt(-d)/(2*a);printf("%.2f+i*%.2f\n",x1,x2);printf("%.2f-i*%.2f\n",x1,x2);}}(3).#include<stdio.h>double p(int,double);int main(){int n;double x;do{scanf("%d",&n);}while(n<0);scanf("%lf",&x);printf("%lf\n",p(n,x));return 0;}double p(int n,double x){double pn;if(n==0)pn=1;else if(n==1)pn=x;elsepn=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2, x))/n;return pn;}(4).#include<stdio.h>#define RATE 0.053double fun(float);void display(float,int);int main(){float dep;int season;scanf("%f %d",&dep,&season);display(dep,season);return 0;}double fun(float d){return d*RATE;}void display(float d,int s){int i;printf("季度利息余额\n");printf("-------------------------------\n");for(i=1;i<=s;i++){printf("%-4d %-.2f %-.2f\ n",i,fun(d),fun(d)*i+d);printf("-------------------------------\n");} }(5).#include<stdio.h>double fun(void);int main(){printf("%lf\n",fun());return 0;}double fun(void){double s=0;int n=1;while((double)(2*n-1)/((2*n)*(2*n)) >1e-4){s=s+(double)(2*n-1)/((2*n)*(2*n));n++;}return s;}(6).#include<stdio.h>int fun(int);int main(){int w;scanf("%d",&w);printf("%d\n",fun(w));return 0;}int fun(int w){int n=1,p=1,m;m=w;while(m>10){m=m/10;p=p*10;n++;}return w%p;}第5章习题参考答案1、选择题:(1) C (2) B C (3) B (4) B (5) A(6) D (7) D (8) B2、填空题(1)0,9(2)float realArray[100],char strArray[16],int intArray[1000](3)运算符sizeof(4)6字节3、阅读程序,写出下面程序的运行结果(1)aabbcc dd(2)abcd(3)ahAMa(4)0010(5)1 3 4 5(6)This is the title.Name 1 is RosalindaName 2 is ZekeThe biggest name alpabetically is ZekeBoth names are Rosalinda Zeke(7)0 0 0 0 0 0 0 00 1 2 3 4 5 6 70 2 5 6 8 10 748 140 3 6 9 12 15 18 210 4 8 12 16 20 24 280 5 10 15 20 177 30 350 6 12 18 24 30 36 420 7 14 21 28 35 42 494、程序填空(1)a[i][j] != a[j][i] , 1(2)0, a[i] < a[mini] , maxi = i , a[maxi] = a[mini](3)int a[], int b[], b[i] = a[i], -999, arraycopy(a,b), b[i++](4)a<sizeof(ch), if5、编程题(1)#include<stdio.h>int main ( ){1 int a[3][4] = {0, 2,9,7,5,13,6,8,27,11,1,3};int i,j,temp;for(i=0,j=0;j<4;j++){temp = a[2-i][j];a[2-i][j] = a[i][j];a[i][j] = temp;}for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",a[i][j]);printf("\n");}return 0;}(2)#include<stdio.h>int main ( ){static int a[6][6];int i,j,t=1;for(i=0;i<6;i++){t = i+1;for(j=0;j<i+1;j++)a[i][j] = t--;}for(i=0;i<6;i++){for(j=0;j<6;j++)printf("%3d",a[i][j]);printf("\n");}return 0;}(3)#include <stdio.h>#define M 3#define N 4#define R 5int main( ){static int a[M][N],b[N][R],c[M][R];int i,j,k;2 printf("Matrix a:\n");for( i = 0; i < M; i++ )for( j = 0; j < N; j++ )scanf( "%d",&a[i][j] );printf("Matrix b:\n");for( i = 0; i < N; i++ )for( j = 0; j < R; j++ )scanf( "%d",&b[i][j] );for( i = 0; i < M; i ++ )for( j = 0; j < N; j++ )for( k = 0; k < R; k++)c[i][k] += a[i][j]*b[j][k];for( i = 0; i < M; i++ ){for( j = 0; j < R; j++ )printf( "%3d",c[i][j] );printf("\n");}return 0;}(4)#include <stdio.h>#define M 5int main( ){static int a[M];int i,max = -1,min = 100,maxi,mini,temp;for( i = 0; i < M; i++ )scanf( "%d",&a[i] ); //0~99间的值for( i = 0; i < M; i++ ){if( max < a[i] ){max = a[i];maxi = i;}if( min > a[i] ){min = a[i];mini = i;}}temp = a[maxi];a[maxi] = a[mini];a[mini] = temp;for( i = 0; i < M; i++ )printf( "%3d",a[i] );return 0; }3(5)#include <stdio.h>#define M 3#define N 4int main( ){static int a[M][N];int max = -1,sumcol=0,sumrow=0;int i,j,maxi,col;for( i = 0; i < M; i++ ){sumrow = 0;for( j = 0; j < N; j++ ){scanf( "%d",&a[i][j] );sumrow += a[i][j];}if ( max < sumrow ){max = sumrow;maxi = i;}}printf("which col sum will be caculated?(>0)");scanf("%d",&col);for( i = 0; i < M; i ++ )sumcol += a[i][col-1];printf("The %dth row's sum is max, max=%d\n",maxi+1,max);printf("The %dth column's sum=%d\n",col,sumcol);return 0;}(6)#include <stdio.h>#define M 81int main( ){static char str[M];int i,count = 0;char ch;gets(str);fflush(stdin); //清空输入缓冲区,以便读入字符数据printf("Which character will be found?");ch = getchar();for( i = 0; i < strlen(str); i++ )if( ch == str[i] )count++;printf( "The number of character '%c' is %d\n",ch,count );4 return 0;}(7)#include <stdio.h>#include <stdlib.h>#define N 10 //同学人数#define M 5 //课程数void enter_scores(void);void sort_scores(int score[][M], int average[N][3]);void disp_scores(int score[][M]);void histogram(int n, int score[][M]);void printchar(int n); static int score[N][M];static int aver[N][3]; //第1列为均值,第2列原始顺序,第3列为均值逆序int main(){int course;enter_scores();printf("\n===========Oringenal Score Start=========\n");disp_scores(score);printf("\n===========Oringenal Score End===========\n");printf("\n===========Sorted Score Start============\n");sort_scores(score,aver);printf("\n===========Sorted Score End==============\n");printf("\nWhich class will be statisticed?\n");scanf("%d",&course);histogram(course, score);system("Pause");return 0;}/* 输入成绩*/void enter_scores(){int i, j;for(i=0; i<N; i++) {for(j=0; j<M; j++){scanf("%d",&score[i][j]);aver[i][0] += score[i][j];}}for( i = 0; i < N; i++ )for ( j = 1; j < 3; j++ )5 aver[i][j] = i;}/* 成绩排序. */void sort_scores(int score[][M], int average[N][3]){int i,j,t;int temp,tempindex;for( i = 0; i < N - 1; i++ )for( j = 0; j < N - 1 - i; j++ )if ( average[j][0] < average[j+1][0] ){temp = average[j][0];average[j][0] = average[j+1][0];average[j+1][0] = temp;tempindex = average[j][2];average[j][2] = average[j+1][2];average[j+1][2] = tempindex;}printf("\n Score1 Score2 Score3 Score4 Score5\n");for( i = 0; i < N; i++ ){t = average[i][2];for( j = 0;j < M; j++ ){printf("%8d", score[t][j]);}printf("\n");}}/* 输出成绩*/void disp_scores(int score[][M]){int i, j;printf("\n Score1 Score2 Score3 Score4 Score5\n");for( i = 0; i < N; i++ ){for( j = 0;j < M; j++ )printf("%8d", score[i][j]);printf("\n");}}void printchar(int n){6 int i;for (i = 0; i < n; ++i) putchar('*');}void histogram(int course, int score[][M]){int i,temp;int segs[5] = {0};int sc[N];for( i = 0; i < N; i++ )sc[i] = score[i][course];for (i = 0; i < N; i++)/* 统计各分段人数*/{temp = (int)sc[i]/10;segs[ temp<6?0:temp-5]++; /* 成绩/10,将成绩分段*/}printf("\nSegment Number\n");for (i = 0; i < 5; i++) /* 输出直方图,每段的人数*/{printf("<%3d: %5d| ", (i+1)*10+50, segs[i]);printchar(segs[i]);putchar('\n');}putchar('\n');}(8)#include <stdio.h>#define M 81int main( ){static char str[M];int i,count = 0;char ch = 0;gets(str);for( i = 0; i < strlen(str); i++ )if( ch < str[i] )ch = str[i];for( i = 0; i < strlen(str); i++ )if( ch == str[i] )count++;printf( " max = '%c' ,count = %d\n",ch,count );return 0;}7第6章习题参考答案1、选择题:(1) B (2)B (3)D (4) D (5) A(6) C (7) C (8)A (9) B (10)D(11)C (12)B (13)C (14)D (15)A (16)A2、填空题(1)常量,变量(2)指针(3)2(4)12,12(5)a[0],a[3]3、阅读程序,写出下面程序的运行结果(1)5(2)6(3)abcdefglkjih(4)976531(5)5,9(6)2,4,5,7,6,0,11,9,7,3,(7)string_a=I am a teacher.string_b=You are a student.string_a=I am a teacher.string_b=I am a teacher.4、程序填空(1)*p != '\0', *p-'0', j—(2)i <strlen(str), j=i, k+1(3)a+i, (char)(n%10) + '0'(4)*pk = i, a,n,i+1,pk(5)s1++, *s2, s1=p5、编程题(1)#include <stdio.h>int main(){int a=3,b=7,c=2;int *ptra = &a,*ptrb = &b,*ptrc = &c;int temp;printf("a=%d,b=%d,c=%d\n",a,b,c);printf("*ptra=%d,*ptrb=%d,*ptrc=% d\n",*ptra,*ptrb,*ptrc);if ( *ptra > *ptrb ){temp = *ptra;*ptra = *ptrb;1 *ptrb = temp;}if ( *ptra > *ptrc ){temp = *ptra;*ptra = *ptrc;*ptrc = temp;}if ( *ptrb > *ptrc ){temp = *ptrb;*ptrb = *ptrc;*ptrc = temp;}printf("a=%d,b=%d,c=%d\n",a,b,c); printf("*ptra=%d,*ptrb=%d,*ptrc=% d\n",*ptra,*ptrb,*ptrc);return 0;}(2)#include <stdio.h>#include <stdlib.h>void inputdata(int a[],int n);void process(int a[],int n);void outputdata(int a[],int n);int main(){int a[10],n=10;inputdata(a,n);outputdata(a,n);process(a,n);outputdata(a,n);system("Pause");return 0;}void inputdata(int a[],int n) //0~99之间的数{int i;for( i = 0; i < n; i++ )scanf("%d",a+i);}void outputdata(int *ptr,int n){int i;2printf("\n==========OutPut Data Start=============\n");for( i = 0; i < n; i++ )printf("%4d",*ptr++);printf("\n==========OutPut Data End================\n");}void process(int *ptr,int n){int i,maxi,mini;int max=-1,min=101;for( i = 0; i < n; i++ ){if ( max < *(ptr+i) ){max = *(ptr+i);maxi= i;}if ( min > *(ptr+i) ){min = ptr[i];mini= i;}}if ( mini != 0){i = ptr[0];ptr[0] = ptr[mini];ptr[mini] = i;}if (maxi != n-1){i = ptr[n-1];ptr[n-1] = ptr[maxi];ptr[maxi] = i;}if (maxi == 0 && mini == n-1){i = ptr[maxi];ptr[maxi] = ptr[mini];ptr[mini] = i;}}(3)#include<stdio.h>3int strLength (char *);int main(){static char str[81];gets(str);printf("string "%s" length:%3d\n",str,strLength(str)) ;system("Pause");return 0;}int strLength (char *s){char *p=s;while (*p) p++ ;return (p-s) ;}(4)#include <stdio.h>#define M 3#define N 4void Transpose (int (*a)[N],int (*T)[M]);int main( ){static int a[M][N],T[N][M];int i,j;for( i = 0; i < M; i++ )for( j = 0; j < N; j++ )scanf( "%d",&a[i][j] );printf("\n======Oringinal Matrix Start=========\n");for( i = 0; i < M; i ++ ){for( j = 0; j < N; j++ )printf( "%4d",a[i][j] );printf("\n");}printf("\n======Oringinal Matrix End===========\n");Transpose(a, T);printf("\n======Transpose Matrix Start=========\n");for( i = 0; i < N; i ++ ){for( j = 0; j < M; j++ )printf( "%4d",T[i][j] );printf("\n");}4printf("\n======Transpose Matrix End===========\n");return 0;}void Transpose (int (*a)[N],int (*T)[M]){int i,j;for( i = 0; i < N; i++ )for( j =0; j < M; j++ )T[i][j] = a[j][i];}(5)#include <stdio.h>int main(){static char source[81],target[81];int result;gets(source);gets(target);result = Strcmp(source,target);if (result){if( result < 0 )printf("%s< %s\n",source,target);elseprintf("%s > %s\n",source,target);}elseprintf("%s= %s\n",source,target);return 0;}int Strcmp(char *s,char *t){while (*s && *t && (*s == *t)){s++;t++;}return *s - *t;}(6)#include <stdio.h>5#define M 5#define N 3int sum (int *a);int main( ){static int a[M][N];int i,j;for( i = 0; i < M; i++ )for( j = 0; j < N; j++ )scanf( "%d",&a[i][j] );for( i = 0; i < M; i ++ )printf("Row %d sum: %3d\n", i, sum(a[i]));return 0;}int sum (int *ptr){int i,result = 0;for( i = 0; i < N; i++ )result += *(ptr+i);return result;}6第7章习题答案1、选择题:(1)C (2) C (3)D (4) B (5)A(6)C (7) B (8) A (9)D (10)B(11)D (12) D (13) A2、判断题(1)×(2)√(3)√(4)×(5)√(6)×(7)√(8)×(9)√(10)√第8章习题答案1、选择题:(1) C (2) D (3)A (4) A (5) D(6) C (7) D (8) B 2、填空题(1).(成员域访问运算符),-〉(成员域间接访问运算符)(2)4, 6.0(3)enum(4)typedef(5)<person+3, old=p->age, q->name,q->age3、阅读程序,写出下面程序的运行结果(1)p!=NULL, c++, p->next(2)p1->next, p1->next, p1->next4、程序阅读题(1)7,3(2)zhangping 20(3)Li:3Zhang:3Wang:25.编程题#include <stdio.h>#include <stdlib.h>#define N 10 /*学生人数*/#define M 3 /* 课程数*/struct stu{ /*定义结构体类型*/char name[15];char num[6];float score[M];float aver;} student[N]; /*说明结构体变量*/struct stu findmax(struct stu student[]);void input(struct stu student[]);void output(struct stu student[]);int main(){struct stu temp;input(student);output(student);temp = findmax(student);printf("Max is:\n");printf("%15s%8s%7.2f%7.2f%7.2f% 7.2f",,temp.num,1temp.score[0],temp.score[1],temp.sc ore[2],temp.aver/M);system("Pause");return 0;}struct stu findmax(struct stu student[]){float max = 0.0;int i,maxi;for(i=0; i<N; i++){if(max < student[i].aver){max = student[i].aver;maxi = i;}}return student[maxi];}void input(struct stu student[]){int i,j;printf("input data:\n");for( i=0;i<N;i++){scanf("%s %s",student[i].name,stude nt[i].num);student[i].aver = 0;for( j=0;j<M;j++){scanf("%f",&student[i].score[j]);student[i].aver += student[i].score[j];}}}void output(struct stu student[]){int i,j;for( i=0;i<N;i++){printf("%15s%8s",student[i].name,stu dent[i].num);for( j=0;j<M;j++)printf("%7.2f",student[i].score[j]);printf("%7.2f\n",student[i].aver/M);}}2第9章习题答案1、选择题:(1) A (2) D (3)B (4) B (5) A(6) A (7) C (8)D (9) A (10) A2、填空题(1)文本文件,二进制文件(2)fopen, fclose(3)fprintf, fscanf, feof(4)fwrite, fread, fputs, fgets(5)文本, 二进制(6)1,0(7)字节,流式3、程序填空题(1)*fp1, *fp2, ftell(fp1); fgetc(fp1),fp2(2)*fp, fp,sizeof(stud[0])*i,0&stud[i](3)“r”, fgetc(fp),count++(4)FILE *f, sizeof(r), r.num,r.total4、编程题#include <stdio.h>#define N 5 /*学生人数*/#define M 3 /* 课程数*/struct stu{ /*定义结构体类型*/char name[15];char num[6];float score[M];float aver;} student[N]; /*说明结构体变量*/void sort(struct stu student[]);void writetofile(struct stu student[], char filename[],char mode[]);int main(){FILE *fp;struct stu *ptr=NULL;int i,j;printf("input data:\n");for( i=0;i<N;i++){scanf("%s %s",student[i].name,stude nt[i].num);student[i].aver = 0;for( j=0;j<M;j++){scanf("%f",&student[i].score[j]);student[i].aver += student[i].score[j];1 }}writetofile(student, "student.txt","w");writetofile(student, "sort.txt","w");writetofile(student,"sort2.txt","w");sort(student);writetofile(student, "sort.txt","a");ptr = (struct stu *)malloc(sizeof(struct stu));scanf("%s %s", ptr->name,ptr->num);ptr->aver = 0;for( j=0;j<M;j++){scanf("%f",&ptr->score[j]);ptr->aver += ptr->score[j];}if((fp=fopen("sort2.txt","a"))==NULL){printf("cannot open file");exit(0);}fprintf(fp,"%s %s",ptr->name,ptr->nu m);for( j=0;j<M;j++)fprintf(fp,"%7.2f",ptr->score[j]);fprintf(fp,"%7.2f\n",ptr->aver/M);fclose(fp);return 0;}void sort(struct stu student[]){struct stu temp;int i,j,k;for(i=0; i<N-1; i++){k=i;for(j=i+1; j<N; j++)if(student[j].aver < student[k].aver)k=j;if(k!=i){temp=student[i];student[i]=student[k];student[k]=temp;}}}2void writetofile(struct stu student[], char filename[],char mode[]){FILE *fp;int i,j;if((fp=fopen(filename,mode))==NULL ){printf("cannot open file");exit(0);}for( i=0;i<N;i++){ fprintf(fp,"%s %s",student[i].name,st udent[i].num);for( j=0;j<M;j++)fprintf(fp,"%7.2f", student[i].score[j]);fprintf(fp,"%7.2f\n",student[i].aver/M );}fclose(fp);}。
C语言程序设计第3章 选择结构流程和应用
2 单分支和双分支选择结构程序设计
简单if语句 if-else语句 条件运算符与条件表达式
简单if语句
学一学 简单if语句的形式为: if ( 条件表达式 ) 语句
其流程图如图3-1所示。语句的执 行过程是先计算“条件表达式”, 若值为“真”,则执行“语句”; 否则什么也不做。此处的“语句” 可以是简单语句,也可以是用一对 大括号“{ }”括起来的复合语句。
本章内容中我们将学习 1 选择结构判定条件的构成 2 单分支与双分支选择结构程序设计 3 多分支选择结构程序设计
1 选择结构判定条件的构成
关系运算符与关系表达式 逻辑运算符与逻辑表达式
关系运算符
关系运算是对两个操作数之间进行比较的运算符,其 运算结果为逻辑值(或称“布尔”值,boolean) “真”或“假”。 C语言中提供六种关系运算符,如 表3-1所示。
条件
Y
N
语句
试一试
问题3.4 从键盘输入一个数,输出其绝对值。 解题步骤 1.定义变量二个int变量iX,iY,其中iX用来接收 用户从键盘输入的数据,iY用来存放iX的绝对值。 2.从键盘输入一个整数放iX; 3.把iX放iY; 4.正数的绝对值是正数本身,负数的绝对值是其 相反数。所以,如果iX<0,则iY= -iX,否则不 需要做什么; 5.输出iX和iY。
练一练
问题:小明去参加一个同学的生日聚会, 同学的家长规定18岁以上的才可以饮酒, 所以需要编一程序根据输入的年龄打印一 张饮酒卷,使的能饮酒的同学可以获取饮 酒卷。
if-else语句
学一学 if-else语句是标准的if语句。 用来实现双分支选择结构, 其一般形式为: if ( 条件 ) 语句1; else 语句2;
第3章-WinForm程序设计与实践-廉龙颖-清华大学出版社
3.4.2 方法的重载
• 方法重载是一种操作性多态。当需要在多个不同的实现中对不同的数据执行 相同的逻辑操作时,就可以使用重载,例如,Console类的WriteLine()方法 具有19个重载。
3.5 构造方法
• 构造方法是类的一个特殊成员,它会在类实例化对象时自动调用,为对 象开辟内存空间,并对类中的成员进行初始化。
• 在一个类中定义构造方法,必须满足以下3个条件: • (1)方法名与类名相同; • (2)在方法名的前面没有返回值类型的声明; • (3)在方法中不能使用return语句返回一个值。
3.3 类的数据成员
• 1.常量
• 在类中的常量成员是一种符号常量,符号常量是由用户根据需要自行创建的常量。
• 2.字段
• 字段表示类的成员变量,字段的声明方式即变量的声明方式,字段的值代表某个对象数据状态。
• 3.属性
• 在C#中,为保证类中内部数据的安全,可以使用属性来封装字段,首先需要将字段访问级别设为 private,再通过属性的get和set访问器来对字段进行读写操作,具体语法格式如下:
WINFORM程序设计与实践
第3章面向对象程序设计
学习目标:
• 理解面向对象的概念,理解类与对象的区别 • 掌握类的声明和实例化方法 • 掌握属性、方法以及构造方法的定义 • 了解方法的重载以及方法的高级参数 • 了解访问修饰符 • 掌握静态类和静态成员的访问方法 • 理解和掌握面向对象的基本特征 • 掌握抽象类和嵌套类的声明方法 • 掌握委托和Lambda的使用方法 • 掌握程序集的引用
C程序设计教程(第3版)
感谢观看
ห้องสมุดไป่ตู้
全书共9章,主要内容包括程序设计和C语言,最简单的C程序设计——顺序程序设计,选择结构程序设计, 循环结构程序设计等。
成书过程
修订情况
出版工作
该教材根据中国国内一般大学非计算机专业的教学需要,作者在《C程序设计(第五版)》一书的基础上重新 改写并出版了《C程序设计教程(第3版)》。
该教材由谭浩强著,南京大学金莹副教授、薜淑斌高级工程师和谭亦峰工程师参加了该教材的策划、调研、 收集资料、研讨以及编写部分程序的工作。
2018年8月1日,该教材由清华大学出版社出版。
内容简介
该教材介绍怎样使用C语言进行程序设计。全书共9章,主要内容包括程序设计和C语言,最简单的C程序设 计——顺序程序设计,选择结构程序设计,循环结构程序设计,利用数组处理批量数据,利用函数进行模块化程 序设计,善于使用指针,根据需要创建数据类型,利用文件保存数据。
在该次修订中保持以下特点:
作者简介
谭浩强,男,汉族,1934年11月出生,广东省人。1958年毕业于清华大学,从事计算机及应用专业,毕业后 留校工作,1985年调联北京联大自动化工程学院任副院长。曾担任清华大学团委副书记、清华大学绵阳分校党委 常委、清华大学分校副校长等职务,同时承担教学工作。曾获全国高校教学成果奖国家级奖、国家科技进步奖、 多项部委级优秀教材奖,北京市政府授予“有突出贡献专家”称号,被国家科委、中国科协表彰为“全国优秀科 普工作者”,获国务院特殊津贴。
教材目录
(注:目录排版顺序为从左列至右列 )
教学资源
该教材有配套教材——《C程序设计教程(第3版)学习辅导》,书中提供主教材中各章习题的参考答案以及 上机实践指导。
教材特色
《C++面向对象程序设计》答案-第三章--谭浩强-清华大学出版社
2:#include 〈iostream〉using namespace std;class Date{public:Date(int,int,int);Date(int,int);Date(int);Date();void display();private:int month;int day;int year;};Date::Date(int m,int d,int y):month(m),day(d),year(y){}Date::Date(int m,int d):month(m),day(d){year=2005;}Date::Date(int m):month(m){day=1;year=2005;}Date::Date(){month=1;day=1;year=2005;}void Date::display(){cout<〈month〈〈"/”〈<day〈<”/”<<year〈<endl;}int main(){Date d1(10,13,2005);Date d2(12,30);Date d3(10);Date d4;d1.display();d2。
display();d3.display();d4。
display();return 0;}3:#include 〈iostream>using namespace std;class Date{public:Date(int=1,int=1,int=2005);void display();private:int month;int day;int year;};Date::Date(int m,int d,int y):month(m),day(d),year(y){}void Date::display(){cout〈〈month<<”/”<<day<〈"/"<〈year〈〈endl;}int main(){Date d1(10,13,2005);Date d2(12,30);Date d3(10);Date d4;d1.display();d2.display();d3。
C 程序设计教程(第3版)
成书过程
修订情况
出版工作
该教材是作者结合程序设计、开发及授课经验编写而成。该教材由华东师范大学江红和余青松编著,具体分 工如下:第1~第13章由江红编写,第14~第22章以及附录由余青松编写。
C 程序设计教程(第3版)
清华大学出版社出版的图书
01 成书过程
03 教材目录 05 作者简介
目录
02 内容简介 04 教学资源
《C#程序设计教程(第3版)》是由江红、余青松编著,2018年清华大学出版社出版的“十二五”普通高等 教育本科国家级规划教材、21世纪高等学校计算机类课程创新规划教材、上海市普通高校优秀教材。该教材可作 为高等学校计算机程序设计教程,同时也可作为广大程序设计开发者、爱好者的自学参考书。
2018年7月1日,该教材由清华大学出版社出版。
内容简介
该教材是《C#程序设计教程》的第3版。书中基于VisualStudio 2017/.NETFramework4.7开发和运行环境, 阐述C#7.0语言的基础知识,以及使用C#7.0语言的实际开发应用实例。全书共22章,内容共分为3部分,第1部分 阐述C#面向对象程序设计语言的基础知识,包括C#语言概述、C#语言基础、面向对象编程、结构、枚举、泛型、 特性、语言集成查询、多线程编程技术;第2部分阐述基于.NETFramework公共类库的基本应用,包括数值、日期 和字符串处理、文件和流输入输出、集合和数据结构、数据库访问;第3部分介绍C#应用程序开发技术,包括 Windows窗体应用程序、WPF应用程序、Web应用程序设计。
第3章 最简单的C程序设计
3.1顺序程序设计举例
例3.2 计算存款利息。有1000元,想存一 年。有三种方法可选: (1)活期,年利率为r1 (2)一年期定期,年利率为r2 (3)存两次半年定期,年利率为r3 请分别计算出一年后按三种方法所得到的 本息和。
3.1顺序程序设计举例
解题思路:确定计算本息和的公式。
从数学知识可知:若存款额为p0,则: 活期存款一年后本息和为: p1=p0(1+r1) 一年期定期存款,一年后本息和为: p2=p0(1+r2) 两次半年定期存款,一年后本息和为:
3.2.3 整型数据
扩充的整型类型:
有符号基本整型 无符号基本整型 有符号短整型 无符号短整型 有符号长整型 无符号长整型 有符号双长整型 无符号双长整型 [signed] int; unsigned int; [signed] short [int]; unsigned short [int]; [signed] long [int]; unsigned long [int] [signed] long long [int]; unsigned long long [int]
实型常量 十进制小数形式:如0.34 -56.79 0.0 指数形式:如12.34e3 (代表12.34103) 字符常量:如’?’ 转义字符:如’\n’ 字符串常量:如”boy” 符号常量:#define PI 3.1416
3.2.1 常量和变量
2. 变量:在程序运行期间,变量的值是可以改变的 变量必须先定义,后使用 定义变量时指定该变量的名字和类型 变量名和变量值是两个不同的概念 变量名实际上是以一个名字代表的一个存储地址 从变量中取值,实际上是通过变量名找到相应的内 存地址,从该存储单元中读取数据
C语言程序设计(2016年清华大学出版社出版的图书)
成书过程
该教材是按照普通高等院校验的教师编写而成。
该教材由孙改平、王德志任主编,吴静、盛建瓴、王晓菊任副主编。具体编写分工如下:第1、4章由王晓菊 编写;第2、3章由盛建瓴编写;第5、9章由吴静编写;第6、7章由孙改平编写;第8、10章、附录由王德志编写, 最后由孙改平、王德志进行统稿。
该教材可使读者建立起对程序设计和C语言的理解。该教材的讲解是不断提出问题,解决问题,再进一步提出 问题,并逐步解决问题的过程。使学生养成由简到繁、逐步求精的编程习惯。
作者简介
孙改平,女,硕士,华北科技学院计算机学院教授,主要研究方向为网络数据库、计算机算法。主讲课程有 《网络数据库》《Oracle数据库》《C程序设计》《Visual Basic程序设计》《大学计算机基础》《网页制作》 《网络编程》等。
王德志,男,博士,华北科技学院计算机学院副教授,主要研究方向为物联网数据采集、嵌入式系统开发。 主要负责讲授计算机编程语言与物联网应用课程。
谢谢观看
C语言程序设计(2016年清华大学出 版社出版的图书)
2016年清华大学出版社出版的图书
01 成书过程
03 教材目录 05 教材特色
目录
02 内容简介 04 教学资源 06 作者简介
《C语言程序设计》是由孙改平、王德志主编,2016年清华大学出版社出版的高等学校计算机基础教育精选 教材。该教材适合作为高等院校及高职高专院校C语言程序设计课程的教材,也可作为计算机各类培训班的教材或 计算机及相关工作的科技人员,计算机爱好者及各类自学人员的参考。
教材目录
《计算机组成与系统结构》(清华大学出版社)(袁春风编著)第三章课件
2011-9-17
MIPS中的浮点数比较和分支指令 中的浮点数比较和分支指令
涉及到的浮点操作数: 位单精度 位单精度浮点数 涉及到的浮点操作数: 32位单精度浮点数 / 64位双精度浮点数 浮点操作数 位双精度浮点数 涉及到的浮点操作:比较操作( 减法来实现比较) 涉及到的浮点操作:比较操作(用 减法来实现比较) 还涉及到的定点操作: 用于地址运算) 还涉及到的定点操作:加 / 减(用于地址运算) 有一个专门的浮点标志cond,无需在指令中明显给出cond ,无需在指令中明显给出 有一个专门的浮点标志
2011-9-17
MIPS定点数据传送指令 定点数据传送指令
涉及到的操作数: 带符号数( 涉及到的操作数: 32/16位带符号数(偏移量可以是负数) 带符号数 偏移量可以是负数) 涉及到的操作: 涉及到的操作:加 / 减 / 符号扩展 / 0扩展 扩展
2011-9-17
MIPS中的浮点算术运算指令 中的浮点算术运算指令
2011-9-17
C语言程序中涉及的运算 语言程序中涉及的运算
逻辑运算 • 用途 • 操作 表示“ “‖”表示“OR”运算 表示 运算 “&&”表示“AND”运算 表示“ 表示 运算 例如, 例如, if ((x>y) && (i<100)) then …… 表示“ “!”表示“NOT”运算 表示 运算 符号表示不同: 符号表示不同:& ~ && ;| ~ ‖; …… 运算过程不同: 运算过程不同:按位 ~ 整体 结果类型不同: 结果类型不同:位串 ~ 逻辑值 • 与按位运算的差别 用于关系表达式的运算 例如, 中的“ 例如,if (x>y and i<100)then ……中的“and”运算 ) 中的 运算
c++语言程序设计清华大学郑莉c++3
}
14
bool symm(long n) {
long i, m; i=n ; m=0 ; while(i) {
m=m*10+i%10; i=i/10 ; } return( m==n ); }
15
运行结果: m=11 m*m=121 m*m*m=1331 m=101 m*m=10201 m*m*m=1030301 m=111 m*m=12321 m*m*m=1367631
16
C++语言程序设计
清华大学 郑莉
函 例3-5
数 的
计算如下公式,并输出结果:
声 明 与
k
sin2 (r)
else cout<<"player loses\n";
}
23
rand
函数原型:int rand(void); 所需头文件:<cstdlib> 功能和返回值:求出并返回一个伪随机数
srand
函数原型:void srand(unsigned int seed); 参数:seed产生随机数的种子。 所需头文件:<cstdlib> 功能:为使rand()产生一序列伪随机整数而设
使 例如:
用 11012=1(23)+1(22)+0(21)+1(20)=1310
所以,如果输入1101,则应输出13
8
#include <iostream>
C 语言程序设计-清华大学-郑莉
C 语言程序设计-清华大学-郑莉简介C语言是一种通用的、面向过程式的计算机编程语言。
它是由贝尔实验室的Dennis M. Ritchie在20世纪70年代开发出来的。
C语言具有简洁的语法和强大的编程能力,被广泛应用于系统编程、嵌入式系统开发和高性能计算等领域。
清华大学郑莉教授的《C 语言程序设计》课程是一门专注于C语言基础知识和程序设计技巧的课程,本文将对该课程进行介绍和总结。
课程内容《C 语言程序设计》课程由清华大学郑莉教授主讲,涵盖了C语言的基本知识和程序设计的基本技巧。
课程内容主要包括以下几个方面:数据类型和运算符•C语言中的基本数据类型,包括整数类型、浮点数类型和字符类型等。
•C语言中的运算符,包括算术运算符、关系运算符和逻辑运算符等。
控制结构•C语言中的选择结构和循环结构,包括if语句、switch语句和while循环等。
•C语言中的跳转语句,如break语句和continue语句等。
函数和指针•C语言中的函数概念和函数调用。
•C语言中的指针概念和指针的运算及应用。
数组和字符串•C语言中的数组概念和数组的使用。
•C语言中的字符串概念和字符串的操作。
结构体和文件操作•C语言中的结构体概念和结构体的定义和使用。
•C语言中的文件操作,包括文件读写操作和文件指针的应用。
教学方法《C 语言程序设计》课程采用清华大学郑莉教授自编教材《C语言程序设计》作为参考书。
课程以理论讲解和实践操作相结合的方式进行教学。
在每个章节的理论讲解部分,郑莉教授会详细介绍相关的C语言知识点,并通过示例代码和代码分析来帮助学生理解和掌握。
在实践操作部分,学生会进行一系列的编程练习,通过实际的编写和调试C语言程序来巩固所学知识。
在这个过程中,学生将会学习到如何运用C语言的基本语法和程序设计技巧来解决实际问题。
此外,课程还设置了课后习题和实验,供学生进一步巩固和拓展所学内容。
学生可以通过完成习题和实验来提高自己的编程能力和代码调试能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1 函数的定义与使用 —— 3.1.2 函数的调用
11
int main() { double a = 16.0 * arctan(1 / 5.0); double b = 4.0 * arctan(1 / 239.0); /* 注意:因为整数相除结果取整,如果参数写1/5, 1/239,结果就都是0 */ cout << "PI = " << a - b << endl; return 0; }
所以,如果输入1101,则应输出13
冯晶
gfeng@
3.1 函数的定义与使用 —— 3.1.2 函数的调用
#include <iostream> using namespace std; double power (double x, int n); //计算x的n次方 int main() { int value = 0; cout << "Enter an 8 bit binary number "; for (int i = 7; i >= 0; i--) { char ch; cin >> ch; if (ch == '1') value += static_cast<int>(power(2, i)); } cout << "Decimal value is " << value << endl; return 0; } double power (double x, int n) { double val = 1.0; while (n--) val *= x; return val; }
8
例3-2 (续)
运行结果: Enter an 8 bit binary number 01101001 Decimal value is 105
冯晶 gfeng@
3.1 函数的定义与使用 —— 3.1.2 函数的调用
9
例3-3 编写程序求π的值
Π的计算公式如下:
1 1 π 16arctan 4arctan 5 239 其中arctan用如下形式的级数计算:
C++语言程序设计(第4版)
第三章 函数
冯晶 gfeng@
2
目录
3.1 3.2 3.3 3.4 3.5 3.6 3.7 函数的定义与使用 内联函数 带默认参数值的函数 函数重载 使用C++系统函数 深度探索 小结
冯晶
gfeng@
3.1 函数的定义与使用
3
3.1.1 函数定义
x x3 x5 x 7 sin x 1! 3! 5! 7!
2 n 1 x (1)n1 (2n 1)! n 1
冯晶
gfeng@
3.1 函数的定义与使用 —— 3.1.2 函数的调用
17
#include <iostream> #include <cmath> /*对C++标准库中数学函数的说明*/ using namespace std; const double TINY_VALUE = 1e-10;
double tsin(double x) { double g = 0; double t = x; int n = 1; do { g += t; n++; t = -t * x * x / (2 * n - 1) / (2 * n - 2); } while (fabs(t) >= TINY_VALUE); return g; }
冯晶 gfeng@
3.1 函数的定义与使用 —— 3.1.2 函数的调用
22
enum GameStatus { WIN, LOSE, PLAYING };
int main() { int sum, myPoint; GameStatus status; unsigned seed; cout<<"Please enter an unsigned integer: "; cin >> seed;//输入随机数种子 srand(seed);//将种子传递给rand()
冯晶 gfeng@
例3-5(续)
3.1 函数的定义与使用 —— 3.1.2 函数的调用
18
int main() { 例3-5 (续) double k, r, s; cout << "r = "; cin >> r; cout << "s = "; cin >> s; if (r * r <= s * s) k=sqrt(tsin(r)*tsin(r)+tsin(s)*tsin(s)); else k = tsin(r * s) / 2; cout << k << endl; return 0; 运行结果: r=5 }
s=8 1.37781
冯晶 gfeng@
3.1 函数的定义与使用 —— 3.1.2 函数的调用
19
例3-6 投骰子的随机游戏
每个骰子有六面,点数分别为 1 、 2 、 3 、 4 、 5 、 6 。游戏 者在程序开始时输入一个无符号整数,作为产生随机数的种
子。
每轮投两次骰子,第一轮如果和数为7或11则为胜,游戏 结束;和数为2、3或12则为负,游戏结束;和数为其它值则 将此值作为自己的点数,继续第二轮、第三轮 ... 直到某轮 的和数等于点数则取胜,若在此前出现和数为7则为负。 由 rolldice 函数负责模拟投骰子、计算和数并输出和数。
• 函数是面向对象程序设计中,对功能的抽象 • 函数定义的语法形式
类型标识符 函数名(形式参数表) { 是被初始化的内部 语句序列 变量,寿命和可见 } 性仅限于函数内部 若无返回值,写void
冯晶
gfeng@
3.1 函数的定义与使用
4
3.1.1 函数定义(续)
• 形式参数表
• 函数的返回值
冯晶 gfeng@
3.1 函数的定义与使用 —— 3.1.2 函数的调用
6
例3-1编写一个求x的n次方的函数
#include <iostream> using namespace std;
//计算x的n次方 double power(double x, int n) { double val = 1.0; while (n--) val *= x; return val; }
冯晶
gfeng@
3.1 函数的定义与使用 —— 3.1.2 函数的调用
16
例3-5
• 计算如下公式,并输出结果:
sin 2 r sin 2 s 当r 2 s 2 k 1 sin( rs ) 当r 2 s 2 2
• 其中r、s的值由键盘输入。sin x的近似值按如下公式计 算,计算精度为10-10:
例3-4(续)
冯晶 gfeng@
3.1 函数的定义与使用 —— 3.1.2 函数的调用
15
例3-4(续)
运行结果: m=11 m=101 m=111 m*m=121 m*m*m=1331 m*m*m=1030301 m*m*m=1367631 m*m=10201 m*m=12321
• 调用前先声明函数:
▫ 若函数定义在调用点之前,则无需另外声明; ▫ 若函数定义在调用点之后,则需要在调用函数前按 如下形式声明函数原型:
类型标识符 被调用函数名(含类型说明的形参表);
• 调用形式
函数名(实参列表)
• 嵌套调用 • 递归调用
▫ 在一个函数的函数体中,可以调用另一函数,称为 嵌套调用。 ▫ 函数直接或间接调用自身。
x3 x5 x 7 arctan x x 3 5 7
直到级数某项绝对值不大于10-15为止;π 和x均为
double型。
冯晶 gfeng@
3.1 函数的定义与使用——3.1.2 函数的调用
10
#include <iostream> using namespace std;
• 分析:
▫ 10取余的方法,从最低位开始,依次取出该数的各位数 字。按反序重新构成新的数,比较与原数是否相等,若 相等,则原数为回文。
冯晶
gfeng@
3.1 函数的定义与使用 —— 3.1.2 函数的调用
13
#include <iostream> using namespace std; //判断n是否为回文数 bool symm(unsigned n) { unsigned i = n; unsigned m = 0; while (i > 0) { m = m * 10 + i % 10; i /= 10; } return m == n; }
<type1> name1, <type2> name2, ..., <typen> namen
▫ 由 return 语句给出,例如: return 0 ▫ 无返回值的函数(void类型),不必写return语 句。
冯晶
gfeng@
3.1 函数的定义与使用
5ቤተ መጻሕፍቲ ባይዱ
3.1.2 函数的调用
int main() { cout << "5 to the power 2 is " << power(5, 2) << endl; return 0; }
冯晶 gfeng@
3.1 函数的定义与使用 —— 3.1.2 函数的调用