C Primer Plus 第4章习题

news2024/9/20 20:38:55

你该逆袭了

红色标注的是:错误的答案
蓝色标注的是:正确的答案
绿色标注的是:做题时有疑问的地方

练习题

  • 一、复习题
    • 1、
      • 我的答案:
      • 正确答案:
    • 2、
    • 3、
    • 4、
    • 5、
    • 6、
    • 7、
    • 8、
    • 9、
    • 10、
    • 11、
    • 12、
  • 二、编程练习
    • 1、
    • 2、第4问我不会
      • a、
      • b、
      • c、
      • d、
    • 3、
    • 4、
    • 5、
      • 错误答案:
      • 正确答案:
    • 6、
    • 7、

一、复习题

1、

在这里插入图片描述

我的答案:

答:只会读取空格前面的字符串

#include <stdio.h>

int main()
{
	char name[20] = { 0 };

	printf("请输入你的姓名:");
	scanf("%s", name);
	printf("\n请输出你的姓名:%s\n",name);

	return 0;
}

在这里插入图片描述

正确答案:

C 语言在使用 scanf( ) 函数读取用户输入的字符串时,如果遇到第一个空白(空格、制表符、换行符),就认为完成数据读取工作,后续数据不再写入当前变量,而只保存在输入缓冲区中。
因此读取名的 scanf( ) 函数只能够在 name[ ] 中存储第一个无空白的连续单词。在空白之后用户输入的内容仍然保存在输入缓冲区内,等待下一次 scanf( ) 函数 的输入。
因此,程序中并没有等待用户输入体重数据,而直接将刚才缓冲区内的姓赋予给体重。

#include <stdio.h>

int main()
{
	char name[20] = { 0 };
	double weight = 0;

	printf("请输入你的姓名:");
	scanf("%s", name);
	printf("\n请输出你的姓名:%s\n", name);

	scanf("%f", &weight);
	printf("your weight is %f\n", weight);

	return 0;
}

2、

在这里插入图片描述
答:
a:
错误答案:
2.34e+02

正确答案:
会自动将 e 计数法 转换成 十进制,保留小数点两位数字

b:
Hi)
105 所对应的ASCII就是 ‘i’
对的

‘\41’ 的意思是 第41个ASCII字符 吗?
错误:这是八进制,一般来说写成 ‘\041’,也可以省略 0,直接写成 ‘\41’

printf("%c%c%c\n", 'H', 105, '\41');  // Hi!

正确答案:输出:Hi!,用字符型、十进制整数、八进制 转义方式打印 3 个字符。整形十进制数据 105 对应字符 ‘i’ ,‘41’ 这是八进制,一般来说写成 ‘\041’,也可以省略 0,直接写成 ‘\41’

c:
”His Hamlet was funny without being vulgar.“
has 44 characters.

预编译指令定义了 Q 为字符串 “His Hamlet was funny without being vulgar.” 。
打印时会直接通过转换说明符输出该字符串,strlen( ) 函数计算实参字符串 Q 的长度,即 42 ,并输出。
需要注意的是,strlen( ) 函数并没有计算字符串结尾 ‘\0’。

#include <stdio.h>
#define Q "his hamlet was funny without being vulgar." 

int main()
{
	printf("%s\nhas %d characters.\n", Q, strlen(Q));  //值得注意

	return 0;
}

d:
1.20e+03
1201.00

3、

在这里插入图片描述
在双引号前面加上 \

4、

在这里插入图片描述

#include <stdio.h>
#define B "booboo"   //一定要加上双引号
#define X 10

int main()
{
	int age;
	char name[20];
	int xp;

	printf("please enter your first name.");
	scanf("%s", name);
	printf("all right,%s,what's your age?\n", name);
	scanf("%d", &age);
	xp = age + X;
	printf("that's a %s! you must be at least %d.\n", B, xp);

	return 0;
}

5、

在这里插入图片描述

#include <stdio.h>
#define BOOK "War and Peace"

int main()
{
	float cost = 12.99;
	float percent = 80.0;

	printf("this copy of \"%s\" sells for $%.2f.\nthat is %.0f%% of list.", BOOK, cost, percent);

	return 0;	
}

6、

在这里插入图片描述
在这里插入图片描述
答:
a:错误答案:%10d
正确答案:%d 字段宽度 与 位数 相同不需要使用特殊修饰符

b:%4x
c:%10.3f
d:%12.2e
e:%-30s

7、

在这里插入图片描述
答:
a:%15lu
b:%#4x
c:%-12.2E
d:%+10.3f

e:%8.8s
注意:.数字 对于%s 转换,表示待打印字符的最大数量

8、

在这里插入图片描述
答:
a:%6.4d
注意:.数字 对于整形转换,表示待打印数字的最小位数。

b:错误答案:%5o
正确答案:%*o 在printf()中字段宽度由参数列表指定,使用修饰符 *

c:错误答案:%2s
正确答案:%2c 字段宽度为 2

d:%+.2f
正确答案:%+0.2f

e:%-7.5s

9、

在这里插入图片描述
a、

#include <stdio.h>

int main()
{
	int a;

	scanf("%d", &a);
	printf("%d\n", a);

	return 0;
}

b、

#include <stdio.h>

int main()
{
	float b, c;
	scanf("%f %E", &b, &c);
	printf("%f %E", b, c);

	return 0;
}

c、

#include <stdio.h>

int main()
{
	char d[20] = { 0 };
	scanf("%s", d);
	printf("%s", d);

	return 0;
}

d、

#include <stdio.h>

int main()
{
	char e[20] = { 0 };
	int f = 0;
	scanf("%s %d", e, &f);
	printf("%s %d", e, f);

	return 0;
}

e、

#include <stdio.h>

int main()
{
	
	char g[20] = { 0 };
	int i = 0;
	scanf("%*s%d", &i);
	printf("%d", i);

	return 0;
}

10、

在这里插入图片描述
答:制表符、回车、空格
正确答案:
空白指的是:空格、制表符、换行符,这 3 种空白是 scanf( ) 函数进行输入分割的符号。

11、

在这里插入图片描述

sizeof 运算符对应:%zd

12、

在这里插入图片描述
不可行,在程序中,{ } 已经用来处理别的任务了

二、编程练习

1、

在这里插入图片描述

#include <stdio.h>

int main()
{
	char ming[20] = { 0 };
	char xing[20] = { 0 };

	printf("请输入名:");
	scanf("%s", ming);
	printf("请输入姓:");
	scanf("%s", xing);
	printf("名.姓:%s.%s\n", ming, xing);

	return 0;
}

2、第4问我不会

在这里插入图片描述

a、

#include <stdio.h>

int main()
{
	char ming[20] = { 0 };
	char xing[20] = { 0 };

	printf("请输入名:");
	scanf("%s", ming);
	printf("请输入姓:");
	scanf("%s", xing);
	printf("\"%s.%s\"\n", ming, xing);

	return 0;
}

b、

#include <stdio.h>

int main()
{
	char ming[20] = { 0 };
	char xing[20] = { 0 };

	printf("请输入名:");
	scanf("%s", ming);
	printf("请输入姓:");
	scanf("%s", xing);
	printf("\"%20s.%20s\"\n", ming, xing);

	return 0;
}

c、

#include <stdio.h>

int main()
{
	char ming[20] = { 0 };
	char xing[20] = { 0 };

	printf("请输入名:");
	scanf("%s", ming);
	printf("请输入姓:");
	scanf("%s", xing);
	printf("\"%-20s.%-20s\"\n", ming, xing);

	return 0;
}

d、

我不理解意思:什么是比姓名宽度宽 3 的字段中打印名和姓???
正确答案:

#include <stdio.h>

int main()
{
	char name[20] = { 0 };
	int width = 0;

	printf("请输入你的名字:");
	scanf("%s", name);

	width = printf("%s", name);  //返回字符个数

	putchar('\n');
	printf("%d\n", width);

	printf("%*s\n", (width + 3), name);  //指定宽度参数

	return 0;
}

3、

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

int main()
{
	double a = 0;

	printf("请输入小数:");
	scanf("%lf", &a);
	printf("%+.3f,%+.3E", a,a);	

	return 0;
}

4、

在这里插入图片描述

#include <stdio.h>

int main()
{
	char name[20] = { 0 };
	float height = 0;
	float h = 0;

	printf("请输入身高:");
	scanf("%f", &height);
	printf("请输入名字:");
	scanf("%s", name);
	printf("cm 为单位输入身高:");
	scanf("%f", &h);
	printf("%s,you are %.3f feet tall.\n", name, h/100.0);
	printf("%s,you are %.3f feet tall.\n", name, height);

	return 0;
}

5、

在这里插入图片描述

错误答案:

#include <stdio.h>

int main()
{
	float  download_speed = 18.12;
	float download_context = 2.20;
	printf("at %.2f megabits per second , a file of %.2f megabytes downloads in %.2f seconds\n", download_speed, download_context, download_context /download_speed);

	return 0;
}

在这里插入图片描述

正确答案:

正确答案:megabits 和 megebytes,所以计算公式:time = size * 8 / speed ;

6、

在这里插入图片描述

#include <stdio.h>
#include <string.h>

int main()
{
	char name1[20] = { 0 };
	char name2[20] = { 0 };
	int n1 = 0;
	int n2 = 0;

	printf("请输入姓名一:");
	scanf("%s", name1);
	printf("请输入姓名二:");
	scanf("%s", name2);
	n1 = strlen(name1);
	n2 = strlen(name2);
	printf("%s %s\n", name1, name2);
	printf("%*d %*d\n", n1, n1, n2, n2);
	printf("%s %s\n", name1, name2);
	printf("%-*d %-*d\n", n1, n1, n2, n2);

	return 0;
}

7、

在这里插入图片描述
不一样

#include <stdio.h>
#include <float.h>

int main()
{
	double n1 = 1.0 / 3.0;
	float n2 = 1.0 / 3.0;

	printf("%.6f,%.6f\n", n1, n2);  //0.333333,0.333333
	printf("%.12f,%.12f\n", n1, n2);  //0.333333333333,0.333333343267
	printf("%.16f,%.16f\n", n1, n2);  //0.3333333333333333,0.3333333432674408

	printf("%d %d", FLT_DIG, DBL_DIG);  // 6 15

	return 0;
}

正确答案:
printf( ) 函数在打印浮点型数时使用转换说明符 %f ,double 类型也可以使用 %lf ,虽然编译器在打印时统一转换为 double类型,但是打印时的转换并不能提高原 float 类型数据的精度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2043984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于轨迹的汽车跟随系统横向控制方法

A Trajectory-Based Approach for the Lateral Control of Vehicle Following Systems 基于轨迹的汽车跟随系统横向控制方法 Abstract Abstract| A crucial task for steering an autonomous vehicle along a safe path in a vehicle following scenario is the lateral cont…

ubuntu查看CPU、内存、硬盘

1、查看CPU cat /proc/cpuinfo 我这台机器CPU是2核&#xff0c;所以这里是2核 或者使用如下命令也可以查看 lscpu 查看CPU使用率 top 2、查看内存 查看内存信息&#xff1a; free -h 查看内存使用情况&#xff1a; vmstat 3、硬盘 查看硬盘使用情况&#xff1a; df -…

用视频文件模拟摄像头进行抖音、视频号直播的无人直播机(虚拟摄像头)推流器使用说明详细介绍

无人直播机是嵌入式软硬件一体化设计&#xff0c;支持远程修改设备参数&#xff0c;远程回放设备录像&#xff0c;还支持3.5mm音频实时互动&#xff0c;以及多个视频随机轮播或者顺序轮播。无人直播机不仅稳定还节能&#xff0c;支持7*24小时运行&#xff0c;不死机不卡顿。 一…

求职利器:高频面试题与算法详解

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…

vue3父子组件双向数据绑定v-model;父组件调用子组件事件

效果&#xff1a; 父far.vue <template><div><div>父组件内容<pre>value1:{{ value1 }}</pre><el-button type"primary">flag1:{{ flag1 }}</el-button><pre>obj1:{{ obj1 }}</pre><el-input v-model&q…

Java 入门指南:接口(Interface)

引言 在Java编程中&#xff0c;接口&#xff08;Interface&#xff09;是一种非常重要的概念&#xff0c;它不仅是面向对象编程&#xff08;OOP&#xff09;的基石之一&#xff0c;也是实现高内聚、低耦合设计原则的关键工具。接口定义了一组方法&#xff0c;但不提供这些方法…

@Mapper报红

检查pom.xml&#xff0c;导入 org.mybatis.spring.boot 依赖&#xff1a; <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency…

Java-EE 网络编程(1)

目录 一、网络初识 二、协议 协议的定义 协议分层 协议分层的好处 TCP/IP五层模型 五层协议 协议之间如何配合工作的 三、网络编程套接字 TCP/UDP特点 UDP回显服务器 UDP的socket api 回显服务器 回显客户端 一、网络初识 先了解一些核心概念&#xff1a; 局域网…

CsvExport:一个.Net高性能、低内存的CSV导出开源库

在我们项目开发中&#xff0c;导出CSV数据功能是非常常见的。 今天推荐一个高性能、低内存的CSV导出开源库。 01 项目简介 CsvExport是一个基于C#非常简单和快速的CSV导出开源库。 该开源库的核心特点&#xff1a; 导出功能兼容性高&#xff08;自动检测分隔符&#xff0c;…

CSC7720 可正、负应用5V2.1A同步整流

CSC7720是一款同步整流芯片&#xff0c;可以代替肖特基二极管提高反激变换器的效率。CSC7720 支持工作在非连续模式&#xff08;DCM&#xff09;的反激变换器中&#xff0c;其内部集成了低 RDS&#xff08;ON &#xff09;的 N 沟道功率MOSFET&#xff0c;外围应用简单&#xf…

STM32—SPI通信

1.SPI简介 四根通信线&#xff1a;SCK(Serial Clock)(时钟线)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select) 同步、全双工 支持总线挂载多设备&#xff08;一主多从&#xff09; 所有SPI设备的SCK、MOSI、MISO分别连在一起 主机…

【Python学习-UI界面】PyQt5 小部件13-Slider 拖动条

高级布局管理器&#xff0c;允许通过拖动边界来动态改变子小部件的大小。 Splitter控件提供一个手柄&#xff0c;可以拖动以调整控件的大小 样式如下: 常用方法如下&#xff1a; 序号方法描述1addWidget将小部件添加到拆分器的布局中2indexOf返回布局中小部件的索引3insetW…

炖羊肉

炖羊肉必备的两种香辛料&#xff0c;白胡椒、白芷&#xff0c;让你炖出的羊肉软嫩&#xff0c;汤汁鲜美 在烹饪艺术的广阔领域中&#xff0c;炖羊肉作为一道经典佳肴&#xff0c;其风味的层次与深度往往取决于所选香辛料的精妙搭配。其中&#xff0c;白胡椒与白芷作为炖羊肉时…

fun状态上传,并可手动控制

文章目录 引言上传原因:矛盾点:基础工程源码: 代码实操fun状态上传fun状态下发控制 引言 上传原因: 续上一节, 我们把fun像小灯一样, 加入了预警工程, 但是我们fun其实还有其他用处, 比如我们人工手动开风扇, 排风, 所以我们需要把fun的状态上传, 然后也可以通过服务器手动控制…

EmguCV学习笔记 VB.Net 2.3 Mat类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV学习笔记目录 Vb.net EmguCV学习笔记目录 C# 笔者的博客网址&#xff1a;VB.Net-CSDN博客 教程相关说明以及如何获得pdf教…

StackStorm自动化平台

1. StackStorm概述 1.1 StackStorm介绍 StackStorm是一个开源的事件驱动自动化平台&#xff0c;它允许开发者和系统管理员自动化IT和网络操作。StackStorm结合了IT运维、DevOps和网络安全团队的需求&#xff0c;提供了一个集中式的工作流自动化解决方案&#xff0c;包括事件响…

Windows10、ARM开发板、虚拟机Ubuntu可同时上网

一、Windows10端设置 1、打开网络配置 2、打开适配器 3、将window连接的wifi网卡设置为共享模式 4、查看本地连接的ip 到此&#xff0c;window10端设置完毕 二、设置虚拟机端&#xff08;Ubuntu&#xff09; 1、打开网络配置 2、打开适配器 3、查看本地连接的网卡名称 4、配置…

超越流水线,企业研发规范落地新思路

作者&#xff1a;子丑 内容大纲&#xff1a; 1、研发规范≠流程约束 2、自动化工具→研发规范载体 3、研发规范在工具上的落地示例 4、研发规范的选型方法与常见实践 研发规范≠流程约束 这个故事特别适合研发规范的场景&#xff0c;我们要避免成为把猫绑在柱子上的信众…

[NOIP2007 普及组] 守望者的逃离 题解

题意 给定 M ( 0 ≤ M ≤ 1 0 3 ) , S ( 1 ≤ S ≤ 1 0 8 ) , T ( 1 ≤ T ≤ 3 1 0 5 ) M(0 \leq M \leq 10^3),S(1 \leq S \leq 10^8),T(1 \leq T \leq 3\times 10^5) M(0≤M≤103),S(1≤S≤108),T(1≤T≤3105)&#xff0c;守望者开始在位置 0 0 0&#xff0c;对于每一秒&…

C++调用C#方法(附踩坑点)

C调用C#方法 写在前面效果思路步骤可能的问题 写在后面 写在前面 工作需要用C调用C#写到代码&#xff0c;看来网上写的方法&#xff0c;自己也踩了一些坑&#xff0c;这里总结一下&#xff0c;我只试了CLR的方法。 主要参考了下面几篇博客 C调用C#库简单例程&#xff08;Lucky…