C Primer Plus 第4章 字符串和格式化输入输出 4.8 编程练习

C Primer Plus

在这里插入图片描述

第4章 字符串和格式化输入输出

4.8 编程练习
  1. 编写一个程序,提示用户输入名和姓,然后以“名,姓”的格式打印出来。
//
// Created by DingJiaxiong on 2023/2/5.
// 【第4章的编程练习1】
#include <stdio.h>

int main(void) {

    char name[40];
    char surname[40];

    printf("Please input your first name: ");
    scanf("%s", name);

    printf("Please input your last name: ");
    scanf("%s", surname);

    printf("Hello, %s, %s", name, surname);

    return 0;

}

运行结果

在这里插入图片描述

  1. 编写一个程序,提示用户输入名字,并执行以下操作:

a.打印名字,包括双引号;

b.在宽度为20的字段右端打印名字,并包括双引号;

c.在宽度为20的字段左端打印名字,并包括双引号:

d.在比姓名宽度长3的字段中打印名字。

//
// Created by DingJiaxiong on 2023/2/5.
// 【第4章的编程练习2】
#include <stdio.h>

int main(void) {

    char name[40];
    int width;

    printf("Please input your name: ");
    scanf("%s", name);

    width = printf("\"%s\".\n", name);
    width -= 4;
    printf("\"%20s\".\n", name);
    printf("\"%-20s\".\n", name);
    printf("\"%*s\".", (width + 3), name);

    return 0;

}

运行结果

在这里插入图片描述

  1. 编写一个程序,读取一个浮点数,首先以小数点计数法打印,然后以指数计数法打印,用下面的格式输出(系统不同,指数计数法显示的位数可能不同):
a. The input is 21.3 or 2.1e+001;
b. The input is +21.290 or 2.129E+001.
//
// Created by DingJiaxiong on 2023/2/5.
// 【第4章的编程练习3】
#include <stdio.h>

int main(void) {

    float input;
    printf("Enter a float number: ");
    scanf("%f", &input);
    printf("The input is %.1f or %.1e \n", input, input);

    return 0;
}

运行结果

在这里插入图片描述

  1. 编写一个程序,提示用户输入身高(以英寸为单位)和姓名,然后以下面的格式显示用户刚输入的信息。
Dabney,you are 6.208 feet tall.

使用float类型,并用“/”作为除号。如果你愿意,可以要求用户以厘米为单位输入身高,并以米为单位显示出来。

//
// Created by DingJiaxiong on 2023/2/5.
// 【第4章的编程练习4】
#include <stdio.h>

int main() {

    float heigh;
    char name[40];

    printf("Enter your name: ");
    scanf("%s", name);
    printf("Hi %s, how tall you are(inch): ", name);
    scanf("%f", &heigh);
    printf("%s, you are %.3f feet tall \n", name, heigh / 12.0);

    return 0;
}

运行结果

在这里插入图片描述

  1. 编写一个程序,提示用户输入以兆位每秒(Mbit/s)为单位的下载速度和以兆字节(MB)为单位的文件大小。程序中应计算文件下载时间。注意,这里的1字节等于8位。使用float类型,并用“/”作为除号。该程序要以下面的格式打印3个变量(下载速度、文件大小和下载时间)的值,显示小数点后两位数字。
At 18.12 megabits per second,a file of 2.20 megabytes download in 0.97 seconds.
//
// Created by DingJiaxiong on 2023/2/5.
// 【第4章的编程练习5】
#include <stdio.h>

int main(void) {

    float speed, size, time;

    printf("Please input the net speed(megabits per second): ");
    scanf("%f", &speed);

    printf("Please input the file size(megabytes): ");
    scanf("%f", &size);

    time = size * 8 / speed;

    printf("At %.2f megabits per second,a file of %.2f megabytes download in %.2f seconds.", speed, size, time);

    return 0;
}

运行结果

在这里插入图片描述

  1. 编写一个程序,先提示用户输入名,然后提示用户输入姓。在一行打印用户输入的名和姓,下一行分别打印名和姓的字母数。字母数要与相应的名和姓结尾对齐,如下所示。
Melissa Honeybee
	  7        8

接下来,再打印相同的信息,但是字母数与相应名和姓的开头对齐,如下所示。

Melissa Honeybee
7       8
//
// Created by DingJiaxiong on 2023/2/5.
// 【第4章的编程练习6】
#include <stdio.h>

int main(void) {

    char name[40], surname[40];

    int wname, wsurname;

    printf("Please input your first name: ");
    scanf("%s", name);
    printf("Please input your last name: ");
    scanf("%s", surname);

    printf("\n");

    wname = printf("%s", name);
    printf(" ");
    wsurname = printf("%s", surname);
    printf("\n%*d %*d", wname, wname, wsurname, wsurname);

    printf("\n");
    wname = printf("%s", name);
    printf(" ");
    wsurname = printf("%s", surname);
    printf("\n%-*d %-*d", wname, wname, wsurname, wsurname);

    return 0;
}

运行结果

在这里插入图片描述

  1. 编写一个程序,将一个double类型的变量设置为1.0/3.0,一个float类型的变量设置为1.0/3.0。分别计算两个表达式各3次:一次显示小数点后面的6位数字;一次显示小数点后面的12位数字;一次显示小数点后面的16位数字。程序中要包含float.h头文件,并显示FLT_DIG和DBL_DIG的值。1.0/3.0的值与这些值一致吗?
//
// Created by DingJiaxiong on 2023/2/5.
// 【第4章的编程练习7】
#include <stdio.h>
#include <float.h>

int main(void) {

    double d_third = 1.0 / 3.0;
    float f_third = 1.0 / 3.0;

    printf("float of one third(6) = %.6f\n", f_third);

    printf("float of one third(12) = %.12f\n", f_third);

    printf("float of one third(16) = %.16f\n", f_third);

    printf("double of one third(6) = %.6lf\n", d_third);

    printf("double of one third(12) = %.12lf\n", d_third);

    printf("double of one third(16) = %.16lf\n", d_third);

    printf("FLT_DIG in float.h is %d\n", FLT_DIG);

    printf("DBL_DIG in float.h is %d\n", DBL_DIG);

    return 0;
}

运行结果

在这里插入图片描述

  1. 编写一个程序,首先要求用户输入旅行里程和消耗的汽油量,然后计算并显示消耗每加仑汽油行驶的英里数,显示小数点后的一位数字。接下来,根据1加仑大约等于3.785升,1英里大约等于1.609千米,把单位是英里/加仑的值转换为升/100千米(欧洲通用的燃料消耗表示法),并显示结果,显示小数点后面的1位数字。注意,美国测量消耗单位燃料的行程(值越大越好),而欧洲测量单位距离消耗的燃料(值越小越好)。使用#define创建符号常量或者使用const限定符创建变量来表示两个转换系数。
//
// Created by DingJiaxiong on 2023/2/5.
// 【第4章的编程练习8】
#include <stdio.h>

#define GALLON_TO_LITRE 3.785
#define MILE_TO_KM 1.609

int main(void) {

    float range, oil;

    printf("Please input the range you traveled(in mile):");
    scanf("%f", &range);

    printf("Please input the oil you traveled(in gallon):");
    scanf("%f", &oil);

    printf("In UAS, your oil wear is %.1f M/G\n", range / oil);

    printf("In Europe, your oil wear is %.1fL/100KM", (oil * GALLON_TO_LITRE) / (range * MILE_TO_KM));

    return 0;
}

运行结果

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
很抱歉,我不懂C Primer Plus第六的答案。 我不能回答关于C Primer Plus第六答案的问题,但是我可以为您提供有关C语言编程的一般信息。当然,我可以用中文回答您的问题!C Primer Plus是一本经典的C语言教程,以下是第六的答案: 1. 什么是表达式? 表达式是指由运算符和操作数组成的语句,可以用于计算值。例如,2 + 3就是一个表达式,它的值为5。 2. 什么是运算符优先级? 运算符优先级指的是运算符的执行顺序。在表达式中,拥有较高优先级的运算符先执行。例如,乘法运算符的优先级高于加法运算符,所以2 + 3 * 4的值为14,而不是20。 3. 什么是类型转换? 类型转换是指将一个数据类型转换为另一个数据类型。C语言中的类型转换可以通过强制类型转换实现。例如,(int)3.14将浮点数3.14转换为整数3。 4. 什么是自动类型转换? 自动类型转换是指在表达式中,如果参与运算的操作数类型不同,则会将其中的某个操作数转换为另一个操作数的类型。例如,如果一个表达式中既有整数又有浮点数,那么整数会自动转换为浮点数进行计算。 5. 什么是递增运算符和递减运算符? 递增运算符++和递减运算符--分别表示将变量的值增加1和减少1。它们可以前缀形式和后缀形式使用,前缀形式表示先进行运算再使用变量的值,后缀形式表示先使用变量的值再进行运算。例如,i++和++i分别表示将变量i的值增加1,并返回增加之前或之后的值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ding Jiaxiong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值