您的位置:首页 > 编程语言

C Primer Plus (第五版) 第四章 编程练习

2015-05-19 11:19 477 查看
第四章 字符串和格式化输入/输出

编程练习
编写一个程序,要求输入名字和姓氏,然后以“名字,姓氏”的格式打印。

#include <stdio.h>
#define LEN 21

int main(void)
{
char last_name[LEN];
char first_name[LEN];

printf("请输入你的名字和姓氏:\n");
scanf("%s%s", &first_name, &last_name);

printf("%s, %s\n", first_name, last_name);

return 0;
}


2.编写一个程序,要求输入名字,并执行以下操作:
a.把名字引在双引号中打印出来。
b.在宽度为20个字符的字段内打印名字,并且整个字段引在引号内。
c.在宽度为20个字符的字段左端打印名字,并且整个字体段引在引号内。
d.在比名字宽3个字符的字段内打印它。
#include <stdio.h>
#include <string.h>
#define LEN 21

int main(void)
{
char first_name[LEN];
int a;

printf("请输入你的名字:\n");
scanf("%s", &first_name);

printf("\"%s\"\n", first_name);
printf("\"%20s\"\n", first_name);
printf("\"%-20s\"\n", first_name);
a = strlen(first_name)+3;
printf("%*s\n", a, first_name);
return 0;
}


3.编写一个程序,读取一个浮点数,并且首先以小数点记数法,然后以指数记数法打印之,输出使用下列形式(在指数位置显示的数字的位数可能会随系统而不同)
a.The input is 21.3 or 2.13e+001
b.The input is +21.290 or 2.129e+001
#include <stdio.h>

int main(void)
{
float num;

printf("请输入一个浮点数:\n");
scanf("%f", &num);
printf("a.The input %.2f or %.1e\n", num, num);

printf("请输入一个浮点数:\n");
scanf("%f", &num);
printf("b.The input %+.3f or %.3E\n", num, num);

return 0;
}


4.编写一个程序,要求输入身高(以英寸为单位)和名字,然后以如下形式显示:
Dabney, you are 6.208 feet tall
#include <stdio.h>
#define LEN 41

int main(void)
{
float height;
char name[LEN];

printf("请输入您的身高:");
scanf("%f", &height);
printf("请输入你的名字:");
scanf("%s", &name);
printf("%s, you are %.3f feet tall\n", name, height);

return 0;
}


5.
编写一个程序,首先要求用户输入名字,然后要求用户输入姓氏。在一行打印输入的姓名,在下行打印每个名字中字母的个数。把字母个数与相应名字的结尾对齐,如下所示:
Melissa Honeybee
7 8
然后打印相同的信息,但是字母个数与相应单词的开始对齐。
#include <stdio.h>
#include <string.h>
#define LEN 41

int main(void)
{
char last_name[LEN];
char first_name[LEN];
int ln, fn;

printf("请输入您的名字和姓氏:");
scanf("%s%s", &first_name, &last_name);

ln = strlen(last_name);
fn = strlen(first_name);

printf("%s %s\n", first_name, last_name);
printf("%*d %*d\n", fn, fn, ln, ln);

printf("%s %s\n", first_name, last_name);
printf("%-*d %-*d\n", fn, fn, ln, ln);

return 0;
}


6.编写一个程序,设置一个值为1.0/3.0的double类型变量和一个值为1.0/3.0的float类型变量。每个变量的值显示三次:一次在小数点右侧显示4个数字,一次在小数点右侧显示12个数字,另一次在小数点右侧显示16个数字。同时要让程序包括float.h文件,并显示FLT_DIG和DBL_DIG的值。1.0/3.0的显示值与这些值一致吗?
#include <stdio.h>
#include <float.h>

int main(void)
{
double d = 1.0 / 3.0;
float f = 1.0 / 3.0;

/* 体现float 和 double 类型的有效位数*/
printf("%.4f %.12f %.16f\n", f, f, f);
printf("%.4lf %.12lf %.16lf\n", d, d, d);
printf("%d  %d\n", FLT_DIG, DBL_DIG);

return 0;
}


7.
编写一个程序,要求用户输入行驶的英里数和消耗汽油的加仑数。接着应该计算和显示消耗每加仑汽油行驶的英里数,显示方式是在小数点右侧显示一个数字。然后,根据l加仑约等于3.785升,l英里约等于1.609公里的规则,它应该把每加仑英里数转换成每100公里的升数(欧洲通用的燃料消耗表示法),并显示结果,显示方式是在小数点右侧显示一个数字(请注意,美国方案测量每单位距离消耗的燃料数,而欧洲方案测量每单位燃料的行驶距离)。用符号常量表示两个转换系数(使用const或#define)。
#include <stdio.h>
#define LITRE 3.785
#define KM 1.609

int main(void)
{
//此处注释部分可替代前面的两个#define
//const float LITRE = 3.785;
//const float KM = 1.609;

float mile;
float gallon;

printf("请输入行驶的英里数:");
scanf("%f", &mile);
printf("请输入消耗省油的加仑数:");
scanf("%f", &gallon);
printf("消耗每加仑汽油行驶的里数为:%.1f\n", mile / gallon);
printf("每100公里需消耗的汔油的升数为:%.1f\n",
100 * ((gallon * LITRE) / (mile * KM)));

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息