高2015级信息学竞赛培训资料
程序设计讲稿3
在C语言的库文件cstdio(或stdio.h)中,有printf和scanf两个函数,他们主要用于程序数据的输入输出。
一、格式输出函数——printf
格式:printf(”格式控制字符串”,待输出项1, 待输出项2,?); 功能:将一些内容按程序员的指定格式输出到计算机屏幕上或文件中。
其中 ”格式控制字符串” ,包括格式控制符和非格式控制符: 格式控制符是以%开头的,例如”%d”表示按十进制输出整数。 非格式控制符在输出的时候照原样输出。
输出语句中,格式控制符和类型与待输出项一一对应。 int main() { int a=88,b=89; printf(\ printf(\ printf(\ return 0; } 程序的输出: 88 89 88,89 a=88,b=89
1、常用格式控制符
格式串中的%后跟一个或几个字符的字符串称为“格式控制符号”。常用的格式控制符有如下几种: 控制符 %d %c %s %f %lf %x %o 2、宽度控制
第1页
解释 要输出一个十进制整数 要输出一个字符 要输出一个字符串 输出一个单精度浮点数(float) 输出一个单精度浮点数(double) 输出一个十六进制整数 输出一个八进制整数 高2015级信息学竞赛培训资料
在格式控制符%后写一个数,可以控制输出输出内容的宽度,
int main() { int a=54321; printf(\ printf(\ printf(\ return 0; } 如果控制宽度小于实际宽度,则按实际宽度输出,如果控制宽度大于实际宽度,则以空格不足宽度。 当控制宽度为正整数时,则按右对齐,左边补空格 当控制宽度为负整数时,则按左对齐,右边补空格 程序运行结果: 54321 54321,□□□□□54321 54321□□□□□,54321
3、精度控制
在输出实数的时候,往往需要保留小数位数并且四舍五入,比如保留2位小数等。 int main() { double a=138.3576278; printf(\保留0位小数,四舍五入 printf(\保留2位小数,四舍五入 printf(\保留4位小数,四舍五入 printf(\保留8位小数,不够用0补齐 return 0; } 程序运行结果: 138 138.36 138.3576 138.35762780
第2页
高2015级信息学竞赛培训资料
二、格式输入函数—scanf函数
格式:scanf(”格式控制字符串”,变量地址1,变量地址2,?);
功能:从键盘或文件接受输入,并将输入数据存放到变量中。
其中,”格式控制串” 与输出语句的一样,用于控制输入数据的类型; 变量地址的表示方法是在变量前面加 ”&” 字符,例如: int main() int a,b; 如果想只知道变量a,b在内{ 存中分配的地址,可以用&a,&b获得; int a,b; a=5; 运行程序后,可输出a和b的地址。 b=10; printf(\ printf(\ return 0; } int main() { char c; int n,m; scanf(\ printf(\ return 0; } 程序要求给变量c,n,m输入值。 我们可以这样输入: t 45 100 每个数据之间用一个空格分开,输入完毕后按“回车”键。 输入完后,c=’t’,n=45,m=100。 所以程序输出是: 格式控制符应与变量一一对应! 使用scanf函数必须注意以下几点:
1、scanf函数输入整型、实型、字符型变量的值的时候,必须给出变量的地址
2、输入整型、实型、字符串的时候,如果中间没有指定的分隔符,则以空格、回车、TAB分隔,从非空格、回车、TAB分隔开始读到下一个空格、回车、TAB分隔结束。但字符类型变量的输入比较特殊,因为空格、回车、TAB也是字符 int main() { int a,b,c; double x,y; char p,q; scanf(\ scanf(\ scanf(\ return 0; } 输入1: 12 13.2 20,21.9 c d 结果1: a=1 x=13.2 b=20 y=21.9 p=’ ’ q=’c’ 输入1: 12 13.2 20,21.9c d 结果1: a=1 x=13.2 b=20 y=21.9 p=c q=’ ’
第3页
高2015级信息学竞赛培训资料
三、编程实例
例2:圆柱的计算
已知圆柱体的底面半径r和高h,请你编程计算圆柱体的表面积和体积。(计算时圆周率PI=3.14159。) 【输入】
第 1 行:一个实数,表示r。 第 2 行:一个实数,表示h。 【输出】
第 1 行:表示圆柱体的表面积。 第 2 行:表示圆柱体的体积。 以上结果均四舍五入保留4位小数。 【样例】 1 1 【数据范围】
0 【分析】 1、 表面积算法:S=2*PI*R*H+2*PI*R*R; 体积算法: V=P*R*R*H; 2、PI定义成常量,定义变量R,H,S,V,它们的类型都应是double 3、输出的时候保留两位小数:printf(”%.4lf\\n”,S); 例3:五个整数 给出五个整数:x1,x2,x3,x4,x5,编程计算这五个数的平均值。 【输入】 第 1 行:只有一行共五整数x1,x2,x3,x4,x5,两个数之间用一个空格分开。 【输出】 第 1 行:一个实数,表示输入的五个整数的平均值(结果四舍五为整数)。 【样例输入】 2 3 4 6 5 【数据范围】 -10000000<=x1,x2,x3,x4,x5<=10000000 第4页 12.5664 3.1416 4 高2015级信息学竞赛培训资料 【分析】 求平均值:ave=(x1+x2+x3+x4+x5)/5 和ave=(x1+x2+x3+x4+x5)/5.0 哪个正确?还有其他写法吗? 例4:四位正整数[版本1] 给出一个四位数A,请你编程完成下面三个任务: (1)、计算A的各位数字之和; (2)、把A的千位、百位、十位、个位反转成另一个数(最高位不能为0); (3)、把后两位数取出,得到两个两位数,计算这两个数的和。 【输入】 一行一个四位数A。 【输出】 第 1 行:任务(1)的结果; 第 2 行:任务(2)的结果; 第 3 行:任务(3)的结果。 【样例输入】 1234 10 4321 46 【数据范围】 A一定是个四位数。 【分析】 先把A的个位、十位、百位、千位分解出来存在变量,a,b,c,d中,然后完成任务: 任务1:a+b+c+d 任务2:a*1000+b*100+c*10+d 任务3:b*10+a + d*10+c 分解A的各位方法: A=1234 个位:a=1234 十位:a=1234/10 百位:a=1234/100 千位:a=1234/1000 例5:加法竖式 给出一个三位数A和一个两位数B,请你按样例给出的格式输出A+B的竖式格式。 【输入】 第 1 行:三位整数A; 第5页 高2015级信息学竞赛培训资料 第 2 行:两位整数B; 【输出】 第1行:整数A,前空3格; 第2行:首先输出'+',然后是整数B,前空3格; 第3行:输出横线'--------'; 第4行:输出A+B的值,要求必须于A和B的各位数字对齐; 【样例】 652 10 652 + 10 -------- 662 【数据范围】 100 <= A < 1000 10 <= B < 100 【分析】 设C=A+B;则按格式输出加法竖式。用printf函数的宽度控制。 例6、变量交换 输入两个整数a和b,交换二者的值,然后输出。(用赋值运算完成) 【输入】 第 1 行:两个整数a和b。 【输出】 输出这两个整数交换过后的值。 【样例】 824 16 a=16 b=824 【分析】 a为醋瓶子,b为酱油瓶子,怎么这两个瓶子中的内容交换。 课后练习 在线题库P1000~P1012 第6页 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库程序设计讲稿3——数据的输入输出在线全文阅读。
相关推荐: