C语言程序设计现代方法第二版修订版第三章课后题答案1

文章详细解释了C语言中的printf函数调用的格式控制,涉及不同格式字符串的使用,如宽度、对齐方式和精度,以及scanf函数的输入匹配。还讨论了scanf中的格式串等价性和处理分数输入时考虑空格的问题。
摘要由CSDN通过智能技术生成

3.1 节

1. 下面的printf函数调用产生的输出分别是什么?

(a) printf("%6d,%4d", 86, 1040);

(b) printf("%12.5e", 30.253);

(c) printf("%.4f", 83.162);

(d) printf("%-6.2g", .0000009979);

    86,1040
3.02530e+001
83.1620
1e-006

#include<stdio.h>
int main()
{
    printf("%6d,%4d", 86, 1040);
    printf("%12.5e", 30.253);
    printf("%.4f", 83.162);
    printf("%-6.2g", .0000009979);
    return 0;
}

 2. 编写printf函数调用,以下列格式显示float型变量x。

(a) 指数表示形式,栏宽 8,左对齐,小数点后保留 1 位数字。

(b) 指数表示形式,栏宽 10,右对齐,小数点后保留 6 位数字。

(c) 定点十进制表示形式,栏宽 8,左对齐,小数点后保留 3 位数字。

(d) 定点十进制表示形式,栏宽 6,右对齐,小数点后无数字。

#include<stdio.h>
int main(void)
{
    float x = 4.29;
    printf("%-8.1f\n",x);
    printf("%10.6f\n",x);
    printf("%-8.3f\n",x);
    printf("%6.0f\n",x);
    return 0;
}

3.2 节

3. 说明下列每对scanf格式串是否等价?如果不等价,请指出它们的差异。

(a) "%d"与" %d"。

(b) "%d-%d-%d"与"%d -%d -%d"。

(c) "%f"与"%f "。

(d) "%f,%f"与"%f, %f"。

出现空格的地方需要在用户输入界面有与之对应的空格,否则直接返回。

4. 假设scanf函数调用的格式如下:
scanf("%d%f%d", &i, &x, &j);
如果用户输入
10.3 5 6
调用执行后,变量i、x和j的值分别是多少?(假设变量i和变量j都是int型,变量x是float型。)

#include<stdio.h>
int main()
{
    float x = 0;
    int i = 0;
    int j = 0;
    printf("input:\n");
    scanf("%d%f%d\n", &i, &x, &j);
    printf("%d\n%f\n%d\n",i, x, j);
    return 0;
}

运行结果:

input:
10.3 5 6
10
0.300000
5

答:执行后  i,x,j分别是10 ,0.300000,5。

5. 假设scanf函数调用的格式如下:
scanf("%f%d%f", &x, &i, &y);
如果用户输入
12.3 45.6 789
调用执行后,变量x、i和y的值分别是多少?(假设变量x和变量y都是float型,变量i是int型。)

#include<stdio.h>
int main()
{
    float x = 0, y = 0;
    int i = 0;
    printf("input:\n");
    scanf("%f%d%f", &x, &i, &y);
    printf("x = %f\ni = %d\ny = %f", x, i, y);
    return 0;
}

执行结果:

input:
12.3 45.6 789
x = 12.300000
i = 45
y = 0.600000

6. 指出如何修改 3.2 节中的 addfrac.c 程序,使用户可以输入在字符/的前后都有空格的分数。

/* Adds two fractions */

#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("%d\n%d\n",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;
}

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值