C Primer Plus学习_8第四章编程练习(略带解释 )
第四章就这样结束了,下面我们来做书后习题。
如果你愿意练习,请不要看答案。
每个程序之后可能会有一些解释,都是我做的时候遇到的问题和是如何解决的,如果你还有其他疑问,评论区见,一起探讨。
----------------------------------------------分割线------------------------------------------------
1.编写一个程序,要求输入名字和姓氏,然后以“名字,姓氏”的格式打印。
#include <stdio.h>
int main (void)
{char xing [40];char ming [40];printf("请输入你的名字和姓氏\n");scanf("%s",xing);scanf("%s",ming);printf("你的名字是:%s %s", xing, ming);return 0;
}
2.编写一个程序,要求输入名字,并执行以下操作:
a.把名字引在双引号中打印出来。
b.在宽度为20个字符的字段内打印名字,并且整个字段引在引号内。
c. 在宽度为20个字符的字段的左端打印名字,并且整个字段引在引号内。
d.在比名字宽3个字符的字段内打印它。
#include <stdio.h>
int main(void)
{char name [20];//int width=3;printf("请输入你的名字\n");scanf("%s", name);printf("A:\"%s\"\n", name);printf("B:\"%20s\"\n", name);printf("C:\"%-20s\"\n", name);//printf("D:%*s\n", width, name);printf("D:%3s\n", name);return 0;
}
对于D问题我好像有好几种写法,限于水平不知道有没有错误,因为输出结果都是一样的。。。哪位知道原因的麻烦在下面帮忙指正一下。。。
另外网上给的答案是这样的
#include<stdio.h>
#include<string.h>int main(void)
{char name[20];int width;printf("Please input your name:");scanf("%s",name);printf("A:\"%s\"\n",name);printf("B:\"%20s\"\n",name);printf("C:\"%-20s\"\n",name);width=strlen(name)+3;printf("D:\"%*s\"\n",width,name);//*对应widthreturn(0);
}
3.编写一个程序,读取一个浮点数,并且首先以小数点记数法,然后以指数记数法打印之。输出使用下列形式(在指数位置显示的数字的位数可能会随系统而不同):
a. The input is 21.3 or 2.1e+001.
b. The input is +21.290 or 2.129E+001.
#include <stdio.h>
int main(void)
{float n ;printf("请输入一个浮点数\n");scanf("%f", &n);printf("A:The input is %.1f or %.1e\n", n, n);printf("B:The input is %+.3lf or %.3le\n", n, n);return 0;
}
输出结果为:
请输入一个浮点数
14.25
A:The input is 14.3 or 1.4e+001
B:The input is +14.250 or 1.425e+001
A中 %.1表示保留一位小数,同理可知B中的%.3表示保留三位小数。在%.3中添加了“+”使得打印结果多了一个+。
4.编写—个程序,要求输入身高(以英寸为单位)和名字,然后以如下形式显示:
Dabney, you are 6.208 feet tall
使用float类型,使用/作为除号。如果您愿意,可以要求以厘米为单位输入身高,并以米为单位进行显示。
#include <stdio.h>
int main (void)
{float inch;char name [40];printf("请输入你的身高:");scanf("%f",&inch);printf("\n");printf("请输入你的名字:");scanf("%s",name);printf("\n");printf("你好%s,你有%.3f 英尺高\n", name, inch);return 0;
}
这里主要是考察输入字符串,使用数组char name[40],当然[]里的数字只要够。
5 . 编写一个程序,首先要求用户输入名字,然后要求用户输入姓氏。在一行打印输入的姓名,在下行打印每个名字中字母的个数。把字母个数与相应名字的结尾对齐,如下所示:
Melissa Honeybee
7 8
然后打印相同的信息,但是字母个数与相应单词的开始对齐。
#include <stdio.h>
#include <string.h>//提供string()函数原型
int main (void)
{char xing [40];char ming [40];printf("请输入你的姓氏:");scanf("%s",xing);printf("\n");printf("请输入你的名字:");scanf("%s",ming);printf("\n");printf("%s %s\n", xing, ming);printf("%*d %*d\n",strlen(xing),strlen(xing),strlen(ming),strlen(ming));/*前一个 strlen(xing)对应*,将“xing ”的字段宽度赋给“* ”;后一个strlen(xing)对应“d ”以整型表示字段宽度。 */ printf("%s %s\n", xing, ming);printf("%-*d %-*d\n",strlen(xing),strlen(xing),strlen(ming),strlen(ming));return 0;
}
一开始我用的%d,然后运行输入结束后,直接给我结束进程了。。。可见转换说明重要性。
欲知后事如何请看下集。
C Primer Plus学习_8第四章编程练习(略带解释 )相关推荐
- C++ Primer Plus 学习笔记 第四章 04编程练习
1. #include<iostream>int main() {using namespace std;cout<<"What is your first name ...
- C++PrimerPlus学习——第十四章编程练习
14-1 参考14.19 winec.h #ifndef WINEC_H_ #define WINEC_H_ #include <string> #include <valarray ...
- 《Go语言圣经》学习笔记 第四章 复合数据类型
<Go语言圣经>学习笔记 第四章 复合数据类型 目录 数组 Slice Map 结构体 JSON 文本和HTML模板 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. ...
- Java基础学习——第十四章 网络编程
Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...
- 《SysML精粹》学习记录--第四章
<SysML精粹>学习记录 第四章:内部模块图(Internal Block Diagram,IBD) IBD介绍 组成部分属性 引用属性 连接器 项目流 内嵌组成部分和引用 小结 第四章 ...
- 计算机网络(第7版)谢希仁著 学习笔记 第四章网络层
计算机网络(第7版)谢希仁著 学习笔记 第四章网络层 第四章 网络层 4.3划分子网和构造超网 p134 4.3.1划分子网 4.3.2使用子网时分组的转发 4.3.3无分类编址CIDR(构建超网) ...
- Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25
Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25 目录 Rule20 接口优于抽象类 Rule21 为后代设计接口 Rule22 接口只用于定义类型 ...
- JavaScript高级程序设计第四版学习--第二十四章
title: JavaScript高级程序设计第四版学习–第二十四章 date: 2021-5-31 10:46:01 author: Xilong88 tags: JavaScript 本章内容: ...
- 机器人导论(第四版)学习笔记——第四章
机器人导论(第四版)学习笔记--第四章 4.1 引言 4.2 解的存在性 4.3 当n<6时操作臂子空间的描述 4.4 代数解法和几何解法 4.5 简化成多项式的代数解法 4.6 三轴相交的Pi ...
最新文章
- Java多线程(九)—— interrupt()和线程终止方式
- SQLSERVER中修复状态为Suspect的数据库
- Android 自定义实现switch开关按钮
- php使用office modi吗,使用phpoffice/phpexcel拓展读取excel内容卡死解决
- Spring Cloud比较好的博文地址
- VMWare Linux虚拟机设置固定IP上网方法(靠谱)
- 液晶电视服务器无响应时间,液晶电视响应速度时间是多少更好啊?
- 学习Java的深拷贝和浅拷贝
- alibaba实习生代码大赛
- jsp,servlet中文乱码问题
- 出现类似于 ”IDD_DLG_WAIT 未声明的标识符“ 这样的错误怎么办
- Linux C Serial串口编程
- uni-app开发经验分享十五: uni-app 蓝牙打印功能
- 如何学习计算机组成原理
- python把文件转化为二进制流-python:将一个文件转换为二进制文件(binary)
- frps搭建自己的内网穿透服务器
- 主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思
- 多线阵列激光三维扫描系统及多线阵列激光三维扫描方法
- 直播平台软件开发都使用了什么协议呢?
- Linux学习记录二——文件导航
热门文章
- PS2251-68 量产成 CDROM + USBDsik 以及还原(删除CD-ROM)分区
- 一文讲透研发,SRE,运维,DevOps 的区别
- java面试题集中了好几篇的搜索的
- MTS系统收购传感器制造商PCB
- 【WLAN】Android 13 WIFI 选网机制讲解
- Python初学者图形绘制
- python介绍和用途-Python简介
- HTML5兼容HEVC视频格式且支持本地绝对路径访问
- vtd xml java_java – 如何使用VTD-XML获取ONE元素的所有命名空间声明?
- 银河麒麟和鸿蒙系统,国产银河麒麟操作系统V10发布 兼容300万APP厉害了