C 语言大学实用教程 ( 第 版 ) 来完成的, 赋值操作是顺序结构中最常见的操作 但是在 C 语言中, 没有专门的赋值语句, 赋值操作通常是用赋值表达式后接一个分号 (;) 构成赋值表达式语句实现的 例如,c = a + b 只是一个赋值表达式, 而 c = a + b; // 赋值表达式语句则是

Size: px
Start display at page:

Download "C 语言大学实用教程 ( 第 版 ) 来完成的, 赋值操作是顺序结构中最常见的操作 但是在 C 语言中, 没有专门的赋值语句, 赋值操作通常是用赋值表达式后接一个分号 (;) 构成赋值表达式语句实现的 例如,c = a + b 只是一个赋值表达式, 而 c = a + b; // 赋值表达式语句则是"

Transcription

1 第 章键盘输入与屏幕输出 内容关键词 C 语句分类 字符输入 / 输出函数 格式输入 / 输出函数 重点与难点 表达式与表达式语句的区别 scanf() 语句的正确用法 输入 / 输出数据时的格式控制 典型实例 以不同格式输入和输出两个整型数. C 语句分类 () 控制语句 C 语言只有如下 种控制语句 (Control Statement) if~else for()~ continue switch while() ~goto break do~while() return () 变量定义语句 由类型关键字后接变量名 ( 如果有多个变量名, 则用逗号分隔 ) 和分号构成的语句, 如 int a, b, c; 值得注意的是, 变量定义语句不是可执行语句 它只是将某些信息传递给编译器, 通知编译器变量的类型是什么, 以便编译器为其预留出相应大小的存储空间, 因为不同类型的变量在内存中占据不同大小的存储空间 () 表达式语句 由表达式后接一个分号构成的语句 () 函数调用语句 表达式必须是有值的, 而函数调用不一定是有返回值的 在 C 语言中, 没有专门的输入 / 输出语句, 输入 / 输出操作通常是通过调用输入 / 输出函数来实现的 () 复合语句 两条或两条以上的语句序列, 用一对花括号括起来构成的语句 () 空语句 只有一个分号构成的语句, 表示什么也不做. 表达式语句 顺序结构是最简单的程序结构 在顺序结构程序中, 程序的执行是按照语句书写的顺序

2 C 语言大学实用教程 ( 第 版 ) 来完成的, 赋值操作是顺序结构中最常见的操作 但是在 C 语言中, 没有专门的赋值语句, 赋值操作通常是用赋值表达式后接一个分号 (;) 构成赋值表达式语句实现的 例如,c = a + b 只是一个赋值表达式, 而 c = a + b; // 赋值表达式语句则是一个表达式语句 表达式语句与表达式在概念上是完全不同的. 复合语句和空语句. 复合语句 两条或两条以上的语句序列, 用一对花括号括起来构成的语句, 称为复合语句 (Compound Statement), 也称为语句块 (Block) 其一般形式为: 语句 语句 语句 n 例如, 下面的复合语句 : temp = x; x = y; y = temp; 在逻辑上形成一个整体, 在语法上等同于一条语句, 可被当作一条语句来处理, 这样就为程序设计带来了方便 在放置单条语句的任何地方都可以放置一条复合语句 通常, 将一组逻辑相关的语句组放在一起构成一条复合语句 例如, 第 章要介绍的条件和循环语句在语法上只允许带一条语句, 而要处理的操作往往需要多条语句才能完成, 这时采用复合语句就可以解决这个问题 编程提示 在复合语句中定义的变量只能在复合语句中使用 例. 这个程序用于演示复合语句中定义的变量只能在复合语句中使用 0 int a = 0; int a = ; printf("in: a = %d\n", a); printf("out: a = %d\n", a); 程序的运行结果如下 :

3 第 章键盘输入与屏幕输出 In: a = Out: a = 0 在这个程序中, 虽然复合语句里面的变量 a 和外面的变量 a 是同名的, 但它们代表不同的变量 在复合语句里面定义的变量 a, 只能在里面引用, 而在复合语句外面定义的变量 a, 则只能在外面引用, 从输出结果即可看出这一点. 空语句 在表达式语句中, 如果没有任何表达式而只有一个分号, 则称为空语句 (Null Statement) 空语句的形式如下 : ; // 空语句 空语句什么也不做, 只表示语句的存在 既然如此, 那么空语句还有什么作用呢? 采用自顶向下 (Top-down) 的方法 ( 参见第 章. 节 ) 设计程序时, 在一些未设计完成的模块中, 通常都暂时放一条空语句, 留待以后对模块实现时再进行扩充 例如 : DataInitialize(); // 调用用户自定义函数 /*...*/ DataOutput(); // 调用用户自定义函数 void DataInitialize() // 定义用户自定义函数 ; // 空语句 void DataOutput() // 定义用户自定义函数 ; // 空语句. 基本的输入 / 输出操作 C 语言中没有提供专门的输入 / 输出语句, 输入 / 输出操作是通过调用 C 的标准库函数来实现的 C 的标准函数库中提供许多用于标准输入 / 输出操作的库函数, 使用这些标准输入 / 输出函数时, 只要在程序的开始位置加上如下一行编译预处理命令即可 : 它的作用是 : 将输入 / 输出函数的头文件 stdio.h 包含到用户源文件中 其中,h 为 head 之意,std 为 standard 之意,i 为 input 之意,o 为 output 之意 本章只涉及 ANSI C 标准定义的输入 / 输出函数 由于各种机器间的差异太大, 因此 ANSI C 没有定义实现各种屏幕控制 ( 如鼠标定位 ) 或图形显示的函数, 多数 C 编译程序都在标准 C 的基础上增加了自己的显示和图形库函数, 当然, 这些函数只能运行于特定的编译环境.. 字符输入 / 输出 getchar() 和 putchar() 是专门用于字符输入 / 输出的函数 其中,getchar() 用于从键盘读一个

4 0 C 语言大学实用教程 ( 第 版 ) 字符, 它等待击键, 待用户击键后, 将读入值返回, 并自动将用户击键结果回显到屏幕上 ; putchar() 则把字符写到屏幕的当前光标位置 这两个函数的使用格式如下 : 变量 = getchar(); putchar( 变量 ); 例. 下面这个程序用于演示如何使用函数 getchar() 和 putchar() 0 char ch; printf("press a key and then press Enter:"); ch = getchar(); // 从键盘输入一个字符, 并将该字符存入变量 ch printf("you pressed "); putchar(ch); // 在屏幕上显示变量 ch 中的字符 putchar('\n'); // 输出一个回车换行符 程序首先执行第 行可执行语句, 这时会在屏幕上显示如下提示信息 : Press a key and then press Enter: 然后执行第 行可执行语句, 程序等待用户从键盘输入一个字符, 例如用户从键盘输入一个字符 A, 并按一下回车键 ( 以下用 表示用户输入一个回车键 ), 那么程序继续向下执行第 行语句, 在屏幕上显示如下信息 : You pressed 接着执行第 行语句, 在 You pressed 的后面再显示一个字符 A, 即 You pressed A 最后执行第 行语句, 目的是将光标移到下一行的起始位置 假如将第 ~ 行的语句复制并粘贴到第 行以后, 那么程序的运行结果如下 : Press a key and then press Enter: A You pressed A Press a key and then press Enter: B You pressed B 而此时, 如果删掉第 行语句, 那么程序的运行结果如下 : Press a key and then press Enter: A You pressed A Press a key and then press Enter: A You pressed A 从这个例子可以得出以下三点结论 函数 putchar() 的作用是向终端显示器屏幕输出一个字符 这个字符可以是可打印字符, 也可以是转义序列, 函数 putchar() 的参数就是待输出的字符 函数 getchar() 的作用是从系统隐含指定的输入设备 ( 即终端键盘 ) 输入一个字符, 按回车键表示输入结束 函数 getchar() 没有参数, 函数的返回值就是从终端键盘读入的字符 输出 '\n' 的作用是将光标移到下一行的起始位置处

5 第 章键盘输入与屏幕输出.. 格式输入 / 输出 例. 以整型格式输入一个变量的值, 然后以整型格式输出这个变量的值 int var; printf("please enter a number and then press Enter:"); scanf("%d", &var); printf("the number you entered was %d\n", var); 在这个程序中, 用到了一个格式输入函数 scanf() 和一个格式输出函数 printf() 函数 scanf() 的作用是按指定格式要求和数据类型, 读入若干数据给相应的变量, 而函数 printf() 的作用是输出一行字符串, 或者按指定格式和数据类型输出若干变量的值 程序运行时, 首先执行第 行语句, 向屏幕输出如下一行字符串 : Please enter a number and then press Enter: 输出这行字符串的目的是给用户显示一个提示信息, 提示用户做什么和如何做 输出这行提示信息后, 程序开始执行第 行语句, 函数 scanf() 的第一个参数为格式控制字符串 "%d", 输入数据的格式和类型一般都在控制字符串中指定 本例中, 格式控制字符串中的 %d 指定输入数据为整型, 当程序执行到该函数调用语句时, 程序将一直等待直到用户从键盘输入一个整型数据且按回车键为止 假设用户输入了整型数据, 那么 将被送给变量 var 存储 注意, 第 行语句中的变量 var 前的运算符 & 为取地址运算符,&var 表示取变量 var 的地址, 在第 行语句中,&var 指出输入数据将要存入的内存地址, 正如寄信需要写上邮寄地址一样, 函数 scanf() 要求在其参数中指定输入数据的存储地址 当程序执行到第 行语句时, 除显示字符串 "The number you entered was" 以外, 还会在其后显示整型变量 var 的值 与函数 scanf() 类似, 函数 printf() 中也有一个格式控制字符串, 其中的 %d 是指定按十进制整型格式输出变量 var 的值 根据以上分析可知, 例. 程序的运行结果应为 : Please enter a number and then press Enter: The number you entered was 若要输入 / 输出实型数据, 则将格式转换说明 %d 改成 %f 即可 请看下例 例. 上机运行本例的程序, 根据程序提示输入数据, 然后观察并写出程序运行结果 float var; printf("please enter a number and then press Enter:"); scanf("%f", &var); printf("the number you entered was %f\n", var);

6 C 语言大学实用教程 ( 第 版 ) 仿照例. 分析可知, 该程序的运行结果如下 : Please enter a number and then press Enter:. The number you entered was 这里, 按 %f 格式输出实型数据时, 除非特别指定, 否则隐含输出 位小数 除 %d 和 %f 这两种常用的格式转换说明外, 还有其他格式转换说明 下面对 scanf() 和 printf() 这两个函数的用法进行归纳总结. 函数 printf() 的一般格式 printf( 格式控制字符串 ); printf( 格式控制字符串, 输出值参数表 ); 格式控制字符串 (Format Control String) 是用双引号括起来的字符串, 也简称为格式字符串 (Format String), 输出值参数表中可有多个输出值, 也可没有 ( 当只输出一个字符串时 ) 一般, 格式控制字符串包括两部分 : 如表 - 所示的格式转换说明符 (Conversion Specifiers) 和需原样输出的普通的文本字符 (Literal characters) 表 - 函数 printf() 的格式转换说明符 格式转换说明符 用 法 %d 或 %i 输出带符号的十进制整数, 正数的符号省略 %u 以无符号的十进制整数形式输出 %o 以无符号的八进制整数形式输出, 不输出前导符 0 %x 以无符号十六进制整数形式 ( 小写 ) 输出, 不输出前导符 0x %X 以无符号十六进制整数形式 ( 大写 ) 输出, 不输出前导符 0x %c 输出一个字符 %s 输出字符串 %f 以十进制小数形式输出实数 ( 包括单 双精度 ), 整数部分全部输出, 隐含输出 位小数, 输出的数字并 非全部是有效数字, 单精度实数的有效位数一般为 位, 双精度实数的有效位数一般为 位 %e 以指数形式 ( 小写 e 表示指数部分 ) 输出实数, 要求小数点前必须有且仅有 位非零数字 %E 以指数形式 ( 大写 E 表示指数部分 ) 输出实数 %g 根据数据的绝对值大小, 自动选取 f 或 e 格式中输出宽度较小的一种使用, 且不输出无意义的 0 %G 根据数据的绝对值大小, 自动选取 f 或 E 格式中输出宽度较小的一种使用, 且不输出无意义的 0 %p 以主机的格式显示指针, 即变量的地址 令 printf() 把自己到 %n 位置已经输出的字符总数放到后面相应的输出项所指向的整型变量中,printf() 函数 %n 返回后,%n 对应的输出项指向的变量中存放的整型值为出现 %n 时已经由 printf() 函数输出的字符总数, %n 对应的输出项是记录该字符总数的整型变量的地址 %% 显示百分号 % 格式控制字符串描述了输出格式 在一个格式控制字符串中可以有多个转换说明 输出值参数表逐个对应格式控制字符串中的每个转换说明 每个格式转换说明 (Conversion Specification) 都以一个 % 开始 以一个格式字符作为结束, 用于指定各输出值参数的输出格式

7 第 章键盘输入与屏幕输出 输出值参数表是需要输出的数据项的列表, 这些输出数据项可以是变量或表达式, 输出值参数之间用逗号分隔 输出值的数据类型应与格式转换说明符相匹配 每个格式转换说明符和输出值参数表中的输出值参数是一一对应的, 如果没有输出值参数, 那么格式控制字符串中就不再需要格式转换说明符了 例. 下面这个程序用于演示格式转换说明符 %f %e 和 %g 的用法 0 double f =.e+0; double f =.; printf("%%f: %f\n", f); printf("%%e: %e\n", f); printf("%%g: %g\n", f); printf("%%f: %f\n", f); printf("%%e: %e\n", f); printf("%%g: %g\n", f); 在 Visual C++.0 环境下, 程序的运行结果如下 : %f: %e:.e+00 %g:.e+00 %f:.0000 %e:.0000e+000 %g:. 在这个例子中, 为了输出 % 号, 用了连续两个 % 来输出 % 号, 因此 %% 后面的字符不再是格式字符, 而是作为普通字符原样输出到屏幕上 对于实数.e+0, 使用 %e 时输出的宽度较小, 而对于实数., 使用 %f 时输出的宽度较小 所有浮点数转换说明符的默认精度都是 转换说明符%f %e 或 %E 的输出精度是指小数点后的小数位数, 而转换说明符 %g 或 %G 的输出精度是指包含小数点左边数字在内的有效数字的最大个数 例如.e+0 用转换说明符 %g 输出的结果是.e+00, 输出结果中有 个有效数字 而用转换说明符 %e 输出的结果是.e+00, 输出结果中有 个有效数字, 小数位数是 需要注意的是, 转换说明符 %E %e 和 %g 会在输出时对数据进行舍入处理, 而转换说明符 %f 则不会 所以, 输出数据时, 一定要确保用户知道, 格式化处理使得输出的数据有可能是不精确的 此外, 采用某些编译器时, 浮点数输出结果的指数部分的 + 号后边只显示两位数字 例. 这个程序分别用 %p %x 和 %X 三种格式符输出一个整型变量的地址值

8 C 语言大学实用教程 ( 第 版 ) int var = ; printf("%%p: %p\n", &var); printf("%%x: %x\n", &var); printf("%%x: %X\n", &var); 在 Visual C++.0 下, 程序的运行结果如下 : %p: 00FFC %x: ffc %X: FFC 注意, 这个程序在不同的操作系统和编译环境下的运行结果可能是不同的 不过, 可以确定的是, 在 位系统环境下, 地址值是一个 位数. 函数 scanf() 的一般格式 scanf( 格式控制字符串, 参数地址表 ); 其中, 格式控制字符串是用双引号括起来的字符串, 它包括格式转换说明符和分隔符两部分 函数 scanf() 的格式转换说明符通常由 % 开始并以一个格式字符结束, 用于指定各参数的输入格式, 具体如表 - 所示 表 - 函数 scanf( ) 的格式转换说明符 格式转换说明符 用 法 %d 或 %i 输入十进制整数 %o 输入八进制整数 %x 输入十六进制整数 %c 输入一个字符, 空白字符 ( 包括空格 回车 制表符 ) 也作为有效字符输入 %s 输入字符串, 遇到第一个空白字符 ( 包括空格 回车 制表符 ) 时结束 %f 或 %e 输入实数, 以小数或指数形式输入均可 %% 输入一个百分号 % 参数地址表是由若干变量的地址组成的列表, 这些参数之间用逗号分隔 函数 scanf() 要求必须指定用来接收数据的变量的地址, 每个转换说明符都对应一个存储数据的目标地址 如果没有指定存储数据的目标地址, 虽然编译器不会提示出错信息, 但会导致数据无法正确地读入指定的内存单元中 当函数 scanf() 成功调用时, 返回值为成功赋值的数据项数 ; 出错时, 则返回 EOF(EOF 是 End Of File 的缩写词, 表示文件结尾, 它是一个在头文件 <stdio.h> 中定义的整数型的符号常量,C 标准只是将 EOF 定义成一个负整数, 通常被定义为 -, 但并不一定是 - 因此在不同的系统中,EOF 可能取不同的值 ). 函数 printf() 中的格式修饰符在函数 printf() 的格式说明中, 在 % 和格式符之间的位置, 还可插入如表 - 所示的格式修饰符, 用于指定输出数据的最小域宽 (Field Width) 精度(Precision) 对齐方式等

9 第 章键盘输入与屏幕输出 表 - 函数 printf( ) 的格式修饰符 格式修饰符用法 英文字母 l 英文字母 L 英文字母 h 最小域宽 m ( 整数 ) 显示精度.n ( 大于等于 0 的整数 ) * 空格 加在格式符 d i o x u 之前用于输出 long 型数据加在格式符 f e g 之前用于输出 long double 型数据加在格式符 d i o x 之前用于输出 short 型数据指定输出项输出时所占的列数当 m 为正整数时, 若输出数据宽度小于 m, 则在域内向右靠齐, 左边多余位补空格 ; 当输出数据宽度大于 m 时, 按实际宽度全部输出 ; 若 m 有前导符 0, 则左边多余位补 0 若 m 为负整数, 则输出数据在域内向左靠齐精度修饰符位于最小域宽修饰符之后, 由一个圆点及其后的整数构成对于浮点数, 用于指定输出的浮点数的小数位数对于字符串, 用于指定从字符串左侧开始截取的子串字符个数当最小域宽 m 和显示精度.n 用 * 代替时, 表示它们的值不是常数, 而由 printf() 函数的输出项按顺序依次指定在没有输出加号的正数前面输出一个空格 在正数前面输出一个加号, 在负数前面输出一个减号 这样可以对齐输出具有相同数字位 +( 加号 ) 数的正数和负数 0( 零 ) 在输出的数据前面加上前导符 0, 以填满域宽当使用八进制转换说明符 o 时, 在输出数据前面加上前导符 0 当使用十六进制转换说明符 x 或 X 时, 在输出数据前面加上前导符 0x 或 0X # 当以转换说明符 e E f g 或 G 输出的浮点数没有小数部分时, 强制输出一个小数点 ( 通常, 只有小数点后有数字时才会输出小数点 ) 对于 g 或 G 转换说明符, 末尾的 0 不会被删除注 : 用 Visual C++ 在汇编级跟踪可知, 调用函数 printf() 时,float 型的参数都是先转化为 double 型后再传递的, 所以 %f 可以输出 double 和 float 两种类型的数据, 或者说, 输出 double 型数据可以使用 %lf 或 %f 例. 上机运行下面的程序, 然后写出运行结果 0 float f = 00., f =., f =.; int n =, n =, n = ; printf("printf WITHOUT width or precision specifications:\n"); printf("%f\n%f\n%f\n", f, f, f); printf("%d\n%d\n%d\n", n, n, n); printf("printf WITH width and precision specifications:\n"); printf("%.f\n%.f\n%.0f\n", f, f, f); printf("%d\n%d\n%d\n\n", n, n, n); 程序的运行结果如下 : printf WITHOUT width or precision specifications:

10 C 语言大学实用教程 ( 第 版 ) printf WITH width and precision specifications: 00.. 这说明, 当按照指定的精度打印浮点数时, 打印的数值将是小数部分舍入 (Rounded) 到指定的小数点后位数的结果, 而存储在内存中的浮点数值是不变的 还可以通过格式控制字符串后面的实参列表中的整型表达式来指定域宽和精度 方法是 : 在格式控制字符串中域宽或精度的位置上写上一个星号 * 这时, 程序先计算实参列表中对应的整型表达式的值, 然后用其替换星号 例如, 下面这条语句 : printf("%*.*f",,, 00. ); 将以 为域宽, 为精度, 输出右对齐的 00.. 函数 scanf() 中的格式修饰符 在函数 scanf() 的 % 与格式符之间也可插入如表 - 所示的格式修饰符 表 - 函数 scanf() 的格式修饰符 格式修饰符用法 英文字母 l 英文字母 L 英文字母 h 域宽 m( 正整数 ) 忽略输入修饰符 * 加在格式符 d i o x u 之前用于输入 long 型数据 ; 加在格式符 f e 之前用于输入 double 型数据加在格式符 f e 之前用于输入 long double 型数据加在格式符 d i o x 之前用于输入 short 型数据指定输入数据的宽度 ( 列数 ), 系统自动按此宽度截取所需数据表示对应的输入项在读入后不赋给相应的变量, 即让 scanf() 函数从输入流中读取任意类型的数据并将其丢弃, 而不是将其赋值给一个变量, 因此也称为赋值抑制字符 (Assignment suppression character) 注 : 函数 scanf() 没有显示精度.n 格式修饰符, 即用函数 scanf() 输入实型数据时不能指定显示精度 常见错误 在输入函数 scanf() 的格式控制字符串的转换说明符中指定显示精度是错误的, 只有在输出函数 printf() 的格式转换说明符中才能够指定显示精度 例. 上机运行下面的程序, 然后写出运行结果 int a, b; printf("please input a and b:"); scanf("%d%*d%d", &a, &b); printf("a=%d, b=%d, a+b = %d\n", a, b, a+b);

11 第 章键盘输入与屏幕输出 在程序第 行语句中, 格式说明符 %*d 中的 * 为忽略输入修饰符, 表示对应该格式说明符的输入项在读入后不赋给任何变量,%d 中的 为域宽附加格式说明, 表示从输入数据中按指定宽度 来截取所需数据 因此, 当输入 时, 该程序的运行结果如下 : Please input a and b: a=, b=, a+b = 若将第 行语句中的 %*d 修改为 %*s, 并且仍输入, 则程序的运行结果仍为 : Please input a and b: a=, b=, a+b = 读者不难分析, 当输入 时, 程序的输出结果仍为 : a=, b=, a+b = 注意, 在用函数 scanf() 输入非字符型数据时, 以下几种情况都认为数据输入已结束 : 输入空格符 回车符 制表符 (Tab) 达到指定域宽 输入非数字字符 例如, 例. 程序运行时, 如果输入 a, 则程序运行结果如下 : Please input a and b: a a=, b=, a+b = 其中, 在从输入数据中按指定宽度 来读取第 个数据时遇到非法输入字符 a, 于是第 个输入的数据为 *.. 使用函数 scanf() 时需要注意的问题. 函数 scanf() 对输入数据的格式要求 用 scanf() 输入数据时, 除格式控制字符串中格式说明以外的其他字符, 都必须原样输入 例. 阅读下面程序, 并回答问题 int a, b; scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b); 问题 当要求程序输出结果为 a =,b =, 用户应该如何输入数据? 问题 当限定用户输入数据以逗号为分隔符, 即输入数据格式为 :, 时, 应修改程序中的哪条语句? 怎样修改? 问题 当程序第 行语句修改为如下语句时, 用户应该如何输入数据? scanf("a = %d, b = %d", &a, &b); 问题 当限定用户输入数据为以下格式 : 同时要求程序输出结果为 a =,b = 时, 应修改程序中的哪条语句? 怎样修改?

12 C 语言大学实用教程 ( 第 版 ) 问题 当限定用户输入数据为以下格式 : 同时要求程序输出结果为 a = "", b = "" 时, 应修改程序中的哪条语句? 怎样修改? 问题 设计程序使得用户可以用任意字符作为分隔符进行数据的输入, 对于这样的要求, 应该如何修改程序? 下面让我们来逐一解答上述问题 问题 解答因为程序第 行语句中的两个格式转换说明符 %d 之间是空格符, 这个空格符作为普通字符必须在输入时原样输入, 即输入数据之间应以空格作为分隔符 所以, 当要求程序输出结果为 a =, b = 时, 用户应该按以下格式输入数据 : 问题 解答, 时, 显然, 应该将第 行语句修改为 当限定用户输入数据以逗号为分隔符, 即输入数据格式为 scanf("%d, %d", &a, &b); 该语句要求输入数据之间必须以逗号分隔, 否则将无法正确输入数据 问题 解答当程序第 行语句修改为如下语句 : scanf("a = %d, b = %d", &a, &b); 时, 用户应在数据输入时将字符串 "a = " 和 "b = " 原样输入, 即按以下格式输入数据 : a =, b = 问题 解答当限定用户输入数据为以下格式 : 同时要求程序输出结果为 a =, b = 时, 应将程序第 行语句修改为 scanf("%d%d", &a, &b); 这样在输入数据时, 可以自动按照指定宽度从输入的数据中截取所需数据 问题 解答当限定用户输入数据为以下格式 : 同时要求程序输出结果为 a = "", b = "" 时, 应修改程序为 : int a, b; scanf("%d%d", &a, &b); printf("a = \"%d\", b = \"%d\"\n", a, b); 这里, 函数 printf() 格式控制字符串中的字符 ' \" ' 是转义序列, 代表双引号字符 这是因为, 双引号已经被用作表示字符串的定界符, 这样就导致双引号不能被打印出来, 所以为了打印双引号, 就需要将其放到转义字符的后面构成转义序列, 以这种方式来打印双引号 问题 解答在要求以任意字符作为分隔符进行数据输入时, 使用忽略输入修饰符可给用户带来方便

13 第 章键盘输入与屏幕输出 int a, b; scanf("%d%*c%d", &a, &b); printf("a = %d, b = %d\n", a, b); 请读者上机分别按如下几种数据输入格式进行数据的输入, 并观察屏幕显示结果, 检验程序能否都打印出 a =, b = 的结果 格式 以回车符作为数据分隔符 : 格式 以空格符作为数据分隔符 : 格式 以逗号作为数据分隔符 :, 格式 以制表符作为数据分隔符 : 格式 以字符 - 作为数据分隔符 : -.%c 格式符在应用中存在的问题及其解决方法 例.0 按下述格式, 从键盘输入一个整数加法表达式 : 操作数 + 操作数 然后计算并输出表达式的计算结果, 形式如下 : 操作数 + 操作数 = 计算结果 编写程序如下 : 0 int data, data; char op; printf("please enter the expression data + data\n"); scanf("%d%c%d",&data, &op, &data); printf("%d%c%d = %d\n", data, op, data, data+data); 从键盘先后输入 空格 + 空格和 后的程序运行结果如下 : Please enter the expression data + data + = 这个程序的运行结果显然不对, 这是为什么呢?

14 0 C 语言大学实用教程 ( 第 版 ) 发生这种错误的原因显然是因为数据没有被正确读入, 先来看我们是如何输入数据的吧 当程序提示输入数据时, 首先输入一个整型数, 紧接着输入一个空格字符, 然后输入字符 '+', 紧接着再输入一个空格字符, 最后输入整型数 当输入数据 时, 被函数 scanf() 用 d 格式符正确地读给变量 data 然而, 其后输入的空格字符却被函数 scanf() 用 c 格式符读给了变量 op, 当然,data 也因此无法得到整型值 我们只要做个简单的测试, 即重新修改输入格式, 就可以验证我们的上述分析结果 下面是程序两次运行的结果 : 第 次测试 ( 先后输入 空格和 ) 的结果 : Please enter the expression data + data = 第 次测试 ( 先后输入 + 和 ) 的结果 : Please enter the expression data + data + + = 在第 次测试中, 输入的 空格符 分别被读给整型变量 data 字符型变量 op 整型变量 data 而在第 次测试中, 输入的 字符'+' 分别被读给整型变量 data 字符型变量 op 整型变量 data 这说明在用%c 格式符读入字符时, 空格字符和转义序列 ( 包括回车和制表符 ) 都会作为有效字符输入, 这是使用函数 scanf() 时特别需要注意的一点 例. 编程从键盘先后输入整型 字符型和实型数据, 要求每输入一个数据就显示一个数据的类型和数据值 0 int a; char b; float c; printf("please input an integer:"); scanf("%d", &a); printf("integer: %d\n", a); printf("please input a character:"); scanf("%c", &b); printf("character: %c\n", b); printf("please input a float number:"); scanf("%f", &c); printf("float: %f\n", c); 程序的运行结果如下 : Please input an integer: integer: Please input a character: character: Please input a float number:.

15 第 章键盘输入与屏幕输出 float: 显然, 这个程序和例.0 一样, 问题也是出在 %c 格式符上面, 输入 以后按的回车键被当作有效字符读给字符型变量 b 了 解决这个问题有如下两种方法 方法 用函数 getchar() 将前面数据输入时存于缓冲区中的回车符读入, 避免被后面的字符型变量作为有效字符读入 0 char a, b, c; printf("please input c:"); scanf("%c", &c); getchar();// 将存于缓冲区中的回车符读入, 避免被后面的变量作为有效字符读入 printf("please input b:"); scanf("%c", &b); getchar();// 将存于缓冲区中的回车符读入, 避免被后面的变量作为有效字符读入 printf("please input a:"); scanf("%c", &a); getchar();// 将存于缓冲区中的回车符读入, 避免被后面的变量作为有效字符读入 printf("c=%c,b=%c,a=%c\n", c, b, a); printf("ascii: c:%d,b:%d,a:%d\n", c, b, a); 方法 在 %c 前面加一个空格, 将前面数据输入时存于缓冲区中的回车符读入, 避免被后面的字符型变量作为有效字符读入 就程序可读性而言, 这个方法更好一些 0 char a, b, c; printf("please input c:"); scanf("%c", &c); printf("please input b:"); scanf(" %c", &b); // 在 %c 前面加一个空格, 将存于缓冲区中的回车符读入 printf("please input a:"); scanf(" %c", &a); // 在 %c 前面加一个空格, 将存于缓冲区中的回车符读入 printf("c=%c,b=%c,a=%c\n", c, b, a); printf("ascii: c:%d,b:%d,a:%d\n", c, b, a); 程序的运行结果如下 : Please input c: a Please input b: b Please input a: c

16 C 语言大学实用教程 ( 第 版 ) c=a, b=b, a=c ASCII: c:, b:, a: 按上述方法修改例.0 的程序, 即在 %c 前面加一个空格, 那么无论以如下哪种方式输入加法算式, 都能得到正确的结果 : + 或者 +. 对输入非数字字符的检查与错误处理 由于 scanf() 不进行参数类型匹配检查, 因此, 当输入数据类型与格式字符不匹配时, 编译器不提示出错信息, 但会导致程序不能正确读入数据 即使输入数据类型与格式字符相符, 也无法保证用户输入的数据都是合法的数据, 一旦输入非法数据, 也会导致数据不能正确读入 来看下面的程序 例. 输入两个整型数, 并输出 0 int a, b; printf("input a:"); scanf("%d", &a); printf("a = %d\n", a); printf("input b:"); scanf("%d", &b); printf("b = %d\n", b); 第 次测试的运行结果如下 : Input a:. a = Input b:b = 第 次测试的运行结果如下 : Input a:q a = Input b:b = 在第 次测试时, 用户输入的是., 但是第 个 scanf() 函数调用语句只读入了整数, 后面的圆点被视为非数字字符导致输入结束 由于这个非数字字符仍然保存在输入缓冲区中, 因此第 个 scanf() 函数调用语句从输入缓冲区中读到的数据仍然是这个非数字字符, 所以没等用户输入数据, 就打印出了变量 b 中的随机值, 和没有执行第 行语句的效果是一样的 在第 次测试时, 由于用户输入的是非数字字符 'q', 而且它一直保存在输入缓冲区中, 因此第 行和第 行的两个 scanf() 都试图读取这个数据, 然而都没有正确读入数据, 相当于变量 a 和 b 没有被赋值, 其值是随机不确定的, 故打印结果都是随机值 因为我们无法对用户的实际输入进行控制, 所以我们无法保证不会出现各种奇葩的输

17 第 章键盘输入与屏幕输出 入 怎样解决这个问题呢? 可以考虑用检验函数 scanf() 调用返回值的方法 虽然前面在使用函数 scanf() 时, 我们并没有使用它的返回值, 但事实上, 函数 scanf() 也是有返回值的 如果函数 scanf() 调用成功 ( 能正常读入输入数据 ), 则其返回值为已成功读入的数据项数 通常非数字字符的输入会导致数据不能成功读入, 例如, 要求输入的数据是数值型数据, 而用户输入的是字符, 字符相对于数值型数据而言就是非数字字符, 但是反之不然, 因为数值型数据可被当作有效字符读入 如果函数 scanf() 调用失败, 则返回 EOF( 如前所述,EOF 是一个在头文件 <stdio.h> 中定义的整数型的符号常量, 通常被定义为 -, 但并不一定是 -, 在不同的系统中可能取不同的值 ) 通常在无数据可读时才会发生这种情况, 例如, 当标准输入被重定向到一个输入文件时, 程序执行函数 scanf() 调用就是从该文件中读入数据, 当读到文件尾没有数据可读时, 函数 scanf() 调用就会失败 如果用户按 F 键强制输入结束, 此时测试函数 scanf() 的返回值也是 EOF 在 C 语言中,0 和 - 是最常用到的函数调用失败后的返回值 注意, 函数 scanf() 的返回值是在遇到非数字字符之前已成功读入的数据项数, 不一定为 -, 也不一定为 0 因此, 不能靠检查函数 scanf() 的返回值是否为 - 或 0 来判断是否所有数据都已正确读入, 应该检查函数 scanf() 的返回值是否为应该读入的数据项数 考虑到以上 scanf() 函数返回值的特点, 我们可以这样来解决这个问题, 即判断函数 scanf() 的返回值是否为应该读入的数据项数 如果不是, 则清除输入缓冲区中的内容, 然后提示用户重新输入数据直到输入正确为止 由于后面这个错误处理操作要用到循环语句, 循环语句将在第 章中介绍, 因此在下面的程序中, 我们做了简单处理, 只给出了输入错误的提示信息 0 int a, b, ret; printf("input a and b:"); ret = scanf("%d%d", &a, &b); if (ret!= ) // 包括各种输入错误, 如格式错误, 输入非数字字符, 无数据可读等 printf("input error!\n"); else // 此处可以是正确读入数据后应该执行的操作 printf("a = %d, b = %d\n", a, b); fflush(stdin);// 清除输入缓冲区中的错误数据 在 Visual C++.0 环境下, 第 次测试的运行结果如下 : Input a and b:. Input error! 第 次测试的运行结果如下 : Input a and b:.

18 C 语言大学实用教程 ( 第 版 ) a =, b = 在第 次程序测试时, 即输入. 和 时, 由于程序第 行语句要求输入整型数据, 因此. 后面的小数点被作为非数字字符看待, 使得程序只读入了 个整型数, 第 个整型数未能读取成功, 此时函数 scanf() 的返回值为, 因此执行第 行语句显示输入错误提示信息 在第 次程序测试时, 由于先输入, 后输入., 因此, 程序将 读入赋值给 a, 读入 赋值给 b, 尽管. 后面的小数点仍被作为非数字字符看待, 但是它只起到了结束输入的作用, 此时函数 scanf() 的返回值为, 所以, 程序执行第 行语句, 显示变量 a 和 b 的值 那么第 行语句的作用是什么呢? 为了确保保留在输入缓冲区中的非数字字符不会影响其后的数据输入, 程序第 行调用函数 fflush() 来清除输入缓冲区中的内容 编程提示 由于 ANSI C 只规定函数 fflush() 处理输出数据流 确保输出缓冲区中的内容写入文件, 并未对清理输入缓冲区做出任何规定, 只是部分编译器 ( 如 Visual C++) 增加了此项功能, 因此使用函数 fflush() 来清除输入缓冲区中的内容, 可能会带来移植性问题 从这个例子我们还可以看出, 由于函数 scanf() 不做参数类型匹配检查, 因此通过检验函数 scanf() 返回值的方法试图发现某些输入数据类型不匹配错误仍然是无效的 例如, 本例中要求输入的数据是整型, 而输入的数据是实型, 那么实数的小数点前面的数字被当作整型数据读入, 而后面的小数点则被当作非数字字符处理. 本章小结 本章介绍了 C 语言的表达式语句的特点及常用标准输入 / 输出函数的使用方法, 函数 getchar() 和 putchar() 用于字符输入 / 输出操作, 而函数 scanf() 和 printf() 则用于格式输入 / 输出操作, 可以控制按各种格式进行任意类型数据的读 / 写操作 最后, 在.. 节中着重介绍了 scanf() 函数在使用中容易出现的问题及其解决方法 本章常见的编程错误如表 - 所示 表 - 本章常见编程错误列表 错误描述函数名拼写错误 例如, 将 printf() 误写为 print() 或 Printf(), 因为 C 语言编译器只在目标程序中为库函数调用留出空间, 并不能识别函数名中的拼写错误, 更不知道库函数在何处, 寻找库函数并将其插入到目标程序中是链接程序负责的工作, 因此这种错误仅在链接时才能被发现将变量定义语句放在可执行语句后面忘记给函数 printf() 或 scanf() 中的格式控制字符串加上双引号将格式控制字符串和表达式之间的逗号写到了格式控制字符串内忘记给函数 scanf() 中的变量加上取地址运算符 & 函数 printf() 欲输出一个表达式的值, 但格式控制字符串中没有与其对应的格式字符函数 printf() 中欲输出一个表达式的值, 但输出列表中没有与格式字符相对应的表达式 scanf() 或 printf() 的格式控制字符串中的格式字符与要输入 / 输出的数值类型不一致用户从键盘输入的数据格式与函数 scanf() 中格式控制字符串要求的格式不一致 例如, 相邻数据项之间应该用逗号分隔, 但是用户没有输入逗号, 或者不应该用逗号分隔但是用户输入了逗号函数 scanf() 格式控制字符串中含有 '\n' 等转义序列, 导致数据输入不能按正常方式终止用函数 scanf() 输入实型数据时, 在格式控制字符串中规定了要输入的实型数据的精度 错误类型链接错误编译错误编译错误编译错误运行时错误运行时错误运行时错误运行时错误运行时错误运行时错误运行时错误

Microsoft PowerPoint - 01_Introduction.ppt

Microsoft PowerPoint - 01_Introduction.ppt Hello, World C 程序设计语言 第 1 章章观其大略 孙志岗 sun@hit.edu.cn http://sunner.cn prf("hello,, world\n"); 超级无敌考考你 : 如何把 hello 和 world 分别打印在两行? 2004-12-19 A Tutorial Introduction 2 hello.c 打印华氏温度与摄氏温度对照表 计算公式 : C=(5/9)(

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

林子雨《C语言程序设计》讲义PPT

林子雨《C语言程序设计》讲义PPT C 语言程序设计 厦门大学计算机科学系 2012-02-26 林子雨 ziyulin@xmu.edu.cn 2012-02-26 厦门大学非计算机专业本科生公共课 (2011-2012 第 2 学期 ) C 语言程序设计 林子雨厦门大学计算机科学系 E-mail: ziyulin@xmu.edu.cn 个人主页 :http://www.cs.xmu.edu.cn/linziyu 课程提要 第一章绪论

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

<4D F736F F D205A572D2D A1AAA1AAD4ACE7F42D43D3EFD1D4CAB5D1B5BDCCB3CC2E646F6378>

<4D F736F F D205A572D2D A1AAA1AAD4ACE7F42D43D3EFD1D4CAB5D1B5BDCCB3CC2E646F6378> 第 1 部分 Visual Studio 6.0 开发环境介绍 本书以 Visual C++ 6.0 作为 C 源程序的实践开发环境, 本章将首先介绍 Visual C++ 6.0 环境的基本操作, 包括 Visual C++ 6.0 的安装和启动,C 源程序的编辑 运行与调试 1.1 安装与启动 Visual C++ 6.0 MSDN Visual C++ 6.0 1.1 Microsoft Visual

More information

<4D F736F F D20B5DA33D5C220CAFDBEDDB5C4CAE4C8EBCAE4B3F62E646F63>

<4D F736F F D20B5DA33D5C220CAFDBEDDB5C4CAE4C8EBCAE4B3F62E646F63> 嵌入式 Linux C 语言程序 设计基础教程作者 : 华清远见 第 3 章数据的输入输出 本章目标 在上一章中, 读者了解了嵌入式 Linux C 语言的数据相关的知识, 包括数据类型 变量和常量等 本 章继续介绍 C 语言中与数据有关的知识, 数据的输入输出 通过本章的学习, 读者将会掌握如下内容 : 字符输出函数 putchar 格式化输出函数 printf 字符输入函数 getchar 格式化输入函数

More information

C

C C 2017 3 14 1. 2. 3. 4. 2/95 C 1. 3/95 C I 1 // talkback.c: 2 #include 3 #include 4 #define DENSITY 62.4 5 int main(void) 6 { 7 float weight, volume; 8 int size; 9 unsigned long letters;

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

第 3 章顺序结构程序设计 31 2) 直到型循环结构 先执行 A 操作, 再判断条件, 若条件成立, 再执行 A 操作, 如此反复, 直到条件不成立时才停止循环 由上述三种程序结构组成的程序称作结构化程序, 形成的软件称作结构化软件 C 程序结构 C 语言以文件为编译单位 一个 C 程

第 3 章顺序结构程序设计 31 2) 直到型循环结构 先执行 A 操作, 再判断条件, 若条件成立, 再执行 A 操作, 如此反复, 直到条件不成立时才停止循环 由上述三种程序结构组成的程序称作结构化程序, 形成的软件称作结构化软件 C 程序结构 C 语言以文件为编译单位 一个 C 程 第 3 章顺序结构程序设计 随着计算机应用的不断发展, 软件变得越来越复杂 软件的可读性 可理解性等问题变得十分突出 经过不断的研究和实践, 确定了程序设计的基本方法, 这就是结构化程序设计方法 结构化程序设计方法使得程序的逻辑结构清晰, 层次分明, 有效地改善了程序的可靠性, 提高了软件的质量 本章所介绍的语句, 将按它们在程序中出现的顺序逐条执行, 由这样的语句构成的程序结构称为顺序结构 本章主要介绍以下内容

More information

期中考试试题讲解

期中考试试题讲解 一 选择题 ( 一 ) 1. 结构化程序设计所规定的三种基本结构是 C A 主程序 子程序 函数 B 树形 网形 环形 C 顺序 选择 循环 D 输入 处理 输出 2. 下列关于 C 语言的叙述错误的是 A A 对大小写不敏感 B 不同类型的变量可以在一个表达式中 C main 函数可以写在程序文件的任何位置 D 同一个运算符号在不同的场合可以有不同的含义 3. 以下合法的实型常数是 C A.E4

More information

untitled

untitled Introduction to Programming ( 數 ) Lecture 3 Spring 2005 March 4, 2005 Lecture 2 Outline 數 料 If if 狀 if 2 (Standard Output, stdout): 料. ((Standard Input, stdin): 料. 類 數 數 數 說 printf 見 數 puts 串 數 putchar

More information

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

格式化字符串 Weifeng Sun School of Software, DLUT

格式化字符串 Weifeng Sun School of Software, DLUT 格式化字符串 Weifeng Sun School of Software, DLUT 格式化字符串漏洞 格式化字符串, 也是一种比较常见的漏洞类型 会触发该漏洞的函数很有限 主要就是 printf 还有 sprintf,fprintf 等等 c 库中 print 家族的函数 >int printf(const char* format,...) 2 / 42 3 / 42 A B 字符串指针 char

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

C/C++ - 字符输入输出和字符确认

C/C++ - 字符输入输出和字符确认 C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,

More information

C/C++ - 函数

C/C++ - 函数 C/C++ Table of contents 1. 2. 3. & 4. 5. 1 2 3 # include # define SIZE 50 int main ( void ) { float list [ SIZE ]; readlist (list, SIZE ); sort (list, SIZE ); average (list, SIZE ); bargragh

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

Microsoft PowerPoint - 03.Fortran程序设计基础1

Microsoft PowerPoint - 03.Fortran程序设计基础1 简单 Fortran 90 程序的构造形式 : 第二讲 Fortran 程序设计基础 (2) [PROGRAM 程序名 ] [ 声明语句 ] [ 执行语句 ] END [PROGRAM [ 程序名 ]] 程序的书写 (P5) PROGRAM MONEY!calculate balance after interest compounded! 根据利息计算余额 REAL BALANCE, INTEREST,

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/ 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:// 不能以数字开头 D._3_ B:// 不能用点和空格 提问 抢答 E.$anothervar C: // 不能用点和空格

More information

新・解きながら学ぶC言語

新・解きながら学ぶC言語 330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180

More information

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法 ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 0 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : 0 /// 测试方法 : 测试将 DataTable 导出到 EXCEL, 无模板 public void TestExportToExcelByDataTable() string excelpath

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第 1 章程序设计和 C 语言 1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C 语言的发展及其特点 1.4 最简单的 C 语言程序 1.5 运行 C 程序的步骤与方法 1.6 程序设计的任务 1.1 什么是计算机程序 程序 : 一组计算机能识别和执行的指令 只要让计算机执行这个程序, 计算机就会自动地 有条不紊地进行工作 计算机的一切操作都是由程序控制的, 离开程序, 计算机将一事无成

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

C/C++语言 - 分支结构

C/C++语言 - 分支结构 C/C++ Table of contents 1. if 2. if else 3. 4. 5. 6. continue break 7. switch 1 if if i // colddays.c: # include int main ( void ) { const int FREEZING = 0; float temperature ; int cold_ days

More information

实验 2 顺序结构程序设计 9 unsigned short a; a= 1; printf("%d\n",a); 运行以上程序, 查看输出的结果, 分析为什么会输出这些信息 (1) 打开 VC 创建 liti2 2.c 文件 (2) 输入以上代码并编译执行 (3) 结果如图 2 2 所示 图 2

实验 2 顺序结构程序设计 9 unsigned short a; a= 1; printf(%d\n,a); 运行以上程序, 查看输出的结果, 分析为什么会输出这些信息 (1) 打开 VC 创建 liti2 2.c 文件 (2) 输入以上代码并编译执行 (3) 结果如图 2 2 所示 图 2 实验 2 顺序结构程序设计 明符 一 实验目的 1. 掌握 C 语言基本数据类型 运算符和赋值语句 2. 变量的定义及初始化 整型 实型 字符型等基本类型变量的定义和初始化 3. 熟练使用赋值运算 算术运算等表达式, 能够编写简单顺序结构程序 4. 掌握 C 语言基本的输入输出 熟练使用标准输入 输出函数及各种数据类型的格式说 二 实验内容及步骤 例题 2.1 输入程序, 查看输出结果 (1) 参照第一章创建

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循

实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循 实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循环 实验范例 系统常用类 : 字符串类 (String) a) 从字符串 s 中截取一个字符串方法 s.substring()

More information

网C试题(08上).doc

网C试题(08上).doc 学习中心 姓名 学号 西安电子科技大学网络与继续教育学院 高级语言程序设计 (C) 全真试题 ( 闭卷 90 分钟 ) 题号一二三总分 题分 60 20 20 得分 一 单项选择题 ( 每小题 3 分, 共 60 分 ) 1.C 语言程序的基本单位是 A) 程序行 B) 语句 C) 函数 D) 字符 2. 下列四组选项中, 均是不合法的用户标识符的选项是 A)A B)getc C)include D)while

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

C 语言程序设计 ( 第 33 版 )) #define PI // 下面 2 行是函数的原型说明部分 double sup_area(double r); double volume(double r); // 下面是主函数部分 { double a=-5,b,c,d; b=fab

C 语言程序设计 ( 第 33 版 )) #define PI // 下面 2 行是函数的原型说明部分 double sup_area(double r); double volume(double r); // 下面是主函数部分 { double a=-5,b,c,d; b=fab 第 1 章 C 语言基础与顺序结构 学习目标 1. 掌握 C 语言程序的结构 2. 合理选用数据类型 3. 掌握算术运算符和赋值运算符 4. 掌握控制数据的输入 输出方法 5. 掌握顺序结构以及顺序结构的流程 6. 掌握 Visual C++ 6.0 集成环境的使用方法 7. 掌握转换大小写字母的方法 8. 掌握产生随机整数的方法 计算机由硬件系统和软件系统组成, 其中硬件是物质基础, 而软件是计算机的灵魂

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

C

C C 2017 4 1 1. 2. while 3. 4. 5. for 6. 2/161 C 7. 8. (do while) 9. 10. (nested loop) 11. 12. 3/161 C 1. I 1 // summing.c: 2 #include 3 int main(void) 4 { 5 long num; 6 long sum = 0L; 7 int status;

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

プログラムの設計と実現II

プログラムの設計と実現II UNIX C ls mkdir man http://www.tj.chiba-u.jp/lecture/prog2/ Ctrl+x, Ctrl+s ( )..[4]% gcc Wall o hoge hoge.c..[5]%./hoge 1 : 1 2 : 2 3 : 3 4 : 0 6..[6]% (! )..[4]% gcc Wall o hoge hoge.c..[5]%!g gcc Wall

More information

北京大学

北京大学 1 string 类 郭炜刘家瑛 北京大学程序设计实习 string 类 string 类是一个模板类, 它的定义如下 : typedef basic_string string; 使用 string 类要包含头文件 string 对象的初始化 : string s1("hello"); // 一个参数的构造函数 string s2(8, x ); // 两个参数的构造函数

More information

第 1 章 C 语言的发展 特点与程序结构 本章主要介绍了 C 语言的发展 特点和程序结构, 重点阐述了程序设计的基本方法, 包括面向过程的程序设计和面向对象的程序设计 ; 算法的概念及其表示, 包括用自然语言 流程图 伪代码 N-S 流程图的表示方法 ; 最后介绍了 C 语言应用程序的开发过程 1

第 1 章 C 语言的发展 特点与程序结构 本章主要介绍了 C 语言的发展 特点和程序结构, 重点阐述了程序设计的基本方法, 包括面向过程的程序设计和面向对象的程序设计 ; 算法的概念及其表示, 包括用自然语言 流程图 伪代码 N-S 流程图的表示方法 ; 最后介绍了 C 语言应用程序的开发过程 1 C 语言程序设计 电子教程 主编 : 杨健霑副主编 : 汪同庆 1 第 1 章 C 语言的发展 特点与程序结构 本章主要介绍了 C 语言的发展 特点和程序结构, 重点阐述了程序设计的基本方法, 包括面向过程的程序设计和面向对象的程序设计 ; 算法的概念及其表示, 包括用自然语言 流程图 伪代码 N-S 流程图的表示方法 ; 最后介绍了 C 语言应用程序的开发过程 1.1 C 语言的发展与特点 1.1.1

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 177 [P179] (1) - [P181] [P182] (2) - for [P183] (3) - switch [P184] [P187] [P189] [P194] 178 [ ]; : : int var; : int var[3]; var 2293620 var[0] var[1] 2293620

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 4.4.1 逻辑运算符及其优先次序 3 种逻辑运算符 : &&( 逻辑与 ) ( 逻辑或 )!( 逻辑非 ) && 和 是双目 ( 元 ) 运算符! 是一目 ( 元 ) 运算符 逻辑表达式 用逻辑运算符将关系表达式或其他逻辑量连接起来的式子 4.4.1 逻辑运算符及其优先次序 判断年龄在 13 至 17 岁之内? age>=13 && age

More information

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式] 函数 Function 如何重用代码 How to reuse code 3 4 = 3*3*3*3 3 4,6 5 : 拷贝 - 粘帖代码 (Copy-paste code) 3 4,6 5,12 10 : 拷贝 - 粘帖代码 (Copy-paste code) Bad! 使用函数 (with a function) 使用函数 (with a function) 使用函数 (with a function)

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

Ps22Pdf

Ps22Pdf C ( CIP) C /. :, 2001. 7 21 ISBN 7-5624 -2355-5. C........ C. TP312 CIP ( 2001 ) 034496 C * * : 7871092 1 /16 : 14. 25 : 356 20017 1 20017 1 : 1 6 000 ISBN 7-5624-2355-5 / TP311 : 21. 00 C, C,,,, C,, (

More information

<4D F736F F D204A617661B3CCD0F2C9E8BCC6BBF9B4A1A3A8B5DA35B0E6A3A9CAB5D1E9D6B8B5BCD3EBCFB0CCE2BDE2B4F020B5DA33D5C22E646F63>

<4D F736F F D204A617661B3CCD0F2C9E8BCC6BBF9B4A1A3A8B5DA35B0E6A3A9CAB5D1E9D6B8B5BCD3EBCFB0CCE2BDE2B4F020B5DA33D5C22E646F63> 第 3 章 结构语句 本章知识点 : 流程控制语句是用来控制程序中各语句执行顺序的语句, 是程序中基本却又非常关键的部分 流程控制语句可以把单个的语句组合成有意义的 能完成一定功能的小逻辑模块 最主要的流程控制方式是结构化程序设计中规定的顺序结构 分支结构 ( 选择结构 ) 和循环结构三种基本流程结构 本章将指导读者掌握 Java 程序中的流程控制语句, 包括这些语句的语法结构和使用中需注意的要点

More information

C/C++语言 - 运算符、表达式和语句

C/C++语言 - 运算符、表达式和语句 C/C++ Table of contents 1. 2. 3. 4. C C++ 5. 6. 7. 1 i // shoe1.c: # include # define ADJUST 7. 64 # define SCALE 0. 325 int main ( void ) { double shoe, foot ; shoe = 9. 0; foot = SCALE * shoe

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ 考生注意 : 本试卷共七大题, 满分 150 分 考试时间为 3 小时 ; 所有答案均写在答题纸上 ( 注明题号 ), 在此答题一律无效无效 一 选择题 ( 本题共 20 小题, 每小题 2 分, 满分 40 分 ) 1 char ch 1 2 A 0

More information

2015年计算机二级(C语言)模拟试题及答案(四)

2015年计算机二级(C语言)模拟试题及答案(四) 2015 年计算机二级 (C 语言 ) 模拟试题及答案 (4) 一 填空题 1 C 语言中基本的数据类型有 : 2 C 语言中普通整型变量的类型说明符为, 在内存中占 字节, 有符号普通整型的数据范围是 3 整数-35 在机内的补码表示为 4 执行下列语句 int a=8;a+=a-=a*a; 后,a 的值是 5 有如下语句:charA[ ]={ I am a student }; 该字符串的长度是,A[3]=

More information

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 1 CARDGAME 1 CardGame 题目描述 桌上有一叠牌, 从第一张牌 ( 即位于顶面的牌 ) 开始从上往下依次编号为 1~n 当至少还剩两张牌时进行以下操作 : 把第一张牌扔掉, 然后把新的第一张放到整叠牌的最后 请模拟这个过程, 依次输出每次扔掉的牌以及最后剩下的牌的编号 输入 输入正整数 n(n

More information

chap12.ppt

chap12.ppt 第十二章 文件 C ( 前所讲 ) 程序 ( 可包含若干源程序文件 ) 文件 也属于. 目的 : 使程序操作中的数据得以长期保存 一 概述 OS 以文件为单位对数据进行存储管理 流与文件流 :C 提供的一个 I/O 统一接口, 与具体的被访问设备无关 把 I/O 工作抽象成从源到目地的流, 所有的 I/O 通过流来进行, 所有流都具有相同的行为 文件 : 指具体的实际设备 ( 一切具有 I/O 能力的外部设备

More information

C

C C 14 2017 5 31 1. 2. 3. 4. 5. 2/101 C 1. ( ) 4/101 C C ASCII ASCII ASCII 5/101 C 10000 00100111 00010000 ASCII 10000 31H 30H 30H 30H 30H 1 0 0 0 0 0 ASCII 6/101 C 7/101 C ( ) ( ) 8/101 C UNIX ANSI C 9/101

More information

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 CIRCLE 1 Circle 描述 编写一个圆类 Circle, 实现半径的输入 面积的计算和输出 输入 圆的半径 (double 类型 ) 输出 圆的面积 ( 保留小数点后两位 ) 样例输入 3 样例输出 28.27 提示 圆周率的取值需要比较精确, 以保证计算结果的精度 #include

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

Microsoft PowerPoint - 07 派生数据类型

Microsoft PowerPoint - 07 派生数据类型 能源与动力工程学院 目录 派生类型 陈 斌 固有数据类型 数值型 (numerical) 整型 INTEGER 实型 REAL 复数型 COMPLEX 非数值型 字符型 CHARACTER 逻辑型 ( 布尔型 )LOGICAL 自定义数据类型 ( 派生类型, derived type) 派生类型是指用户利用 Fortran 系统内部类型, 如整型 实型 复数型 逻辑型 字符型等的组合自行创建出一个新的数据类型,

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 lambda 表达式及其应用 lambda 表达式是 Java 8 提供的一种新特性, 它使得 Java 也能像 C# 和 C++ 语言一样进行简单的 函数式编程, 这不仅简化了某些通用结构的实现方式, 也大大增强了 Java 语言的表达功能 3.1 lambda 表达式简介 lambda 表达式是基于数学中的 λ 演算得名, 本质上就是一个没有方法名的匿名方法 例如, 有一个方法定义如下

More information

Microsoft PowerPoint - string_kruse [兼容模式]

Microsoft PowerPoint - string_kruse [兼容模式] Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.

More information

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期  开放本科  期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默 试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默认扩展名为 ( ) A. cpp B. c C. exe D. obj 2. 设 x 和 y 均为逻辑值,

More information

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 30 日 1

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 30 日 1 C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 月 30 日 1 1 STRINGSORT 1 StringSort 题目描述 编写程序, 利用 string 类完成一个字符串中字符的排序 ( 降序 ) 并输出 输入描述 输入仅一行, 是一个仅由大小写字母和数字组成的字符串 输出描述 输出排序后的字符串 样例输入 abcde 样例输出 edcba 提示 使用 std::sort

More information

文件

文件 CH10 文件 1 文件的概念 一 文件分类 二 文件的组织结构 : ASCII 码文件 ( 文本文件 ) 二进制文件 文件是二进制代码的, 则文件就是字节流 文件是 ASCII 码的, 则文件就是字符流, 也是字节流 1 如 : 对于整型变量 x, 其值为 32767 若以文本方式存放, 则共有 5 个字符, 内容为 : 00110011 00110010 00110111 00110110 00110111

More information

Mx* Language Reference Manual 2016 年 4 月 7 日 1 用词说明 未定义 指中央还没有表态指语言定义中不涉及的部分, 编译器和运行时环境如何表现是未知的 主要是为了给学生实现语言留下足够的空间, 标准测试集里不会出现涉及未定义部分的内容 例如 : 术语 : 源程

Mx* Language Reference Manual 2016 年 4 月 7 日 1 用词说明 未定义 指中央还没有表态指语言定义中不涉及的部分, 编译器和运行时环境如何表现是未知的 主要是为了给学生实现语言留下足够的空间, 标准测试集里不会出现涉及未定义部分的内容 例如 : 术语 : 源程 Mx* Language Reference Manual 2016 年 4 月 7 日 1 用词说明 未定义 指中央还没有表态指语言定义中不涉及的部分, 编译器和运行时环境如何表现是未知的 主要是为了给学生实现语言留下足够的空间, 标准测试集里不会出现涉及未定义部分的内容 例如 : 术语 : 源程序大小超过 256M 是未定义的 解释 : 我们测试用的源程序大小不会超过 256M 2 程序结构 Mx*

More information

第3章 Java语言基础

第3章 Java语言基础 第 3 章 Java 语言基础 第 1/55 页 习题 3 3. 8. 9. 13. 18. 实验 : 1. 实验 4( 实 P11~12) 2. 实验任务 : 1 例 3.1( 教 P30) 2 变量赋值 ( 教 P29) 3 编写两个缓冲区对应同一个输入流对象, 并键盘输入整型 a 和双精度 b, 求和 第 2/55 页 习题 3 3. 实验任务 : 1 实验 5( 实 P12~13) 2 实验

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 第 2 章 Java 语言基础 通过本章的实践, 要掌握 Java 中的标识符 关键字 常量, 熟练掌握算术 关 系 逻辑 条件 赋值 位运算符的使用, 掌握简单顺序结构的程序设计 2.1 典型习题解答 2.1 Java 中怎样进行注释? 解答 Java 语言中的注释有 3 种形式 : (1) 单行 : // (2) 多行 : /* */ (3) 文档注释 : /** */ 第三种形式是第二种形式的变形,

More information

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 第十一讲 运算符重载 与类型转换 运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 为什么要运算符重载 预定义的运算符只针对基本数据类型, 若要对类的对象进行类似的运算, 需要重新定义运算符的功能 运算符重载实质就是函数重载 : 对已有的运算符赋予多重含义, 使得同一个运算符作用于不同类型的数据时导致不同的行为

More information

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

More information

内容简介 C 语言是一种结构化程序设计语言, 本书通过大量的实例讲解 C 语言程序设计的方法, 主要内容包括 C 语言程序的结构 数据类型 运算符和表达式 数据的输入和输出 选择结构 循环结构 数组 函数 指针 编译预处理 结构和共用体 位运算 文件等 每个单元包括小结 实验 习题等 本书可作为高等

内容简介 C 语言是一种结构化程序设计语言, 本书通过大量的实例讲解 C 语言程序设计的方法, 主要内容包括 C 语言程序的结构 数据类型 运算符和表达式 数据的输入和输出 选择结构 循环结构 数组 函数 指针 编译预处理 结构和共用体 位运算 文件等 每个单元包括小结 实验 习题等 本书可作为高等 普通高等教育 十二五 重点规划教材计算机系列中国科学院教材建设委员会 十二五 规划教材 C 语言程序设计 张秀萍主编闫丽王淑霞副主编 北 京 科学出版社职教技术出版中心 www.aboo 内容简介 C 语言是一种结构化程序设计语言, 本书通过大量的实例讲解 C 语言程序设计的方法, 主要内容包括 C 语言程序的结构 数据类型 运算符和表达式 数据的输入和输出 选择结构 循环结构 数组 函数 指针 编译预处理

More information

Guava学习之CharSequenceReader

Guava学习之CharSequenceReader CharSequenceReader 类是以 CharSequence 的形式读取字符 CharSequenceReader 类继承自 Reader 类, 除了 remaining() hasremaining() 以及 checkopen() 函数之后, 其他的函数都是重写 Reader 类中的函数 CharSequenceReader 类声明没有用 public 关键字, 所以我们暂时还不能调用这个类

More information

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf (%d, & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9 201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void

More information

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年 移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组北京大学二零一五年 预处理 2 预处理器 C 语言的编译系统分为编译预处理和正式编译 预处理作用 : 对源程序编译之前做一些处理, 生成扩展 C 源程序 预处理器的行为是由预处理指令控制的 宏定义 文件包含 条件编译 #define #ifdef

More information

通过Hive将数据写入到ElasticSearch

通过Hive将数据写入到ElasticSearch 我在 使用 Hive 读取 ElasticSearch 中的数据 文章中介绍了如何使用 Hive 读取 ElasticSearch 中的数据, 本文将接着上文继续介绍如何使用 Hive 将数据写入到 ElasticSearch 中 在使用前同样需要加入 elasticsearch-hadoop-2.3.4.jar 依赖, 具体请参见前文介绍 我们先在 Hive 里面建个名为 iteblog 的表,

More information

狭义上 算法指的是计算机算法 即对特定问题求解步骤的一种描述 它是计算机指令的有限序列 其中每一条指令表示计算机可以进行的一个或多个操作 人们利用计算机编写程序处理各种不同的问题 必须先对各类问题进行分析 确定解决问题的具体方法和步骤 即算法 然后编制好一组让计算机执行的指令即程序 交给计算机 让计

狭义上 算法指的是计算机算法 即对特定问题求解步骤的一种描述 它是计算机指令的有限序列 其中每一条指令表示计算机可以进行的一个或多个操作 人们利用计算机编写程序处理各种不同的问题 必须先对各类问题进行分析 确定解决问题的具体方法和步骤 即算法 然后编制好一组让计算机执行的指令即程序 交给计算机 让计 简单 程序设计 语言是结构化的程序设计语言 非常适合编写结构化的程序 结构化的程序通常包括数据的描述和操作的描述两方面的内容 数据的描述是指程序中数据的类型和数据的组织形式 即数据结构 前面介绍的数据类型 常量 变量及后续章节的数组 结构体等都属于这方面的内容 操作的描述是指程序中对数据的操作方法和操作步骤 也就是算法 数据的描述和操作的描述是程序设计过程必不可少的组成部分 数据是操作的对象 操作的目的是对数据进行加工处理

More information

Microsoft Word - CPE考生使用手冊160524.docx

Microsoft Word - CPE考生使用手冊160524.docx 大 學 程 式 能 力 檢 定 (CPE) 考 生 使 用 手 冊 2016 年 5 月 24 日 這 份 手 冊 提 供 給 參 加 CPE 檢 定 考 試 的 考 生 內 容 包 含 考 試 環 境 的 使 用, 以 及 解 題 時 所 使 用 I/O 的 基 本 知 識 1. 如 欲 報 名 參 加 CPE 考 試, 請 先 於 CPE 網 站 完 成 帳 號 註 冊, 然 後 再 報 名 該

More information

2015年计算机二级(C语言)模拟试题及答案(三)

2015年计算机二级(C语言)模拟试题及答案(三) 2016 年计算机二级 (C 语言 ) 模拟试题及答案 (3) 1.( A ) 是构成 C 语言程序的基本单位 A 函数 B 过程 C 子程序 D 子例程 2.C 语言程序从 ( C ) 开始执行 A 程序中第一条可执行语句 B 程序中第一个函数 C 程序中的 main 函数 D 包含文件中的第一个函数 3 以下说法中正确的是( C ) A C 语言程序总是从第一个定义的函数开始执行 B 在 C 语言程序中,

More information

内容简介 本书根据全国计算机等级考试二级 C 语言程序设计考试大纲要求, 结合目前高等院校学生学习计算机程序设计课程的情况组织内容, 全面地介绍了 C 语言程序设计的基础知识, 系统地讲述了 C 语言程序设计的基本方法和技巧 本书以 ANSI C 语言标准为依据, 深入浅出地介绍了 C 语言的基本数

内容简介 本书根据全国计算机等级考试二级 C 语言程序设计考试大纲要求, 结合目前高等院校学生学习计算机程序设计课程的情况组织内容, 全面地介绍了 C 语言程序设计的基础知识, 系统地讲述了 C 语言程序设计的基本方法和技巧 本书以 ANSI C 语言标准为依据, 深入浅出地介绍了 C 语言的基本数 普通高等教育计算机系列规划教材 C 语言程序设计 ( 第二版 ) 姜海涛主编曹震中武楠王妍闫超刘红娟叶永凯卫娜副主编 副主编 科学出版社职教技术出版中心 www.aboo 北京 内容简介 本书根据全国计算机等级考试二级 C 语言程序设计考试大纲要求, 结合目前高等院校学生学习计算机程序设计课程的情况组织内容, 全面地介绍了 C 语言程序设计的基础知识, 系统地讲述了 C 语言程序设计的基本方法和技巧

More information

中国科学院优秀教材普通高等教育电气信息类应用型规划教材 C 语言程序设计 ( 第二版 ) 罗朝盛主编 张银南白宝钢魏英 副主编 北 京 内容简介 本书共 10 章, 包括 :C 语言程序设计概述, 数据类型与常用库函数, 运算符与表达式, 算法与控制结构, 数组 字符串与指针, 函数, 编译预处理, 结构体 共用体与枚举类型, 文件操作,C++ 程序设计初步 本书配有大量的例题和习题, 适合教师课堂教学和读者自学

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

第一章 引言

第一章  引言 第四章 循环结构 上机问题 程序书写风格 缩入 : 例如, 统一缩入四个空格 复合语句中 {} 的对齐 适当的空行 变量名命名 变量名使用 2 上机问题 关系运算符 == 与赋值运算符 = n == 0 与 n = 0 的区别? 逻辑运算符 :&& 与 的区别? && : 两个条件均为真, 结果为真 : 有一个条件为真, 结果为真 for 语句 if-else 语句的逻辑错误 3 上机问题 scanf

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

Microsoft Word C语言程序设计-理论与实践正文.doc

Microsoft Word C语言程序设计-理论与实践正文.doc 第 3 章 C 语言流程控制 在本章中将学习到如下内容 : 格式化输入 / 输出函数 C 语言中的顺序 分支和循环程序的设计方法 通过前面的学习, 我们已经能够编写一些比较简单的 C 程序了, 但是在解决实际问题的时候, 可能会遇到一些诸如满足某种条件进行怎样的处理, 不满足又进行怎样的处理, 或者某一个处理需要反复进行很多次处理这样的问题 那么在 C 语言中, 怎样来解决这类问题呢? 通过对本章的学习,

More information

内容简介本书主要内容包括程序设计基础知识 C 语言数据类型 运算符与表达式 程序结构 数组 指针 其他数据类型 函数 文件等, 通过对大量实例进行分析, 力求提高和培养学生的程序设计能力 本书有配套辅导教程 程序设计基础实训指导教程 C 语言 ( 科学出版社出版 ), 引导读者学习和巩固各章节内容

内容简介本书主要内容包括程序设计基础知识 C 语言数据类型 运算符与表达式 程序结构 数组 指针 其他数据类型 函数 文件等, 通过对大量实例进行分析, 力求提高和培养学生的程序设计能力 本书有配套辅导教程 程序设计基础实训指导教程 C 语言 ( 科学出版社出版 ), 引导读者学习和巩固各章节内容 普通高等教育 十二五 规划教材计算机系列中国科学院教材建设专家委员会 十二五 规划教材 程序设计基础 C 语言 杨莉刘鸿翔主编唐宏亮邓芳副主编余慧王海军 1 科学出版社职教技术出版中心 www.aboo 北 京 内容简介本书主要内容包括程序设计基础知识 C 语言数据类型 运算符与表达式 程序结构 数组 指针 其他数据类型 函数 文件等, 通过对大量实例进行分析, 力求提高和培养学生的程序设计能力 本书有配套辅导教程

More information

Microsoft Word - YYCXfm.DOC

Microsoft Word - YYCXfm.DOC C 语言程序设计 王曙燕主编曹锰副主编 北京 内容简介 本书共 13 章, 主要内容包括 C 语言的基本概念 基本语法和基本数据结构, 另外, 给出了一个小型超市管理的综合实例, 介绍了 C 语言图形程序设计的基本方法, 还简单介绍了 C++ Visual C++ 和 C# 等面向对象程序设计语言 本书注重应用性和实践性, 通过一些典型算法的解题分析及其实现给读者一些解题示范和启发 每章后面配有习题,

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Python 入门 孙栩 xusun@pku.edu.cn 1 课程的整体介绍 目录 contents 2 Python 的介绍及如何安装 Python 3 使用 Python 编写简单小程序 1 课程的整体介绍 课程的整体介绍 Python 入门 1. Python 的介绍与安装 2. 变量与表达式 3. 一些简单的小程序 数据结构 1. 字符串 2. 列表 3. 元组 4. 字典 5. 集合 分支与循环

More information

没有幻灯片标题

没有幻灯片标题 第 2 章 C 语言的基本数据类型与表达 式 2. 1 C 语言的语法基础 2. 2 C 语言的基本数据类型 2. 3 常量和变量 2. 4 运算符与表达式 2. 5 数据类型转换 用 第 2 章 C 语言的基本数据类型与表达 2.1 C 语言的语法基础 2. 1. 1 C 语言字符集 式 C 语言的基本符号可分 4 个类, 归纳如下 : (1) 英文字母 : 大小写各 26 个, 共计 52 个

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN: 978-7-302-13599-9, 红色封面答案制作时间 :2011 年 2 月 -5 月一 选择题 1. 以下数组定义中, 错误的是 :C)int a[3]=1,2,3,4; 2. 以下数组定义中, 正确的是 :B) int a[][2]=1,2,3,4; 3. 设有定义 int a[8][10];,

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章流程控制和数组 3.1 实验目的 (1) 熟练掌握控制台应用程序的代码编写和调试, 以及运行方法 (2) 掌握选择结构的一般语法格式和应用 (3) 掌握 switch 语句的用法 (4) 掌握选择结构的嵌套的用法, 能灵活使用选择结构解决实际问题 (5) 掌握 while 循环语句的一般语法格式 (6) 掌握 for 循环语句的一般语法格式 (7) 掌握循环嵌套的语法格式 (8) 掌握一维数组的定义

More information

C 语言 第七讲 分支 张晓平 武汉大学数学与统计学院 2017 年 4 月 5 日

C 语言 第七讲 分支 张晓平 武汉大学数学与统计学院 2017 年 4 月 5 日 C 语言 第七讲 分支 张晓平 武汉大学数学与统计学院 2017 年 4 月 5 日 1. if 语句 2. if else 语句 3. 获取逻辑性 4. 一个统计字数的程序 5. 条件运算符 6. continue 和 break 语句 2/145 C 语言 7. switch 语句 8. goto 语句 3/145 C 语言 1. if 语句 if 语句 I 1 // colddays.c: 2

More information

C/C++ - 字符串与字符串函数

C/C++ - 字符串与字符串函数 C/C++ Table of contents 1. 2. 3. 4. 1 char C 2 char greeting [50] = " How " " are " " you?"; char greeting [50] = " How are you?"; 3 printf ("\" Ready, go!\" exclaimed John."); " Ready, go!" exclaimed

More information