C程序设计内容与例题讲解 -- 第三章第三部分(第五版)谭浩强

简介: C程序设计内容与例题讲解 -- 第三章第三部分(第五版)谭浩强

3.1数据的输入输出

3.1.1输入输出举例

前面我们已经学习了利用printf函数进行数据输出的程序,现在再介绍一个包含输入和输出的程序 。

例题:求ax²+bx+c=0(a≠0) 方程的根。a、b、c、由键盘输入,设b ^ 2 - 4ac > 0。

解题思路:首先要知道求方程式根的方法。由数学知识已知,求b ^ 2 - 4ac ≥ 0,则方程有俩个实根:x= [-b±√ (b²-4ac)]/2a


有了这些式子我们就知道,只需要知道a、b、c的值就可以输出根的值了。需要用scanf函数输入a,b,c的值再用printf函数打印两根的值就行了。

int main()
{
  double a = 0.0;
  double b = 0.0;
  double c = 0.0;
  double x1 = 0.0;
  double x2 = 0.0;
  double p = 0.0;
  scanf("%lf%lf%lf", &a, &b, &c);
  p = b * b - 4 * a * c;
  x1 = (-b + sqrt(p)) / (2 * a);
  x2 = (-b - sqrt(p)) / (2 * a);
  printf("x1 = %4.2f\nx2 = %4.2f\n", x1, x2);
  return 0;
}

运行结果:

程序分析:

用scanf函数输入a,b,c的值,请注意再scanf函数括号内变量a,b,c的前面,要用地址符&,即&a,&b,&c。&a表示变量a在内存中的地址。该scanf函数表示从终端输入3个数据分别送到地址为&a,&b,&c的存储单元,也就是赋给变量a,b,c。双撇号内用%lf格式声明,表示输入的是双精度型实数。关于scanf的具体用法和作者也在之前的文章中讲解过,有感兴趣的可以点这个链接:关于scanf和EOF的应用

3.1.1.2有关数据输入输出的概念

从前面的程序可以看到:几乎每一个C程序都包含输入输出。因为要进行运算,就必须给出数据,而运算的结果当然需要输出,以便人们应用。没有输出的程序是没有意义的,输入输出是程序最基本的操作之一。

①所谓输入输出是以计算机为主体而言的。从计算机向输出设备(如显示器、打印机等)输出数据称为输出,从输入设备(如键盘、光盘等)向计算机输入数据称为输入。

②C语言本身不提供输入输出语句,输入和输出操作是由C标准函数库中的函数来实现的。在C标准函数库中提供了一些输入输出函数,例如printf函数和scanf函数。读者在使用它们时,千万不要误认为它们是C语言提供的"输入输出语句",

③要在程序文件的开头用预处理指令#include把有关头文件放在本程序中

3.1.1.3用printf函数输出数据

printf函数的一般格式
printf(格式控制,输出表列)

格式控制"是用双撇号括起来的一个字符串,称为格式控制字符串,简称格式字符串。它包含俩个信息:

格式声明。格式声明由”%“和格式字符组成,如%d、%f等。它的作用是将输出的数据转换为知道的格式后输出。格式声明总是由”%"字符开始的。

  1. 普通字符。普通字符即需要在输出时原样输出的字符。
  2. 输出表列是程序需要输出的一些数据,可以是常量、变量或表达式。
    下面是printf函数的具体例子:

3.1.1.3.1格式字符

  • d格式字符。用来输出一个有符号的十进制整数。

注:可以在格式声明中指定输出数据的域宽(所占列数),如用"%5d",指定输出数据占5列。

  • c格式符。用来输出一个字符,也可以指定域宽。且一个整数,如果在0~127范围中,也可以用"%c"使之按字符形式说粗话,在输出前,系统会将该整数作为ASCII码转换成相应的字符;
  • s格式符。用来输出一个字符串。
  • f格式符。用来输出实数(包括单、双精度、长双精度),以小数形式输出,有几种用法:
    ①基本型,用%f不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数。系统一般的处理方法是:实数的整数部分全部输出,小数部分输出6位。
    ②指定数据宽度和小数位数,用%m.nf
    如:printf("%20.15f\n",1.0 / 3);这里输出的小数位是15位,宽度是20
  • 输出的数据向左对齐,用%-m.nf
    在m.n的前面加一个负号,其作用与%m.nf形式作用基本相同,但当数据长度不超过m时,数据向左靠齐,右端补空格。如:printf("%-25.15f,%25.15f\n",1.0/3,1.0/3);
  • e格式符。用格式声明%e指定以指数形式输出实数。如果不指定输出数据所占的宽度和数字部分的小数位数,许多C编译系统会自动给数字部分的小数位数为6,指数部分占5列。
  • 其它格式符

①i格式符。作用与d格式符相同,按照十进制整数的数据的实际长度输出,一般用%d很用%i

②o格式符。以八进制整数形式输出。将内存单元中的各位的值(0或1)按八进制形式输出,因此输出的数值不带符号,即符号位也一起作为八进制数的一部分输出

③x格式符。以16进制形式输出整数。

  • ④u格式符。用来输出无符型数据,以十进制整数的形式输出
    ⑤g格式符。用来输出浮点数,系统自动选f格式或e格式输出,选择其中长度较短的格式,不输出无意义的0

3.1.2字符输入输出函数

除了可以用printf函数和scanf函数输出和输入字符外,C库函数还提供了一些专门用于输入和输出字符的函数。

3.1.2.1 putchar函数

putchar函数的一般形式为:

putchar(c); //作用是输出字符变量c的值,显然输出的是一个字符

例题:定义三个字符变量分别赋以初始值’B’,‘O’,‘Y’,然后用putchar函数输出这3个字符变量的值。

int main()
{
  char a = 'B';
  char b = 'O';
  char c = 'Y';
  putchar(a);
  putchar(b);
  putchar(c);
  return 0;
}

运行结果:

注:putchar函数是输出字符的函数,它输出的是字符而不能输出整数。

3.1.2.2 getcahr函数

为了向计算机输入一个字符,可以调用系统库函数中的getchar函数(字符输入函数)。

getchar一般形式为:

getchar();//输入一个字符,计算机获得一个字符。
//getchar函数的作用就是从输入设备得到一个字符

例题:用getchar函数得到的字符赋给一个变量或整型变量,也可以不赋给任何变量。

int main()
{
  putchar(getchar());
  putchar(getchar());
  putchar(getchar());
  return 0;
}

运行结果:


相关文章
|
6月前
|
C语言
C程序设计内容与例题讲解 -- 第四章--选择结构程序设计(第五版)谭浩强
C程序设计内容与例题讲解 -- 第四章--选择结构程序设计(第五版)谭浩强
113 1
|
6月前
|
存储 C语言
C程序设计内容与例题讲解 -- 第三章第二部分(第五版)谭浩强
C程序设计内容与例题讲解 -- 第三章第二部分(第五版)谭浩强
|
6月前
|
存储 移动开发 C语言
# C程序设计内容与例题讲解 -- 第三章第一部分(第五版)谭浩强
# C程序设计内容与例题讲解 -- 第三章第一部分(第五版)谭浩强
|
6月前
|
C语言
C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强
C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强
|
6月前
|
算法 调度
C程序设计内容与例题讲解 -- 第二章(第五版)谭浩强
C程序设计内容与例题讲解 -- 第二章(第五版)谭浩强
|
6月前
|
自然语言处理 Java C#
C程序设计内容与例题讲解 -- 第一章(第五版)谭浩强
C程序设计内容与例题讲解 -- 第一章(第五版)谭浩强
[课后习题]C Primer Plus【第六版】编程练习 第一章
[课后习题]C Primer Plus【第六版】编程练习 第一章
|
机器学习/深度学习 存储 人工智能
C语言程序设计第五版谭浩强课后答案 第五章习题答案(3-17题)
C语言程序设计第五版谭浩强课后答案 第五章习题答案(3-17题)
|
存储 算法
【不就是C程序设计习题嘛】— 第二章:算法----程序的灵魂(1)
【不就是C程序设计习题嘛】— 第二章:算法----程序的灵魂(1)
184 0
【不就是C程序设计习题嘛】— 第二章:算法----程序的灵魂(1)
|
算法 关系型数据库
【不就是C程序设计习题嘛】— 第二章:算法----程序的灵魂(2)
【不就是C程序设计习题嘛】— 第二章:算法----程序的灵魂(2)
181 0