C语言学习第六节-格式化输入、第三个c语言程序

2020-04-04 06:24 阅读 56 次 评论 0 条

上节回顾

上一节写到了运算符号与运算的逻辑(非逻辑运算),通过表达式给变量赋值并进行一个简单实例的创建。这一节将在更实际的应用上对上节的实例做改写。

上节代码:

//需要计算三个整数的平均数
#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

 

超纲交流

尽管没人交流,该想还得想一个

  1. 如果把scanf分开,应该怎么写
嘤嘤嘤嘤嘤呜呜呜呜呜叭叭叭叭叭嘿嘿嘿嘿嘿哟哟哟哟哟 (4 次评分, 平均分: 4.75 out of 5)
Loading...
版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:C语言学习第六节-格式化输入、第三个c语言程序 | 温柔的夜
分类:C语言 标签:

发表评论


表情