C语言大学实用教程课件制作人苏小红.
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2018/9/14 C语言大学实用教程课件 制作人苏小红 19
例3.9
#include <stdio.h> main() { int a, b; printf("Please input a and b:"); scanf("%2d%*2d%2d", &a, &b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b); } Please input a and b: 12345a↙ a=12, b=5, a+b = 17
2018/9/14 C语言大学实用教程课件 制作人苏小红 20
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b;
12 34↙
scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b);
}
问题1:当要求程序输出结果为 a = 12, b = 34 时,用户应该如何输入数据?
第3章 简单的C程序设计
哈尔滨工业大学计算机学院 苏小红 sxh@
内容提要
字符输入输出函数 格式输入输出函数
2018/9/14
C语言大学实用教程课件 制作人苏小红
2
C语言中的语句
变量声明语句 – int x, y; 表达式语句 – i++; – i = i + 1; 空语句 –; 复合语句 – {t = x; x = y; y = t;} 控制语句
12 + 3↙ 12 3129 = 3141
2018/9/14 C语言大学实用教程课件 制作人苏小红 27
C格式符存在的问题及其解决— 例3.11
#include <stdio.h> main() { int data1, data2, sum; char op;
scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b);
} 问题3:语句scanf("%d %d", &a, &b);修改为 scanf("a = %d, b = %d", &a, &b); 时,用户应该如何输入数据?
2018/9/14 C语言大学实用教程课件 制作人苏小红 23
2018/9/14 C语言大学实用教程课件 制作人苏小红 4
复合语句
在什么情况下使用复合语句? – 条件语句和循环语句在语法上只允许带一条语句 – 当分支和循环中需要进行多项操作时
{ 被当作一条 语句来处理
t=x;
x=y;
y=t;
}
2018/9/14 C语言大学实用教程课件 制作人苏小红 5
例3.1
}
问题2:当限定用户输入数据以逗号为分隔符,即 输入数据格式为: 12, 34↙ 时,应修改程序中的哪条语句?怎样修改?
2018/9/14 C语言大学实用教程课件 制作人苏小红 22
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b;
a = 12, b = 34↙
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b;
scanf("%2d%2d", scanf("%d %d", &a, &a, &b); &b); printf("a = %d, b = %d\n", a, b);
} 问题4:限定用户输入数据为以下格式为 1234↙ 同时要求程序输出结果为a = 12, b = 34
C语言大学实用教程课件 制作人苏小红 11
2018/9/14
printf附加格式说明符
l L m 长整型整数,加在d、o、x、u前 long double型数,加在f、e、g前 表示数据占用的最小宽度 数据宽度大于m,按实际宽度输出 数据宽度小于m时,补空格 对实数表示输出n位小数 对字符串表示最多输出的字符个数 改变输出内容的对齐方式 缺省为右对齐
C语言大学实用教程课件 制作人苏小红 3
2018/9/14
顺序结构程序的基本操作
如何在程序中给变量赋值? – 赋值表达式语句 – 赋值表达式; – Total = m * pow(1+r, n); 如何进行数据的输入输出? – 输入:从标准输入设备上输入数据到计算机内存 – 输出:将计算机内存中的数据送到标准输出设备 – C语言中输入输出操作通过调用标准库函数来实现 #include "stdio.h" – 在当前目录和TC指定的目录中找该文件 #include <stdio.h> – 在由TC指定的文件目录中找该文件
17
格式输入函数
输入数据时,遇以下情况时该数据认为结束 – 遇空格、回车、TAB 键 – 遇宽度 :%3d – 遇非法输入
2018/9/14
C语言大学实用教程课件 制作人苏小红
18
例3.9
#include <stdio.h> main() { int a, b; printf("Please input a and b:"); scanf("%2d%*2d%2d", &a, &b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b); } Please input a and b: 123456↙ a=12, b=56, a+b = 68
2018/9/14 C语言大学实用教程课件 制作人苏小红 21
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b;
scanf("%d,%d", &a, &b); scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b);
printf("Please enter the expression data1 + data2\n"); scanf("%d%c%d",&data1, &op, &data2); printf("%d%c%d = %d\n", data1, op, data2, data1+data2); }
第1次测试 Please enter the expression data1 + data2
ch = getchar(); printf("You pressed "); putchar(ch); putchar('\n');
}
2018/9/14 C语言大学实用教程课件 制作人苏小红 9
格式输出函数
格式输出函数 – printf(格式控制字符串, 输出项表列); – 输出若干个任意类型的数据
2018/9/14 C语言大学实用教程课件 制作人苏小红 24
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b; scanf("%d%d", scanf("%d %d", &a, &a, &b); &b); printf("a = %d, \"%d\", b = \"%d\"\n", b = %d\n", a, b); a, b); } 问题5:限定用户输入数据为以下格式为 12↙ 34↙ 同时要求程序输出结果为a = "12", b = "34"
2018/9/14
C语言大学实用教程课件 制作人苏小红
8
例3.2
#include main() { char <stdio.h>
运行程序
Press a key and then press Enter: A↙ You pressed A
ch;
printf("Press a key and then press Enter:");
C语言大学实用教程课件 制作人苏小红 12
n 2018/9/14
例3.8
#include <stdio.h> main() { float f1 = 100.15799, f2 = 12.55, f3 = 1.7; int n1 = 123, n2 = 45, n3 = 6; printf("printf WITHOUT width or precision specifications:\n"); printf("%f\n%f\n%f\n", f1, f2, f3); printf("%d\n%d\n%d\n", n1, n2, n3); printf("printf WITH width and precision specifications:\n"); printf("%5.2f\n%6.1f\n%3.0f\n", f1, f2, f3); printf("%5d\n%6d\n%3d\n\n", n1, n2, n3); }
2018/9/14 C语言大学实用教程课件 制作人苏小红 13
格式输入函数
格式输入函数 – scanf(格式控制字符串, 地址表列);
scanf("%d,%f”,
&a,&b);
2018/9/14
C语言大学实用教程课件 制作人苏小红
14
格式输入函数
常见错误
–scanf("%d,%f\n”,&a,&b); –scanf("%d,%f”,a,b); –scanf("%7.2f",&a);
C语言大学实用教程课件 制作人苏小红 16
scanf附加格式说明符
l
L h m *
加在d、o、x、u前:输入长整型 加在f、e 前:输入双精度型 加在f、e 前:输入long double型 加在d、o、x 前:输入短整型 表示数据占用的宽度 本输入项在读入后不赋给相应的变量
2018/9/14
C语言大学实用教程课件 制作人苏小红
main() DataInitialze()
{
DataInitialze(); DataProcess(); DataOutput(); }
2018/9/14
{
; }
C语言大学实用教程课件 制作人苏小红
7
字符输入输出函数
字符输出函数 – putchar(ch) – 输出一个字符ch 字符输入函数 – getchar() – 无参数 – 函数值为从输入设备接收的字符
} 问题6:设计程序使得用户可以以任意字符(回车、空格、 制表符、逗号、其它)作为分隔符进行数据的输入
2018/9/14 C语言大学实用教程课件 制作人苏小红 26
C格式符存在的问题及其解决— 例3.11
#include <stdio.h> main() { int data1, data2, sum; char op;
printf("a=%d
b=%f", a, b);
输 出 表 列
10
函数名 普通 字符
2018/9/14
格式说明
C语言大学实用教程课件 制作人苏小红
printf格式字符
d o x u c s f e g 以带符号十进制整数输出 以八进制无符号整数输出(无前导0) 以十六进制无符号整数输出(无前导0x) 以十进制无符号整数输出 以字符形式输出单个字符 输出一个字符串 以小数形式输出浮点数(6位小数) 以标准指数形式输出(6位小数) 选用%f,%e中输出宽度较小的一种格式
2018/9/14 C语言大学实用教程课件 制作人苏小红 25
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b;
scanf("%d%*c%d", &a, &b); scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b);
main() { int {
a = 0;
int a = 1; printf("In: a = %d\n", a);
} printf("Out: a = %d\n", a); } In: a = 1 Out: a = 0
2018/9/14 C语言大学实用教程课件 制作人苏小红 6
空语句ຫໍສະໝຸດ 空语句有什么作用? – 什么也不做,只表示语句的存在 – 自顶向下程序设计时用在那些未完成的模块中
2018/9/14
C语言大学实用教程课件 制作人苏小红
15
scanf格式字符
d o x c s f e
2018/9/14
以带符号十进制形式输入整型数据 以八进制无符号形式输入(无前导0) 以十六进制无符号形式输入(无前导0x) 以字符形式输入单个字符 输入字符串,以非空字符开始,遇第一个 空白字符结束 以小数形式输入浮点数 以标准指数形式输入
例3.9
#include <stdio.h> main() { int a, b; printf("Please input a and b:"); scanf("%2d%*2d%2d", &a, &b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b); } Please input a and b: 12345a↙ a=12, b=5, a+b = 17
2018/9/14 C语言大学实用教程课件 制作人苏小红 20
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b;
12 34↙
scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b);
}
问题1:当要求程序输出结果为 a = 12, b = 34 时,用户应该如何输入数据?
第3章 简单的C程序设计
哈尔滨工业大学计算机学院 苏小红 sxh@
内容提要
字符输入输出函数 格式输入输出函数
2018/9/14
C语言大学实用教程课件 制作人苏小红
2
C语言中的语句
变量声明语句 – int x, y; 表达式语句 – i++; – i = i + 1; 空语句 –; 复合语句 – {t = x; x = y; y = t;} 控制语句
12 + 3↙ 12 3129 = 3141
2018/9/14 C语言大学实用教程课件 制作人苏小红 27
C格式符存在的问题及其解决— 例3.11
#include <stdio.h> main() { int data1, data2, sum; char op;
scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b);
} 问题3:语句scanf("%d %d", &a, &b);修改为 scanf("a = %d, b = %d", &a, &b); 时,用户应该如何输入数据?
2018/9/14 C语言大学实用教程课件 制作人苏小红 23
2018/9/14 C语言大学实用教程课件 制作人苏小红 4
复合语句
在什么情况下使用复合语句? – 条件语句和循环语句在语法上只允许带一条语句 – 当分支和循环中需要进行多项操作时
{ 被当作一条 语句来处理
t=x;
x=y;
y=t;
}
2018/9/14 C语言大学实用教程课件 制作人苏小红 5
例3.1
}
问题2:当限定用户输入数据以逗号为分隔符,即 输入数据格式为: 12, 34↙ 时,应修改程序中的哪条语句?怎样修改?
2018/9/14 C语言大学实用教程课件 制作人苏小红 22
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b;
a = 12, b = 34↙
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b;
scanf("%2d%2d", scanf("%d %d", &a, &a, &b); &b); printf("a = %d, b = %d\n", a, b);
} 问题4:限定用户输入数据为以下格式为 1234↙ 同时要求程序输出结果为a = 12, b = 34
C语言大学实用教程课件 制作人苏小红 11
2018/9/14
printf附加格式说明符
l L m 长整型整数,加在d、o、x、u前 long double型数,加在f、e、g前 表示数据占用的最小宽度 数据宽度大于m,按实际宽度输出 数据宽度小于m时,补空格 对实数表示输出n位小数 对字符串表示最多输出的字符个数 改变输出内容的对齐方式 缺省为右对齐
C语言大学实用教程课件 制作人苏小红 3
2018/9/14
顺序结构程序的基本操作
如何在程序中给变量赋值? – 赋值表达式语句 – 赋值表达式; – Total = m * pow(1+r, n); 如何进行数据的输入输出? – 输入:从标准输入设备上输入数据到计算机内存 – 输出:将计算机内存中的数据送到标准输出设备 – C语言中输入输出操作通过调用标准库函数来实现 #include "stdio.h" – 在当前目录和TC指定的目录中找该文件 #include <stdio.h> – 在由TC指定的文件目录中找该文件
17
格式输入函数
输入数据时,遇以下情况时该数据认为结束 – 遇空格、回车、TAB 键 – 遇宽度 :%3d – 遇非法输入
2018/9/14
C语言大学实用教程课件 制作人苏小红
18
例3.9
#include <stdio.h> main() { int a, b; printf("Please input a and b:"); scanf("%2d%*2d%2d", &a, &b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b); } Please input a and b: 123456↙ a=12, b=56, a+b = 68
2018/9/14 C语言大学实用教程课件 制作人苏小红 21
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b;
scanf("%d,%d", &a, &b); scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b);
printf("Please enter the expression data1 + data2\n"); scanf("%d%c%d",&data1, &op, &data2); printf("%d%c%d = %d\n", data1, op, data2, data1+data2); }
第1次测试 Please enter the expression data1 + data2
ch = getchar(); printf("You pressed "); putchar(ch); putchar('\n');
}
2018/9/14 C语言大学实用教程课件 制作人苏小红 9
格式输出函数
格式输出函数 – printf(格式控制字符串, 输出项表列); – 输出若干个任意类型的数据
2018/9/14 C语言大学实用教程课件 制作人苏小红 24
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b; scanf("%d%d", scanf("%d %d", &a, &a, &b); &b); printf("a = %d, \"%d\", b = \"%d\"\n", b = %d\n", a, b); a, b); } 问题5:限定用户输入数据为以下格式为 12↙ 34↙ 同时要求程序输出结果为a = "12", b = "34"
2018/9/14
C语言大学实用教程课件 制作人苏小红
8
例3.2
#include main() { char <stdio.h>
运行程序
Press a key and then press Enter: A↙ You pressed A
ch;
printf("Press a key and then press Enter:");
C语言大学实用教程课件 制作人苏小红 12
n 2018/9/14
例3.8
#include <stdio.h> main() { float f1 = 100.15799, f2 = 12.55, f3 = 1.7; int n1 = 123, n2 = 45, n3 = 6; printf("printf WITHOUT width or precision specifications:\n"); printf("%f\n%f\n%f\n", f1, f2, f3); printf("%d\n%d\n%d\n", n1, n2, n3); printf("printf WITH width and precision specifications:\n"); printf("%5.2f\n%6.1f\n%3.0f\n", f1, f2, f3); printf("%5d\n%6d\n%3d\n\n", n1, n2, n3); }
2018/9/14 C语言大学实用教程课件 制作人苏小红 13
格式输入函数
格式输入函数 – scanf(格式控制字符串, 地址表列);
scanf("%d,%f”,
&a,&b);
2018/9/14
C语言大学实用教程课件 制作人苏小红
14
格式输入函数
常见错误
–scanf("%d,%f\n”,&a,&b); –scanf("%d,%f”,a,b); –scanf("%7.2f",&a);
C语言大学实用教程课件 制作人苏小红 16
scanf附加格式说明符
l
L h m *
加在d、o、x、u前:输入长整型 加在f、e 前:输入双精度型 加在f、e 前:输入long double型 加在d、o、x 前:输入短整型 表示数据占用的宽度 本输入项在读入后不赋给相应的变量
2018/9/14
C语言大学实用教程课件 制作人苏小红
main() DataInitialze()
{
DataInitialze(); DataProcess(); DataOutput(); }
2018/9/14
{
; }
C语言大学实用教程课件 制作人苏小红
7
字符输入输出函数
字符输出函数 – putchar(ch) – 输出一个字符ch 字符输入函数 – getchar() – 无参数 – 函数值为从输入设备接收的字符
} 问题6:设计程序使得用户可以以任意字符(回车、空格、 制表符、逗号、其它)作为分隔符进行数据的输入
2018/9/14 C语言大学实用教程课件 制作人苏小红 26
C格式符存在的问题及其解决— 例3.11
#include <stdio.h> main() { int data1, data2, sum; char op;
printf("a=%d
b=%f", a, b);
输 出 表 列
10
函数名 普通 字符
2018/9/14
格式说明
C语言大学实用教程课件 制作人苏小红
printf格式字符
d o x u c s f e g 以带符号十进制整数输出 以八进制无符号整数输出(无前导0) 以十六进制无符号整数输出(无前导0x) 以十进制无符号整数输出 以字符形式输出单个字符 输出一个字符串 以小数形式输出浮点数(6位小数) 以标准指数形式输出(6位小数) 选用%f,%e中输出宽度较小的一种格式
2018/9/14 C语言大学实用教程课件 制作人苏小红 25
输入数据的格式控制——例3.10
#include <stdio.h> main() { int a, b;
scanf("%d%*c%d", &a, &b); scanf("%d %d", &a, &b); printf("a = %d, b = %d\n", a, b);
main() { int {
a = 0;
int a = 1; printf("In: a = %d\n", a);
} printf("Out: a = %d\n", a); } In: a = 1 Out: a = 0
2018/9/14 C语言大学实用教程课件 制作人苏小红 6
空语句ຫໍສະໝຸດ 空语句有什么作用? – 什么也不做,只表示语句的存在 – 自顶向下程序设计时用在那些未完成的模块中
2018/9/14
C语言大学实用教程课件 制作人苏小红
15
scanf格式字符
d o x c s f e
2018/9/14
以带符号十进制形式输入整型数据 以八进制无符号形式输入(无前导0) 以十六进制无符号形式输入(无前导0x) 以字符形式输入单个字符 输入字符串,以非空字符开始,遇第一个 空白字符结束 以小数形式输入浮点数 以标准指数形式输入