标签:c primer plus 第四章 编程练习
第四章 字符串和格式化输入/输出
编程练习
编写一个程序,要求输入名字和姓氏,然后以“名字,姓氏”的格式打印。
#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("%.4f %.12f %.16f\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; }
本文出自 “30岁学编程” 博客,请务必保留此出处http://xiongyi85.blog.51cto.com/8756903/1652683
标签:c primer plus 第四章 编程练习
原文地址:http://xiongyi85.blog.51cto.com/8756903/1652683