C Primer Plus第4章编程题

文章目录

  • printf()和scanf()的*修饰符
  • C Primer Plus第4章编程题


1.printf()和scanf()的*修饰符

        printf()和scanf()都可以用*修饰符来修改转换说明的含义。

        printf()的*修饰符:如果你不想预先指定字段宽度,希望通过程序来指定,那么可以使用*修饰符代替字段宽度但还是要用一个参数告诉函数,字段宽度应该是多少。也就是说,如果转换说明是%*d,那么参数列表中应该包含*和 d对应的值。

#include<stdio.h>
int main(void)
{
	unsigned width,precision;
	int number=256;
	double weight=242.5;

	printf("Enter a field width:\n");
	scanf("%d,&width");
	printf("The number is:%*d:\n",width,number);
	printf("Now enter a width and a precision:\n");
	scanf("%d %d",&width,&precision);
	printf("Weight=%*.*f\n",width,precision,weight);
	printf("Done!\n");

	return 0;
}

        变量width提供字段宽度,number是待打印的数字。因为转换说明中*在d的前面,所以在printf()的参数列表中,width在number的前面。

        结果,用户首先输入6,因此6是程序使用的字段宽度。接下来,用户输入8和3,说明字段宽度是8,小数点后面显示第3委数字。一般而言,程序应该根据weight的值来决定这些变量。

        scanf()中*的用法有所不同。把*放在%和转换字符之间,会使得scanf()跳过相应的输出项。

#include<stdio.h>
int main(void)
{
	int  n;
	
	printf("Please enter three integers:\n");
	scanf("%*d%*d%d",&n);
	printf("The last integer was %d\n",n);
	
	return 0;
}

运行结果: 

 1.编写一个程序,提示用户输入名和姓,然后以“名,姓”的格式打印出来。

//程序的功能是读取用户输入的字符串,并且重新格式化输出。应针对名和姓分别定义对应的字符数组,使用scanf()函数和%s转换说明符读取数据。
#include<stdio.h>
int main(void)
{
	char name[40];
	char surname[40];
	printf("Please enter your first name:");
	scanf("%s",name);
	printf("Please enter your last name:");
	scanf("%s",surname);
	printf("%s%s",name,surname);
	return 0;
}

运行结果: 


2.编写一个程序,提示用户输入名和姓,并执行一下操作:

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

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

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

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

#include<stdio.h>
#include<string.h>
int main(void)
{
	char name[40];
	int width;
	printf("Please enter your name:");
	scanf("%s",name);
	width=printf("%\"%s\"\n.",name);		//通过printf()的返回值获取名字的字符长度
	width-=4;		//printf()的返回值为打印字符数,因此需要排除两个引号、一个换行符、一个句号
	width=strlen(name);
	printf("\"%20s\".\n",name);
	printf("\"%-20s\".\n",name);
	printf("\"%*s\".",(width+3),name);
	return 0;
	
}

运行结果:

3. 编写一个程序,读取一个浮点数,首先以小数点记数法打印,然后以指数记数法打印。用下面
式进行输出(系统不同,指数记数法显示的位数可能不同):

        a.输入21.3或2.1e+001;

        b. 输入+21.290或 2.129E+001;

#include<stdio.h>
int main(void)
{
	float input;
	printf("Please enter a number:");
	scanf("%f",&input);
	printf("The input is %.1f or %.1e\n",input,input);
	printf("The input is %+.3f or %.3e\n",input,input);
	return 0;
}

运行结果: 


4.编写一个程序,提示用户输入身高(单位:英寸)和姓名,然后以下面的格式显示用户刚输入的信息:

        Dabney, you are 6.208 feet tall

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

#include <stdio.h>
int main()
{
	float heigh;
	char name[40];
	printf("Enter your name:");
	scanf("%s",name);
	/*scanf()函数读取用户输入的姓名,存入name[]数组中*/
	printf("Hi %s,how tall you (are inch ):",name);
	scanf("%f",&heigh);
/*scanf()读取用户输入的英寸数值,存入变量heigh 中*/
	printf("%s, you are %.3f feet tall \n",name,heigh/12.0);
/*题目要求显示小数点后3位数字*/
	return 0;

}

运行结果:

5.编写一个程序,提示用户输入以兆位每秒(Mb/s)为单位的下载速度和以兆字节(MB)为单位的文件大小。程序中应计算文件的下载时间。注意,这里 1 字节等于 8位。使用 float 类型,并用/作为除号。该程序要以下面的格式打印3个变量的值(下载速度、文件大小和下载时间),显示小数点后面两位数字:

        At 18.12 megabits per second, a file of 2.20 megabytes

        downloads in 0.97 seconds.

#include <stdio.h>
int main(void)
{
	float speed,size,time;
	printf("Pleast input the net speed(megabits per second):");
	scanf("%f",&speed);
	printf("Pleast input the file size(megabyte):");
	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;
}

运行结果:

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

        Melissa Honeybee

                   7                8

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

        Melissa Honeybee

        7           8 

#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);
/*通过 scanf()函数分别读取用户的名和姓*/
	wname = printf("%s",name);
	printf(" ");
	wsurname =printf("%s",surname);
/*分别打印用户的名和姓,通过返回值记录其字符数量*/
	printf("\n%*d %*d",wname,wname,wsurname,wsurname);
/*打印其字符数量,由于数量不确定,因此使用*号修饰符和参数的形式*如果使用strlen()函数,则可以不用定义wname 和wsurname 变量,*直接使用以下代码
/*	printf("\n%*d%*d",strlen(name),strlen(name),strlen(surname),strlen(surname));*/
	return 0;

}

运行结果: 


7.编写一个程序,将一个 double 类型的变量设置为1.0/3.0,一个float 类型的变量设置为1.0/3.0。分别显示两次计算的结果各3次:一次显示小数点后面6位数字;一次显示小数点后面12 位数字;一次显示小数点后面16位数字。程序中要包含float.h 头文件,并显示 FLTDIG和DBL_DIG的值。1.0/3.0的值与这些值一致吗?
8,编写一个程序,提示用户输入旅行的里程和消耗的汽油量。然后计算并显示消耗每加仑汽油行驶的英里数,显示小数点后面一位数字。接下来,使用1 加仑大约3.785 升,1 英里大约为1.609千米把单位是英里/加仑的值转换为升/100 公里(欧洲通用的燃料消耗表示法),并显示结果,显示小数点后面1位数字。注意,美国采用的方案测量消耗单位燃料的行程(值越大越好),而欧洲则采用单位距离消耗的燃料测量方案(值越低越好)。使用#define创建符号常量或使用const限定符创建变量来表示两个转换系数。


感觉好多还没有学会,明天再补充一些后面两个题吧。好困,早睡早起!明天继续加油!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI 神助攻,协同办公神器 ---- ONLYOFFICE

人工智能不会取代人&#xff0c;只会淘汰那些不会使用人工智能的人。 – 鲁迅 一、人工智能重新定义办公新模式 随着GPT的横空出世&#xff0c;AI的应用场景已经无处不在&#xff0c;从智能客服、智能语音助手、智能家居到自动驾驶汽车等&#xff0c;AI正在不断地拓展其应用领…

HTML+JavaScript-06

节点操作 目前对于节点操作还是有些困惑&#xff0c;只是了解简单的案例 具体操作可以看菜鸟教程&#xff1a;https://www.runoob.com/js/js-htmldom-elements.html 案例-1 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8…

考研高数(共轭根式)

1.定义 共轭根式&#xff1a;是指两个不等于零的根式A、B&#xff0c;若它们的积AB不含根式&#xff0c;则称A、B互为共轭根式。 共轭根式的一个显著特点是通过相乘能把根号去掉&#xff0c;这是很有帮助的 2.常用的共轭根式 3.例题 1&#xff09;求极限 2&#xff09;证明…

【超详细教程】2024最新Pytorch安装教程(同时讲解安装CPU和GPU版本)

目录 一、前言 二、pytorch简介 三、安装准备工作 3.1、下载Anaconda 四、判断是否有NVIDIA显卡 五、安装pytorch-CPU版本 六、安装pytorch-GPU版本 6.1、查看CUDA显卡驱动版本 6.2、安装CUDA 6.3、安装CuDNN&#xff08;加速器&#xff09; 6.4、安装pytorch-GPU 七…

从一个小故事讲解观察者模式~

定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 什么是观察者模式&#xff1f; 观察者模式在我们的日常生活中极其常见。 先来看看观察者模式的定义&#xff1a; 观察者模式定义了对象之间…

SV-7041T 多媒体教学广播IP网络有源音箱

SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带的功放和喇叭输出播放&#xff0c;可达到功率30W。同时它可以外接一个30W的无源副音箱&#xff0c;用在面积较大的场所。5寸进口全频低音喇…

OCP NVME SSD规范解读-8.SMART日志要求-3

SMART-11&#xff1a;这个属性记录的是用户数据区的NAND块最大擦写次数和最小擦写次数。其中&#xff0c;字节地址95:92表示最小用户数据擦写计数&#xff0c;而字节地址91:88表示最大用户数据擦写计数。这两个数值反映了闪存芯片在使用过程中的磨损程度&#xff0c;是评估SSD剩…

springboot集成 mysql快速入门demo

一、mysql环境搭建 采用docker-compose搭建&#xff0c;配置如下&#xff1a; docker-compose.yml version: 3 services:mysql:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mysql:5.7 # 原镜像mysql:5.7container_name: mysql_3306 …

Github 2024-01-30 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-01-30统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4TypeScript项目2Jupyter Notebook项目2HTML项目1Rust项目1C项目1 稳定扩散Web UI 创建周期&…

使用企业微信一年要花费多少钱?

从今天开始&#xff0c;大力将为大家呈现一个新的话题——“企微问答”&#xff0c;大家有什么问题可以回复我们的公众号&#xff0c;如果你是严肃认真的提问&#xff0c;我们会严肃认真的给你一个答案。今日问题 &#xff1a;用企业微信一年要花多少钱 使用企业微信要花多少钱…

element-ui中的el-date-picker 页面至字显示不全的原因及解决

显示不全原因&#xff1a;.el-range-separator的宽度为5%,相对于外层的父元素不够 解决方案&#xff1a;加宽度 <style> .el-range-separator{width: 20px !important; } </style>解决图如下

基于单片机的烟草干燥温度控制系统设计

摘 要&#xff1a;烟草干燥研究一直备受国内外烟草工作者的重视&#xff0c;在烟草干燥的方法中热风管处理法是利用热空气对流使烟草达到干燥的效果&#xff0c;这样可以控制烟草干燥时的温度&#xff0c;使烟草能够更好更快地干燥&#xff0c;因此温度的检测和控制是很重要的。…

【开源】基于Qt5的ROS1/ROS2人机交互软件(支持地图编辑/多点导航)

本项目基于Qt5开发&#xff0c;基于CMake进行构建&#xff0c;可以实现一套代码同时在ROS1/ROS2系统中使用(本项目已接入CI,保证多ROS版本/系统版本可用性) 项目地址&#xff1a; https://github.com/chengyangkj/Ros_Qt5_Gui_App 软件在编译时会自动识别环境变量中的ROS1/ROS…

Log4j2-13-log4j2 asyncLogger 低延迟日志的异步日志记录器

log4j2 的 async logger Log4j2 是一个 Java 日志框架&#xff0c;它提供了灵活的配置和高性能的日志记录功能。其中&#xff0c;async logger 是 Log4j2 中的一个特性&#xff0c;它允许在日志记录时使用异步方式&#xff0c;以提高性能。 1. 异步日志简介 在传统的同步日志…

linux 下gdal库(python)

之前在windows下安装gdal&#xff0c;先要下安装包再安装。这次在linux上安装&#xff0c;试了一下pip install gdal&#xff0c;不可以。想着linux应该一样&#xff0c;结果一搜网上教程一堆&#xff0c;乱七八糟的。 搞了一个小时 最后发现一句话就可以&#xff01;&#xf…

路由备份聚合排错

目录 实验拓扑图 实验要求 实验排错 故障一 故障现象 故障分析 故障解决 故障二 故障现象 故障分析 故障解决 故障三 故障现象 故障分析 故障解决 故障四 故障现象 故障分析 故障解决 故障五 故障现象 故障分析 故障解决 实验拓扑图 实验要求 按照图示配…

我国个体工商户达1.24亿户,支撑近3亿人就业

官媒报道截至2023年底&#xff0c;全国登记在册个体工商户1.24亿户&#xff0c;占经营主体总量的67.4%&#xff0c;支撑近3亿人就业。 什么概念&#xff1f;我帮大家理解一下&#xff0c;2024年了&#xff0c;现在中国5个人里面就有一个人不用上班&#xff0c;而是自己当起了老…

【Cookie反爬虫】某采购网站动态Cookie加点选验证码校验分析与实战

文章目录 1. 写在前面2. 请求分析3. JS反混淆4. 深度分析 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感兴趣的朋…

鸿蒙ArkUI封装的单选组件

Radio是单选框组件&#xff0c;通常用于提供相应的用户交互选择项&#xff0c;同一组的Radio中只有一个可以被选中。 ArkUI创建一个单选框&#xff0c;其中value是单选框的名称&#xff0c;group是单选框的所属群组名称。checked属性可以设置单选框的状态&#xff0c;状态分别为…

python+uiautomator2+adb

uiautomator2 基于google uiautomator的安卓UI自动化框架&#xff0c;支持python编写测试脚本对设备进行自动化控制。原理是在设备上运行http服务器&#xff0c;将http接口封装成python库 uiautomator只能使用java语言&#xff0c;每次都要上传到设备上运行&#xff0c;uiauto…