C语言实验 第二课.

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

1.1 程序和程序设计 程 序:简单的说程序就是指令的集合。 计算机设计语言: 机器语言 :二进制 0 、 1 汇编语言:助记符(英语单词)。 高级语言: 人类自然语言(数学语言 + 英语) 如: C 语言、 Qbasic 、 VB 等 第一章:程序设计基本概念.
10.2.switch语句.
“八皇后”问题 崔萌萌 吕金华.
C语言实验 第二课.
C语言实验 第一课 标题:学号+姓名.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
Class 2 流程控制-選擇敘述與迴圈.
Do.For.While.正三角.倒正三角.倒九九乘法表
第3章 顺序结构程序设计 本章要点: 格式化输出函数──printf() 格式输入函数——scanf() 字符输出函数——putchar()
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
If … else 選擇結構 P27.
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Chap 3 分支结构 3.1 简单的猜数游戏 3.2 四则运算 3.3 查询自动售货机中商品的价格.
第四章 C 语言中的输入和输出.
Chap 3 分支结构 3.1 统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格 3.3 分支结构程序设计.
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
第二章 Java语言基础.
計數式重複敘述 for 迴圈 P
第3章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 3.1 格式化输出——printf()函数 3.2 格式化输入——scanf()函数.
第4章 顺序程序设计.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
第4章 PHP流程控制语句.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
C语言概述 第一章.
程式結構&語法.
第3章 變數、算術運算、 數學函數及輸入輸出.
Introduction to the C Programming Language
C语言程序设计 教案 崔武子制作
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
輸出與輸入(I/O).
第六章 Excel的应用 一、Excel的单元格与区域 1、单元格:H8, D7, IV26等 2、区域:H2..D8, HS98:IT77
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
第2章 基本数据及其运算 本章学习的目标: 1、掌握基本数据的各种表示,基本数据常数的书写方法;
3.16 枚举算法及其程序实现 ——数组的作用.
Introduction to the C Programming Language
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
第四章 C 语言中的输入和输出.
隨機數 (亂數) 10後,取餘數 n = rand(); 利用 Code::Block 驗證一下 n = rand() %10; 998
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
第4章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 4.1 格式化输出——printf()函数 4.2 格式化输入——scanf()函数.
第二章 Java基本语法 讲师:复凡.
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 Java基本语法 讲师:复凡.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
任课教师:戴开宇 TA:时均帅、谭肖、王安华 程序设计B班 :20-16:50(90分钟)
顺序结构程序设计 ——关于“字符串”和数值.
考察点:switch\while\for System.in\Scanner char vs int
编译原理实践 6.程序设计语言PL/0.
函式庫補充資料 1.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

C语言实验 第二课

作业1 按“体指数BMI值”对身材进行划分: 体指数t = w / h2 (体重w单位为公斤,身高h单位为米) 编程从键盘输入你的身高h和体重w,根据给定公式计算体指数t,然后判断你的身材属于何种类型。 可用3种方法编程: 算法1:用在if子句中嵌入if 语句的形式编程 算法2:用在else子句中嵌入if 语句的形式编程 算法3:用switch语句的形式编程

作业2 打印九九乘法表

作业3 译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。如,按以下规律将电文变成密码:将字母A变成字母E,a变成e,即变成其后的第四个字母,W变成A,X变成B,Y变成C,Z变成D。非字母不变。 提示:首先提供两个选择编码还是解码。然后从键盘读取需加密或解密的文字,直到遇到回车为止 B C D Z Y W E F A X China! 转变为: Glmre!

需提交的作业 猜数字的小游戏!!!

猜数游戏 需求分析 电脑随机想一个数,四位 用户从键盘输入一个数,系统进行判断 允许用户多次输入,直至猜对或大于十次为止 每一位的取值均在0-9之间。 要求首位可以是0。 要求四位数各不相同。 用户从键盘输入一个数,系统进行判断 用户输入的数可以直接连写0863,也可用空格分隔 如果输入的数数字正确,位置也正确,则记为A。 如果输入的数数字正确,位置不正确,则记为B。 判断的结果以*A*B显示。 允许用户多次输入,直至猜对或大于十次为止

电脑来想 电脑生成随机数的函数 为了每次运行生成不同的随机数序列,使用 每一位取值都在0-9之间 首位可以为0 四个数各不相同 #include <stdlib.h>中的rand( )函数 为了每次运行生成不同的随机数序列,使用 srand(time(NULL))设置随机数种子 每一位取值都在0-9之间 a=rand()%10; 首位可以为0 不能用一个四位的十进制整数来表示。只能用四个一位的十进制数的来表示。 四个数各不相同 b=rand()%10; while(b==a) do {b=rand()%10;} while(b==a); 这里不能有;

我们来猜 用户输入的数可以连写,也可用空格回车或Tab分隔 例如0836或者0 8 6 3均可 例如0836或者0 8 6 3均可 最好不要强迫用户每次只输入 1个数字 ,或者强迫用户以逗号分隔输入。 必须的情况下也应在scanf前使用printf语句给出足够的提示信息。 常见的 scanf("%d%d%d%d",&guess1,&guess2,&guess3,&guess4); scanf("%d,%d,%d,%d",&guess1,&guess2,&guess3,&guess4); scanf("%d%1s%d%1s%d%1s%d%1s",&e,&f,&g,&h); 实际上我们只需要使用下面这条语句即可 scanf("%1d%1d%1d%1d",&guess1,&guess2,&guess3,&guess4);

电脑判断 如果输入的数数字正确,位置也正确,则记为A。 如果输入的数数字正确,位置不正确,则记为B。 判断的结果以*A*B显示。 if(num1==a) num_of_A++; if(num1==b) num_of_B++; if(num1==c) if(num1==d) if(num1==a) num_of_A++; else if(num1==b) num_of_B++; else if(num1==c) else if(num1==d) if (num1==a) num_of_A++; else if(num1== b|| num1== c||num1== d) num_of_B ++; else if (num1=b||c||d) num_of_B++;

多次猜测 允许用户多次输入,直至猜对或大于十次为止 当跳出循环时,需要判断是由于何种原因跳出 使用循环 num_of_A!=4 count<10 while(count<10)&&(num_of_A!=4) while((count<10)&&(num_of_A!=4)) 当跳出循环时,需要判断是由于何种原因跳出 这仅仅是一种解决方案。 while(count<10)循环中,如果猜正确了就使用break提前跳出循环也可以达到一样的效果。

其他问题 1.良好的代码可读性,注释和缩进 2.变量的命名规则 3.调试 4.测试 阅读编译错误提示 双击可对编译错误进行定位 使用printf语句增加额外的输出,便于查找错误 大家一起来抓虫! 4.测试

密码机 选择加密或解密 从键盘读取明文(用于加密)或密文(用于解密) 判断是否字母,是则进行转换 输出加密或解密后的结果 是否继续工作? 使用变量flag 1表示加密,2表示解密 从键盘读入flag的值 从键盘读取明文(用于加密)或密文(用于解密) 一串字符进行转换 字符数组或getchar( )函数 判断是否字母,是则进行转换 (c>='a'&&c<='z')||(c>='A'&&c<='Z') 注意加密时w,x,y,z转换成a,b,c,d;解密时也有类似问题 输出加密或解密后的结果 putchar( ) 是否继续工作?

密码机程序的注意问题 选择加密或解密时,如果用户输入的值既不是1也不是2的处理 getchar( )函数的特殊性:会把输入结束后的回车当成getchar()的输入。 scanf("%d",&flag); putchar(getchar( )+4); 如何解决?

程序示例 if (flag==1) /*用于加密*/ { printf("please enter your plaintext and end with enter:\n"); c=getchar(); while (c!='\n') if((c>='a'&&c<'w') ||(c>='A'&&c<'w')) putchar(c+4); else if ((c>='w'&&c<='z')||(c>='W'&&c<='Z')) putchar(c+4-26); else putchar(c); /*非字符直接输出*/ } putchar('\n');

程序实例 else if (flag==2) { printf("please enter your crypttext and end with enter:\n"); for (c=getchar();c!='\n';c=getchar()) if((c>='e'&&c<'z')||(c>='E'&&c<'Z')) putchar(c-4); else if ((c>='a'&&c<'e')||(c>='a'&&c<'E')) putchar(c-4+26); else putchar(c); putchar('\n'); }

关于代码风格问题 缩进(indent)—保证代码整洁、层次清晰的主要手段 #include<math.h> main() {int i; for (i=2;i<100;i++) {if(isprime(i)) printf("%d\t",i); } } int isprime(int n) {int k,i; k=sqrt((double)n); for (i=2;i<=k;i++) {if(n%i==0) return 0;} return 1; }

关于代码风格问题 良好风格的程序应严格采用梯形层次对应好各层次 #include <math.h> main() { int i; for (i=2; i<100; i++) if (isprime(i)) printf("%d\t",i); } int isprime(int n) { int k, i; k = sqrt((double)n); for (i=2; i<=k; i++) if (n % i == 0) return 0; } return 1;

程序调试

程序中常见的出错原因 编译错误 指在编译过程中发现的错误,通常属于语法错误,即编写的语句不符合C语言的语法规则。 Undefined symbol ‘xxx’ 标识符xxx未定义 Expression syntax error 表达式语法错误 Too few parameter in call 函数调用时的实参少于函数的形参

程序中常见的出错原因 运行错误 指在程序运行时发生的错误 往往是由于语义上的错误造成的,即语句虽然合乎语法,但要求计算机去做不该做或做不到的事情。 例如当用0做除数时

程序中常见的出错原因 逻辑错误 程序中有逻辑错时,不影响程序运行并得到运行结果,只是运行结果不正确。比较隐蔽,出错后不易查找。 累加求和运算时,累加和变量忘记了赋初值; 累乘运算时,累乘变量初值赋值为0; 函数声明时的返回值数据类型与实际返回的数据类型不一致,导致自动类型转换 数组下标越界(即超出了定义的范围); 程序中存在死循环;

调试的基本方法 细心+耐心 注释掉一些代码 利用printf语句 利用调试工具 减少有关的代码区域,调试无误后再将它们取消注释,即采用分而治之的策略将问题局部化 利用printf语句 观看屏幕输出结果 利用调试工具 逐条语句跟踪

常见错误 关系运算符== 错写成赋值运算符= if (a = b) printf("yes"); /*运行结果错误*/ Warning:Possibly incorrect assignment in function main if (a == b) printf("yes"); /*正确*/ = 表示赋值操作 == 表示比较是否相等的操作

常见错误 while后面有分号 for后的表达式2省略 while (n < 100); { …… n++; } 循环体为空语句,导致死循环 for后的表达式2省略 for (n=1; ;n++) /*死循环*/

常见错误 判断字符是大写字符或者小写字符 判断字符是数字字符 ('a' <= ch <= 'z') || ('A' <= ch <= 'Z') (ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z') /*正确*/ 判断字符是数字字符 ‘0’ <= ch <= ‘9’ ch >= '0' && ch <= '9' /*正确*/

常见错误 数据类型由高向低赋值时,进行类型转换后导致信息丢失 double a, b; int sum; sum = a + b; warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data