上次作业中的问题 数据类型声明(定义)不正确 float a,b,h, s sum? scant语句格式不正确 scanf(%f%f%f", &a, &b, &h: ■输入数据时一定要按照上面的格式输入数据 scanf(%f, %f, %f", &a, &b, &h): 缺少符号或多了符号或者符号写得有错 误
1 上次作业中的问题 ▪ 数据类型声明(定义)不正确 ▪ float a,b,h,s; ▪ sum? ▪ scanf()语句格式不正确 ▪ scanf(“%f%f%f” ,&a,&b,&h); ▪ 输入数据时一定要按照上面的格式输入数据 ▪ scanf(“%f,%f,%f” ,&a,&b,&h); ▪ 缺少符号或多了符号或者符号写得有错 误
第3讲 简单C程序设计之二 多函数程序设计
第3讲 ▪简单C程序设计之二 ▪多函数程序设计
编写求梯形7·若abh分别是12,3,结 # include<stdo.h》 若全部数据类型都是f|oat s=1/2*(a+b)h的结果又会 void maino 怎样? ·s=0.000000 int a.b. h: 因为1/2中的两个常数都是 整数,结果仍是整数,为0, float s, 再继续进行运算,结果仍为 printf( please inp 0。 scanf(od %d 要想得到正确结果,要 s=(a+b)2: s=(fo)1/2(a+b)h(强行 将1转换成 float类型)或 printf"s=%f\n s=1.0/2*(a+b)h因为第 个数据是实数类型,其他 的运算结果一律自动转换成 double类型)
3 编写求梯形面积的程序 #include <stdio.h> void main() { int a,b,h; float s; printf(" please input a,b,h: "); scanf("%d%d%d", &a, &b, &h); s= (a+b)*h/2; printf(" s=%f\n", s); } • 若a,b,h分别是1,2,3,结 果会怎样? • s=4.000000 • 为什么? • 因为右边的数据都是整型数, 所以计算结果也是整型了。 • 要想得到正确结果就需要将 所有数据改为float类型。 • 若全部数据类型都是float, s=1/2*(a+b)*h的结果又会 怎样? • s=0.000000 • 因为1/2中的两个常数都是 整数,结果仍是整数,为0, 再继续进行运算,结果仍为 0。 • 要想得到正确结果,要 s=(float)1/2*(a+b)*h(强行 将1转换成float类型)或 s=1.0/2*(a+b)*h(因为第 一个数据是实数类型,其他 的运算结果一律自动转换成 double类型)
涉及到的语法知识 数据类型的自动转换和强制转换 当表达式中的数据类型不一致时 数据类型的自动转换 方向:char+int7t 数据类型 值得注意的是: 不要让这种转换导致计算上的错误 s 呢? 娅值叮1A∠转的问题 to ]: upper=lower -32: int a=4.5
4 涉及到的语法知识 -数据类型的自动转换和强制转换 ▪ 当表达式中的数据类型不一致时 ▪ 数据类型的自动转换 ▪ 方向:char→int→float→double ▪ 数据类型的强制转换 ▪ 在表达式前加(数据类型) ▪ 例:s=(float)1/2*(a+b)*h ▪ s=(float)(1/2)*(a+b)*h的结果呢? ▪ 赋值时也存在类型转换的问题 ▪ 例:upper=lower-32; int a=4.5; 值得注意的是: 不要让这种转换导致计算上的错误!
再例:把从键盘上输入的小 之丹掀成+之社输 源代码如下: include <stdio. h> void maino char lower, upper; printf(" please input an lowercase: " scanf(“‰%c”,& klower) uper= :lower-32:/char与int数据间可进行算术 运算 printf(“lwer:%d→ upper:%d\n", lower, upper)
5 再例:把从键盘上输入的小 写字母换成大写字母并输出。 ▪ 如何转换? ▪ 将小写字母的ASCII码减32即得大写字母 的ASCII码。 ▪ 算法: ▪ 输入小写字母lower ▪ 计算其对应的大写字母upper ▪ 输出upper. 源代码如下: #include <stdio.h> void main() { char lower,upper; printf(“please input an lowercase:”); scanf(“%c”, &lower); upper=lower-32; /* char与int数据间可进行算术 运算*/ printf(“lower:%c→upper:%c\n", lower,upper); } printf(“lower:%d→upper:%d\n", lower,upper);