《C Primer Plus》(第六版)答案(4.8)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43219615/article/details/99879352

为使用《C Primer Plus》学习C的初学者准备的。

  1. 编写一个程序,提示用户输入名和姓,然后以“名,姓”的格式打印出来。
#include <stdio.h>
int main(int argc, char const **argv) {
	char name[20];
	char surname[20];
	
	printf("请输入名:");
	scanf("%s", name);
	
	printf("请输入姓:");
	scanf("%s", surname);
	 
	printf("Hello, %s %s", name, surname);
	return 0;
} 
  1. 编写一个程序,提示用户输入名和姓,并执行以下操作:
    a.打印名和姓,包括双引号;
    b.在宽度为20的字段右端打印名和姓,包括双引号;
    c.在宽度为20的字段左边打印名和姓,包括双引号;
    d.在比姓名宽度宽3的字段打印名和姓。
#include <stdio.h>
#include <string.h>
int main(int argc, char const **argv) {
	char name[20];
	char surname[20];
	
	printf("请输入名:");
	scanf("%s", name);
	
	printf("请输入姓:");
	scanf("%s", surname);
	 
	char fullName[50];
	//strcpy字符串拷贝函数 
	strcpy(fullName, name);
	//strcat字符串连接函数 (在原字符串后面接上指定字符串) 
	strcat(fullName, " ");
	strcat(fullName, surname);
	
	printf("\"%20s\"\n", fullName);
	//负号表示左对齐 
	printf("\"%-20s\"\n", fullName);
	
	//strlen获取字符串长度 
	int length = strlen(fullName);
	//*用于通过变量指定宽度 
	printf("%*s", length+3, fullName);
	return 0;
} 
  1. 编写一个程序,读取一个浮点数,首先以小数计数法打印,然后以指数计数法打印。用下面的格式进行输出(系统不同,输出可能不同):
    a.输出21.3或2.1e+001;
    b.输出+21.290或2.129E+001;
#include <stdio.h>
int main(int argc, char const **argv) {
	float f;
	
	scanf("%f", &f);
	//%g输出自适应格式  e输出时指数计数那里的E是小写 
	printf("%g %e\n", f, f);
	
	//正号表示输出时带正号 E输出时指数计数那里的E是大写 
	printf("%+g, %E", f, f); 
	
	return 0;
} 
  1. 编写一个程序,提示用户输入身高(英寸)和姓名,然后以下面的格式显示用户输入的信息。
#include <stdio.h>
int main(int argc, char const **argv) {
	float f;
	char name[20];
	
	printf("输入身高(英寸):");
	scanf("%f", &f); 
	
	printf("输入姓名:");
	scanf("%s", name);//字符数组的名字即字符数组的地址 
	
	printf("%s, you are %g feet tall.", name, f); 
	return 0;
} 
  1. 编写一个程序,提示用户输入以兆位每秒(Mb/s)为单位的下载速度和兆字节(MB)为单位的文件大小。程序中应计算文件下载的时间。注意,这里1字节等于8位。使用float类型,并用/作为除号。该程序要以下面的格式打印3个变量的值,显示小数点后面两位数字。
    At 18.12 megebits per second, a file of 2.20 megabytes
    downloads in 0.97 seconds.
#include <stdio.h>
int main(int argc, char const **argv) {
	float speed;
	float fileSize;
	
	printf("请输入下载速度(Mb/s)和文件大小(MB):") ;
	scanf("%f %f", &speed, &fileSize);
	
	/*一字节等于八位*/
	printf("At %.2f megebits per second, a file of %.2f megabytes\ndownloads in %.2f seconds.", speed, fileSize, (fileSize*8)/speed);
	return 0;
} 
  1. 编写一个程序,先提示用户输入名,然后提示用户输入姓。在一行打印名和姓,下一行分别打印名和姓的字母数。字母数要和相应名和姓的结尾对齐,如下所示。
    格式图片
#include <stdio.h>
#include <cstring>
int main(int argc, char const **argv) {
	char name[20];
	char surname[20];
	
	scanf("%s", name);
	scanf("%s", surname);
	
	printf("%s %s\n", name, surname);
	
	/*strlen函数获取字符串长度*/
	int length_name = strlen(name);
	int length_surname = strlen(surname);
	
	printf("%*d %*d", length_name, length_name, length_surname, length_surname);
	
	return 0;
} 
  1. 编写一个程序,将一个double类型的变量设置为1.0/3.0,一个float类型的变量设置为1.0/3.0.分别显示两次的计算结果各三次:一次显示小数点后6位数字;一次显示小数点后12位数字;一次显示小数点后16位数字。程序中要包含float.h头文件,并显示FLT_DIG和DBL_DIG的值。
#include <stdio.h>
#include <float.h>
int main(int argc, char const **argv) {
	double d = 1.0 / 3.0;
	float f = 1.0 / 3.0; 
	
	printf("%.6lf %.6f\n", d, f);
	printf("%.12lf %.12f\n", d, f);
	printf("%.16lf %.16f\n", d, f);
	
	printf("FLT_DIG:%d DBL_DIG:%d\n", FLT_DIG, DBL_DIG);
	return 0;
} 
  1. 编写一个程序,提示用户输入旅行的里程和消耗的汽油量。然后计算并显示消耗每加仑汽油行驶的英里数,显示小数点后面一位数字。接下来,使用一加仑大约3.785升,1英里大约1.609千米,把单位为英里/加仑的值转换为升/100公里,并显示结果,显示小数点后面一位小数。
#include <stdio.h>
#define GALLON_PER_L 3.785
#define MILE_PER_KILOMETER 1.609
int main(int argc, char const **argv) {
	float mile;
	float gasoline;
	
	printf("请输入旅行的里程(英里)和汽油量(加仑):");
	scanf("%f %f", mile, gasoline);
	
	printf("每加仑汽油行驶的公里数:%.1f.\n", mile / gasoline);
	
	printf("每100千米燃烧的汽油量(升):%.1.f.", (mile * MILE_PER_KILOMETER * 100) / (gasoline * GALLON_PER_L));
	
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/weixin_43219615/article/details/99879352