C语言程序设计 现代设计方法_第3章代码、练习题及编程题答案

代码

3.1 tprintf.c
程序  用printf 函数格式化数
下面的程序举例说明了用printf 函数以各种格式显示整数和浮点数的方法。

/* Prints int and float values in various formats */
#include <stdio.h>
int main(void)
{
   
	int i;
	float x;
	i = 40;
	x = 839.21f;
	printf("|%d|%5d|%-5d|%5.3d|\n", i, i, i, i);
	printf("|%10.3f|%10.3e|%-10g|\n", x, x, x);
	return 0;
}

在显示时,printf 函数格式串中的字符| 只是用来帮助显示每个数所占用的空格数量;不同于% 或\ ,字符| 对printf 函数而言没有任何特殊意义。此程序的输出如下:
|40| 40|40 | 040|
| 839.210| 8.392e+02|839.21 |
下面仔细看一下上述程序中使用的转换说明。
%d ——以十进制形式显示变量i ,且占用最少的空间。
%5d ——以十进制形式显示变量i ,且至少占用5个字符的空间。因为变量i 只占两个字符,所以添加了3个空格。
%-5d ——以十进制形式显示变量i ,且至少占用5个字符的空间。因为表示变量i 的值不需要用满5个字符,所以在后续位置上添加空格(更确切地说,变量i 在长度为5的字段内是左对齐的)。
%5.3d ——以十进制形式显示变量i ,且至少占用5个字符的空间并至少有3位数字。因为变量i 只有2个字符长度,所以要添加一个额外的零来保证有3位数字。现在只有3个字符长度,为了保证占有5个字符,还要添加2个空格(变量i 是右对齐的)。
%10.3f ——以定点十进制形式显示变量x ,且总共用10个字符,其中小数点后保留3位数字。因为变量x 只需要7个字符(即小数点前3位,小数点后3位,再加上小数点本身1位),所以在变量x 前面有3个空格。
%10.3e ——以指数形式显示变量x ,且总共用10个字符,其中小数点后保留3位数字。因为变量x 总共需要9个字符(包括指数),所以在变量x 前面有1个空格。
%-10g ——既可以以定点十进制形式显示变量x ,也可以以指数形式显示变量x ,且总共用10个字符。在这种情况下,printf 函数选择用定点十进制形式显示变量x 。负号的出现强制进行左对齐,所以有4个空格跟在变量x 后面。

3.2 addfrac.c
程序  分数相加
为了显示scanf 函数的模式匹配能力,考虑读入由用户键入的分数。分数通常的形式为分子/分母 。scanf 函数允许读入整个分数,而不用将分子和分母视为两个整数分别读入。下面的分数相加程序体现了这一方法。

/* Adds two fractions*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
   
	int num1, denom1, num2, denom2, result_num, result_denom;

	printf("Enter first fraction: ");
	scanf("%d/%d", &num1, &denom1);
	printf("Enter second fraction: ");
	scanf("%d/%d", &num2, &denom2);

	result_num = num1 * denom2 + num2 * denom1;
	result_denom = denom1 * denom2;

	printf("The sum is %d/%d\n", result_num, result_denom);

	return 0;
}

注意,结果并没有化为最简分数

练习题

  1. 下面的printf 函数调用产生的输出分别是什么?
  (a) printf("%6d,%4d", 86, 1040);
  (b) printf("%12.5e", 30.253);
  (c) printf("%.4f", 83.162)
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值