《C Primer Plus(第五版)中文版》第5章第1至8题

来源:互联网 发布:java 占位符替换 编辑:程序博客网 时间:2024/06/06 05:27

1、编写一个程序。将用分钟表示的时间转换以小时和分钟表示的时间。使用#define或const定义一个60的常量,使用while来允许用户重复键入值,并且键入一个小于等于0的时间终止循环。

#include <stdio.h>#define S 60 //S表示60分钟int main(void){unsigned int min = 0;unsigned int h,m;printf("请输入使用总分钟数:\n");fflush(stdout);scanf("%u",&min);while(min > 0){h = min/S;m = min%S;printf("%u分钟,等于%u小时%u分钟\n",min,h,m);printf("请输入下一个数(输入小于0的数值退出)\n");fflush(stdout);scanf("%u",&min);}printf("结束\n");return 0;}

2、编写一个程序,此程序要求输入一个整数,然后打印出从(包括)输入的值到(包括)比输入的数大于10的所有整数值,也就是说,如果输入为5,那么输出从5到15的所有整数。各个输出值之间用空格或是制表符或是换行符分隔。

#include <stdio.h>int main(void){unsigned int a = 0;unsigned int i = 0;printf("请输入一个整数:\n");fflush(stdout);scanf("%u",&a);while(i<=10){printf("%u\t",a+i);i++;}printf("\n结束\n");return 0;}

3、编写一个程序,该程序要求用户输入天数,然后将该值转换为周数和天数。例如,此程序将把18天周转换为2周4天,用下面的格式显示结果(对第一题稍加修改即可):

#include <stdio.h>#define S 7 //S表示7天int main(void){unsigned int min = 0;unsigned int h,m;printf("请输入总天数:\n");fflush(stdout);scanf("%u",&min);while(min > 0){h = min/S;m = min%S;printf("%u天,等于%u周%u天\n",min,h,m);printf("请输入下一个数(输入小于0的数值退出)\n");fflush(stdout);scanf("%u",&min);}printf("结束\n");return 0;}


4、编写一个程序让用户按厘米输入一个高度值,然后,程序按照厘米和英尺英寸显示这个高度值,允许厘米和英寸的值出现小数部份。程序允许用户继续输入,直到用户输入一个非正的数值。程序运行的示例如下所示:

182.0 cm = 5 feet,11.7 inches
请输入下一个厘米数(输入小于0的数值退出)
168.0
168.0 cm = 5 feet,6.1 inches
请输入下一个厘米数(输入小于0的数值退出)
0
结束


#include <stdio.h>#define MTOD 30.48 //1英尺等于30.48厘米int main(void){float m = 0;int feet;float inche;printf("请输入一个厘米数:\n");fflush(stdout);scanf("%f",&m);while(m > 0){feet = (int)(m/MTOD);inche = (m/MTOD - (float)feet)*12.0;printf("%.1f cm = %d feet,%.1f inches\n",m,feet,inche);printf("请输入下一个厘米数(输入小于0的数值退出)\n");fflush(stdout);scanf("%f",&m);}printf("结束\n");return 0;}


5、改写用来找到前20个整数之和的程序addemup.c(程序清单5.13),(如果您愿意,可以把addemup.c程序看成一个计算如果您第一天是$1,第二得到$2,第三天$$3,以此类推,您在20天里会挣到多少钱),修改程序,目的是您能交互的告诉程序计算到哪里,也就是说,用一个变量读入20


#include <stdio.h>int main(void){int count,sum,a;count =0;sum =0;printf("请输入一个数(小于零则退出):\n");fflush(stdout);scanf("%d",&a);while(count++<a && a >= 1){sum = sum +count;}printf("sum = %d\n",sum);return 0;}

6、现在修改编程编习5中程序,使它能够计算整数平方和

#include <stdio.h>int main(void){int count,sum,a,s;count =0;sum =0;printf("请输入一个数(小于零则退出):\n");fflush(stdout);scanf("%d",&a);while(count++<a && a >= 1){s=count*count;sum = sum +s;}printf("sum = %d\n",sum);return 0;}

7 编写一个程序,该程序要求输入一个float类型数并打印该数的立方值,使用您自己设计的函数来计算该值的立方并且将他它的立方打印出来。main()程序把输入值传递给该函数。

#include <stdio.h>void squit(float a);int main(void){float i;printf("请输入一个数:\n");fflush(stdout);scanf("%f",&i);squit(i);return 0;}void squit(float a){printf("%f\n",a*a*a);}

8、编写一个程序,该 程序要求用户输入一个华氏温度,程序以double类型读入温度值,并将它做为一个参数传递给用户提供的Temperatures()函数,该函数将计算相应的摄氏温度和绝对温度,并以小数点右边的两位数字的精度显示这三种温度。它应该用每个值所代表的温度刻度来标识这3个值,下面将华氏温度转换为摄氏温度的方程:

Celsius = 1.8*Fahrenheit +32.0

通常用在科学上绝对温度的刻度是0代表绝对零,是可能温度的下界,下面是将摄氏温度转换为绝对温度的方程:

Kelvin = Celsius +273.16

Temperatures()函数使用const来创建代表该转换里面3个常量的符号。main()函数将使用一个循环来允许用户重复输入温度,当用户输入q或是其它非数字数值时,循环结束。

#include <stdio.h>void Temperatures(double fahrenheit);int main(void){double f;printf("请输入一个华氏温度:\n");fflush(stdout);while(scanf("%lf",&f) != 0){Temperatures(f);printf("请输入一个华氏温度,退出请输入q:\n");fflush(stdout);}printf("结束\n");return 0;}void Temperatures(double fahrenheit){const double CA = 1.8;const double CB = 32.0;const double CC = 273.16;double celsius = CA * fahrenheit + CB;double kelvin = celsius + CC;printf("Fahrenheit:%.2f,Celsius:%.2f,Kelvin:%.2f\n",fahrenheit,celsius,kelvin);}

0 0