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

文章目录

  • 3.1数据的输入输出
    • 3.1.1输入输出举例
      • 例题:求ax²+bx+c=0(a≠0) 方程的根。a、b、c、由键盘输入,设b ^ 2 - 4ac > 0。
    • 3.1.1.2有关数据输入输出的概念
    • 3.1.1.3用printf函数输出数据
      • 3.1.1.3.1格式字符
    • 3.1.2字符输入输出函数
      • 3.1.2.1 putchar函数
      • 3.1.2.2 getcahr函数

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;
}

运行结果:C程序设计内容与例题讲解 -- 第三章第三部分(第五版)谭浩强_第1张图片

程序分析:

用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(格式控制,输出表列)
  1. 格式控制"是用双撇号括起来的一个字符串,称为格式控制字符串,简称格式字符串。它包含俩个信息:
    格式声明。格式声明由”%“和格式字符组成,如%d、%f等。它的作用是将输出的数据转换为知道的格式后输出。格式声明总是由”%"字符开始的。
    普通字符。普通字符即需要在输出时原样输出的字符。

  2. 输出表列是程序需要输出的一些数据,可以是常量、变量或表达式。
    下面是printf函数的具体例子:
    C程序设计内容与例题讲解 -- 第三章第三部分(第五版)谭浩强_第2张图片

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;
}

运行结果:C程序设计内容与例题讲解 -- 第三章第三部分(第五版)谭浩强_第3张图片

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

3.1.2.2 getcahr函数

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

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

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

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

运行结果:C程序设计内容与例题讲解 -- 第三章第三部分(第五版)谭浩强_第4张图片

你可能感兴趣的:(C程序设计谭浩强版本,c语言,开发语言)