C语言学习第六节-格式化输入、第三个c语言程序 2020-04-04 06:24 阅读 312 次 评论 0 条 索引1 上节回顾2 实例3 归纳4 本文代码存储:5 超纲交流 上节回顾 上一节写到了运算符号与运算的逻辑(非逻辑运算),通过表达式给变量赋值并进行一个简单实例的创建。这一节将在更实际的应用上对上节的实例做改写。 上节代码: //需要计算三个整数的平均数 #include <stdio.h> int main() { int a,b,c; //定义三个变量 double average; //定义平均数变量 //赋值开始 a = 2; b = 5; c = 7; //赋值结束 average = (a+b+c)/3.0; //通过计算,得出average的值 printf("a,b,c三个数的平均数是%0.2f(保留小数点后两位)\n", average); return 0; } 好像是没问题了,但是不太符合实际所需。 为什么这么说呢,因为每次要做计算之前都要先改代码(更改变量的值),还要重新编译运行。所以这一节就是如何手动输入数值来实现平均数的计算。 实例 要求:在编译完成后,通过输入数字来计算。 实例思路 第一。还是要考虑数据类型,这次默认输入的还是整型,但是后面会改成浮点型。所以先用int定义,而且当然还要分别赋值。 //在编译完成后,通过输入数字来计算。 #include <stdio.h> int main() { int a = 0; int b = 0; int c = 0; return 0; } 这样写也不是不可以,但是会觉得臃肿。这里先用一个简单的写法,暂时不需要记忆,也不需要理解,因为如果是用sublime编辑器,输入main直接按回车就会自动补全。当然其它主流编辑器基本都会支持,比如atom就自带c语言代码的补全,不自带的vs code也可以通过安装插件来做到。 //在编译完成后,通过输入数字来计算。 #include <stdio.h> int main(int argc, char const *argv[]) { int a,b,c; //因为三个变量都是一个类型,所以int后面可以一次定义完,变量中间用逗号隔开 printf("%d\n",a); //直接输出a的值,会发现是0,而不是一个随机无规律的地址。 return 0; } 暂时是不需要记忆int argc, char const *argv[]的编写,也不需要理解含义,随后会单独写一篇。 第二。既然是要做输入,就需要使用输入的函数,在C语言里用的是scanf,scanf并不是一个单词,就像输出用的printf一样。scan format格式化输入,print format格式化输出,这样就对了。 //在编译完成后,通过输入数字来计算。 #include <stdio.h> int main(int argc, char const *argv[]) { int a,b,c; scanf("%d %d %d",&a,&b,&c); return 0; } 回顾使用printf输出整型变量a的写法 printf("%d",a); 对比使用scanf输入赋值给变量a的写法 scanf("%d",&a); 唯一不同处是输入的语法,在输入语句中,变量a前面多了and符 &,在C语言里叫取址符。&a就是表示变量a的地址。那么按照实例需要输入三个数字。即 //在编译完成后,通过输入数字来计算。 #include <stdio.h> int main(int argc, char const *argv[]) { int a,b,c; scanf("%d %d %d", &a, &b, &c); //最好有逗号隔开,其实没有也没关系,但是在合适处加上空格会使代码看起来更整洁。 return 0; } 第三。编译运行看看会发生什么。 首先我用sublime发现控制台里没有结果,这是因为sublime毕竟作为轻量编辑器还是功能有限(不支持scanf输入)。所以用命令行咯。 提示:scanf会取对应的输入给变量赋值。 这个意思就是:需要给三个变量赋值 输入一个数后按回车,并不会打断输入。 输入两个数按回车,也不会打断输入。 空格或回车代表输入完成了一个数。 输入三个数后按回车,输入完成,执行下一行代码。 第四。这相当于上一节里赋值操作完成了,接下来要进行的是计算和输出。不过先不急,可以先输出a,b,c的值。 //在编译完成后,通过输入数字来计算。 #include <stdio.h> int main(int argc, char const *argv[]) { int a,b,c; scanf("%d %d %d", &a, &b, &c); printf("a=%d b=%d c=%d\n", a, b, c); return 0; } 第五。定义average并赋值,输出average的结果(保留小数点后两位)。 //在编译完成后,通过输入数字来计算。 #include <stdio.h> int main(int argc, char const *argv[]) { int a,b,c; scanf("%d %d %d", &a, &b, &c); printf("a=%d b=%d c=%d\n", a, b, c); double average = (a+b+c)/3.0; //定义average的时候直接赋值,赋的值是一个表达式,表达式计算了a,b,c的平均数 printf("%0.2f",average); return 0; } 回顾上节定义与赋值average的方式 double average; average = (a+b+c)/3.0; 对比本节定于与赋值average的方式 double average = (a+b+c)/3.0; 一行写完也没什么问题,这种简略的写法我觉得也不影响理解,也是规范的写法。编译看下结果: 第六:做一些优化。 第七:再深入些考虑实际应用,如果输入的数字也是小数呢。首先a,b,c的数据类型就也要是浮点型。 //在编译完成后,通过输入数字来计算。 #include <stdio.h> int main(int argc, char const *argv[]) { double a,b,c; printf("请输入三个数字,数字之间使用空格隔开\n"); scanf("%lf %lf %lf", &a, &b, &c); printf("输入的三个数字分别是%0.2f %0.2f %0.2f\n", a, b, c); double average = (a+b+c)/3.0; printf("通过计算,这三个数的平均数是%0.2f\n",average); return 0; } tips:这里scanf又要用double类型的输入格式lf 归纳 int类型与double类型在输入与输出时的格式符如下: scanf printf int %d %d double %lf %f 上一篇:C语言学习第五节-表达式、第二个c语言程序 下一篇:C语言学习第七节-判断、第四个c语言程序 本文代码存储: https://yaozi.org/Code/wenroudeye.com/C/C-6 超纲交流 尽管没人交流,该想还得想一个 如果把scanf分开,应该怎么写 (4 次评分, 平均分: 4.75 out of 5)Loading... 版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持! 转载请注明:C语言学习第六节-格式化输入、第三个c语言程序 | 温柔的夜 分类:C语言 标签: