《轻院c语言基础》由会员分享,可在线阅读,更多相关《轻院c语言基础(35页珍藏版)》请在金锄头文库上搜索。
1、C程序设计,本章目标,掌握标准输入输出函数的格式及使用。 会编写简单C程序 会使用常用数学函数,3.1语句,语句是程序最基本的执行单位,程序的功能就是通过对一系列语句的执行来实现的 (1)控制语句,实现流程控制,如:分支语句实现分支控制过程 : if (a b) x = a; else x = b; (2)变量声明语句:如float x,y,z; (3)表达式语句:表达式加分号“;” (4)复合语句:用一对“ ”,将若干语句顺序组合在一起就形成了一个程序段。 (5)空语句。只有一个分号构成的语句,表示什么也不做。,3.2 标准文件输入输出函数,一个C语言的源程序要有输入输出功能。 C语言本身并
2、没有提供专门的数据输入/输出语句,而是用C标准函数库中的函数来实现的,如scanf、printf等。 在使用标准的输入/输出库函数时,需要使用预编译命令”#include” C语言中从标准输入和输出设备中进行读写的四个标准函数是:格式输出函数printf、格式输入函数scanf、字符输入函数getchar和字符输出函数putchar,3.2.1 字符输入输出函数,例3.1 猜字母:输入某字母在字母表中的序号(从1开始),输出该字母(大写),#include int main() char ch; int index; scanf(“%d”, ,putchar( ch );,putchar()函
3、数的其功能是向终端输出其括号内参数的内容,参数可以是字符变量、字符常量,输出字符a:putchar( a ); 输出一个回车符putchar( n ); 输出字符变量a的值:putchar( a ); 猜猜:putchar( 65 );输出什么? 到VC中试试,3.2.1 字符输入输出函数,例3.2 小写字母变大写,#include int main() char ch1, ch2;ch1=getchar( );ch2=ch1-32; /小写字母比大写字母的ASCCI码大32;putchar(ch2); ,getchar()函数没有参数,其功能是从终端读入一个字符,作为函数值返回,小练习,计算
4、字母序号,输入一个字母(小写),输出该字母在字母表中的序号,(1)读入字符ch; (2)计算序号index=ch-a+1; (3)输出整数index,char ch; int index; ch=getchar(); index=ch-a+1; printf(“%dn”,index);,3.2.2格式化输出函数printf,printf( “%d“ , count);,格式:printf(“格式控制串”,输出参数表),#include int main( ) int celsius, fahr;fahr=100;celsius=5*(fahr-32)/9;printf(“fahr=%d, ce
5、lsius=%dn“, fahr, celsius);return 0; ,执行程序的输出结果为:fahr=100, celsius=37,例3.3 求华氏温度100F对应的摄氏温度,引号内的fahr和引号外的fahr有区别吗?,输出格式,printf(“fahr=%d , celsius=%dn“, fahr, celsius);,普通字符,原样输出,%开头的是转换说明,对应与后面一个输出参数,对应参数将被转换成指定格式后在该位置输出,输出结果: fahr=100, celsius=37,输出参数列表,n是转意字符,用来输出一个回车,转换字符串,printf( “%d“ , count);,
6、“%d“,转换字符串%d,int visitor_count = 150; printf (“ %d“ , visitor_count);,输出结果:150,转换字符串%md,int salary = 5500; printf (“ %10d“ , salary);,输出结果: 5500,输出结果的左边显示了 6 个空格,“ %10d“,转换字符串%f,float circumference = 78.53; printf (“ %f“ , circumference);,输出结果:78.530000,默认情况下精确到六位小数,9.4786789;,9.478679,转换字符串%m.nf,do
7、uble mercury_level = 168.2251074; printf( “%7.2f“ , mercury_level);,输出结果: 168.23,宽度,表示所有的数字和小数点所占的位数。不够7位右对齐。,“ %7.2f“,精度(精确到小数点后多少位),scanf(“%d“,3.2.3 scanf 函数,scanf 函数从标准输入(键盘)读取信息,按照格式描述把读入的信息转换为指定数据类型的数据,并把这些数据赋给指定的程序变量。,转换字符串,&符号(附在读取的每个变量上)用于指明变量在内存中的位置,变量的名称,内存,scanf,float tax_rate; scanf (“%f
8、“ , ,tax_rate,在内存中分配一块 32 位存储空间 存储空间使用名称“tax_rate”标识,提示用户输入一个值 输入的值存储在变量中(因为 scanf 提供此变量的地址),12.234,内存,scanf,double tax_rate; scanf (“%lf“ , ,tax_rate,在内存中分配一块 64 位存储空间 存储空间使用名称“tax_rate”标识,提示用户输入一个值 输入的值存储在变量中(因为 scanf 提供此变量的地址),12.234,约定:以后凡说要定义实型变量,都使用double,#include int main() double radius,high
9、,vol;printf(“请输入圆柱体底面积的半径和圆柱体的高: “);scanf(“%lf%lf“, ,例3.4计算圆柱体积,5,10,785,请输入圆柱体底面积的半径和圆柱体的高: 5 10,小练习,(1)编程,从键盘读入一个数圆的半径radius(实数),输出圆的面积,保留两位小数,scanf函数使用注意,scanf(格式字符串,地址列表) 在格式字符串中若有普通字符,则输入时在对应位置也必须输入该普通字符,否则会因读入格式错误而终止程序。 如果有scanf(“%d,%d”, &a, &b) 输入的两个数直接必须有一个逗号 3,5 正确 3 5 错误 如果有scanf(“a=%d,b=%
10、d”, &a, &b) 输入应该是:a=3,b=5,否则就会失败,scanf的格式字符串中最好不加任何普通字符,只写%开头的格式转换符。如scanf(“%d%d”, &a, &b),不要给自己制造太多格式限制!,数学函数的使用,要包含头文件: #include 1、求绝对值 求整数的绝对值,用abs: int i=-3,j; j=abs(i); 求实数的绝对值,用fabs: double a=-12.3,b; b=fabs(a);,数学函数的使用,2、求开方,用sqrt double a=2.3,b; b=sqrt(a); 3、求幂xy,用pow double x=2,y=3,z; z=pow
11、(x,y) 4、求ex,用exp double x=2.3,b; y=exp(x);,数学函数的使用,5、求自然对数,用log double x=13,y; y=log(x); 6、求以10为底的对数,用log10 double x=13,y; y=log10(x);,数学函数的使用,7、三角函数 double x=1.5, y; y=sin(x); y=cos(x); y=tan(x);,更多数学函数见书本319页表D2,例3.5:计算两点间距离,编程: 输入4个实数x1,y1,x2,y2,数据之间用空格隔开。表示两点坐标(x1,y1),(x2,y2),计算并输出两点间的距离。结果保留两位小
12、数。 (提示: sqrt(a)可以求a的开方),解题思路,(1)用double定义x1,y1,x2,y2,dist (2)读入四个整数x1,y1,x2,y2 (3) 计算dist: dist=sqrt( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) ) 也可以写成两个语句: dist=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); dist=sqrt(dist); (4)输出dist,保留2为小数,用%.2f,程序,#include #includeint main() double x1,y1,x2,y2,dist;scanf(“%lf%lf%lf%l
13、f“, ,例3.6 求整数的位数,输入一个整数,输出该整数的位数。 提示: (1)求n的对数函数为:log10(n); (2)考虑一个整数的对数和位数的关系:对数取整加1即该数的位数 (3)可用强制类型转换扔掉小数部分 有以上3点可知,整数n的位数是: (int )log10(n)+1;,类型转换(P32),1、不同级别的操作数运算时,精度低的自动想精度高的转换 如: double a=1/2; a的值是0.0double a=1.0/2; a的值是0.52、赋值时类型转换 如:double a=1;/会把1.0赋给aint i=1.5;/会把1.5转换为整型得1,赋给i,类型转换,3、 强制
14、类型转换(类型名)操作数 如:double a=2.5;int n;n=(int)a; /将a的值转换为整型2,赋给n 又如:求两整数的商,商为实数int a=2,b=3; double c;c=(double)a/b; /强制类型转换或 c=1.0*a/b; /不同类型运算时向精度高的转换,先将a转换为实数,再除以b!强制转换优先级最高,例3.6的程序,#include #includeint main() int n,len;scanf(“%d“, ,课下作业,熟练默写本章6个例子,并上机调试。,上机作业:,1、实数的绝对值:输入一个实数,输出它的绝对值,结果保留两位小数。 2、两点间距离
15、:输入4个实数x1,y1,x2,y2,数据之间用空格隔开。表示两点坐标(x1,y1),(x2,y2),计算并输出两点间的距离。结果保留两位小数。 3、编程,输入三角形的三边长(实数),输出三角形的面积,结果保留两位小数。 (提示:用海伦公式)。 4、编程,输入一元二次方程ax2+bx+c=0的系数a,b,c,假定满足b2-4ac0,输出方程的两个根。结果保留两位小数。,5、输入一个大写字母,输出该字母在字母表中的序号(A的序号为1) 6、输入3个字符,输出其中ASCII码最大的一个。(注意:用getchar()或%c读入时,空格和回车都是有效输入) 7、输入一个整数,输出该整数的位数。 8、水仙花数定义如下:如果一个三位数的各位数字的立方和等于自身,则称该数为水仙花数。编程,输入一个三位数,判断该数是否是水仙花数,如果是,输出”yes”,否则输出”no 提示:n的个位:n%10 n的十位: (n%100)/10n的百位:n/100 /n是三位数时可以这样求n的百位: (n%1000)/100 /此式通用,