c primer plus(第六版) 第五章答案(vscode编译运行通过)

1.编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的时间。使用#define 或const 创建一个表示60 的符号常量或const 变量。通过while 循环让用户重复输入值,直到用户输入小于或等于0 的值才停止循环。

#include <stdio.h>
#define TIME 60

int main(void)
{
    int Total_minutes;

    printf("Please input total minutes:(and input <=0 to quit)");
    scanf("%d", &Total_minutes);
    while(Total_minutes>=0)
    {
        printf("The hour is %d\n", Total_minutes/TIME);
        printf("The minute is %d\n", Total_minutes%TIME);
        printf("Please input total minutes:(and input q to quit)");
        scanf("%d", &Total_minutes);
    }
    
    return 0;
}

2.编写一个程序,提示用户输入一个整数,然后打印从该数到比该数大10 的所有整数( 例如,用户输入5 ,则打印5 ~15 的所有整数,包括5 和15 )。要求打印的各值之间用一个空格、制表符或换行符开。

在这里插入代码片#include <stdio.h>
#define LEN 10
int main(void)
{
    int num,Limit;

    printf("Please input a number: ");
    scanf("%d",&num);
    Limit = num + LEN;
    while(num <= Limit)
    {
        printf("%d ",num++);
    }
    
    return 0;
} 

3.编写一个程序,提示用户输入天数, 然后将其转换成周数和天数。例如,用户输入18 ,则转换成2 周4 天。以下面的格式显示结果。

18 days are 2 weeks, 4 days.

通过while 循环让用户重复输入天数,当用户输入一个非正值时( 如0 或-20 ),循环结束。

#include <stdio.h>
#define WEEK 7
int main(void)
{
    int n,weeks,days;

    printf("Please input days:(and input <=0 to quit)");
    while(scanf("%d",&n) == 1 && n > 0)
    {
        weeks = n / WEEK;
        days = n % WEEK;
        printf("The %d days equal %d weeks and %d days\n",n,weeks,days);
        printf("Please input days:(and input <=0 to quit)");
    }
    
    return 0;
} 

4.编写一个程序,提示用户输入一个身高( 单位: 厘米),并分别以英尺和英寸为
单位显示该值,允许有小数部分。程序应该能让用户重复输入身高,直到用户输入一个非正值。其输出示例如下:

Enter a height in centimeters: 182
182.0 cm = 5 feet, 11.7 inches
Enter a height in centimeters (<=0 to quit): 168.7
168.7 cm = 5 feet, 6.4 inches
Enter a height in centimeters (<=0 to quit): 0
bye
#include <stdio.h>
#define CM_TO_FEET 30.48f
#define CM_TO_INCH 2.54f
int main(void)
{
    float cm,inch;
    int feet;

    printf("Enter a height in centimeters:");
    while(scanf("%f",&cm) == 1 &&  cm> 0)
    {
        feet = (int)(cm / CM_TO_FEET);
        inch = (cm - feet*CM_TO_FEET)/CM_TO_INCH;
        printf("%.1f cm = %d feet, %.1f inches\n",cm,feet,inch);
        printf("Enter a height in centimeters(<=0 to quit):");
    }
    printf("bye\n");
    
    return 0;
} 

5.修改程序addemup.c ( 程序清单5.13),你可以认为addemup.c 是计算20天里赚多少钱的程序( 假设第1天赚$1、 第2天赚$2、 第3天赚$3,以此类推)。修改程序, 使其可以与用户交互,根据用户输入的数进行计算( 即,用读入的一个变量来代替20)。

#include <stdio.h>
int main(void)
{
    int count,total_money;
    int days;

    printf("Please input total days:");
    scanf("%d",&days);
    count = 0;
    total_money = 0;
    while(count++ < days)
        total_money = total_money + count;
    printf("You earn %d money in %d days\n",total_money,days);
    
    return 0;
} 

6.修改编程练习5的程序, 使其能计算整数的平方和( 可以认为第1天赚$1、 第2天赚$4、 第3天赚$9, 以此类推, 这看起来很不错) 。 C没有平方函数, 但是可以用n * n 来表示n 的平方。

#include <stdio.h>
int main(void)
{
    int count,total_money;
    int days;

    printf("Please input total days:");
    scanf("%d",&days);
    count = 0;
    total_money = 0;
    while(count++ < days)
        total_money = total_money + count * count;
    printf("You earn %d money in %d days\n",total_money,days);
    
    return 0;
} 

7.编写一个程序, 提示用户输入一个double 类型的数, 并打印该数的立方值。 自己设计一个函数计算并打印立方值。 main() 函数要把用户输入的值传递给该函数。

#include <stdio.h>
void cube(double num);
int main(void)
{
    double num;

    scanf("%lf",&num);
    cube(num);

    return 0;
} 

void cube(double num)
{
    printf("The %.2f's cube is %.2f\n",num,num*num*num);
}

8.编写一个程序, 显示求模运算的结果。 把用户输入的第1个整数作为求模运算符的第2个运算对象, 该数在运算过程中保持不变。 用户后面输入的数是第1个运算对象。 当用户输入一个非正值时, 程序结束。 其输出示例如下:

This program computes moduli.
Enter an integer to serve as the second operand: 256
Now enter the first operand: 438
438 % 256 is 182
Enter next number for first operand (<= 0 to quit): 1234567
1234567 % 256 is 135
Enter next number for first operand (<= 0 to quit): 0
Done
#include <stdio.h>
int main(void)
{
    int first_operand,second_operand;

    printf("This program computes moduli.\n");
    printf("Enter an integer to serve as the second operand:");
    scanf("%d",&second_operand);
    printf("Now enter the first operand:");
    while(scanf("%d",&first_operand) == 1 && first_operand > 0)
    {
        printf("%d %% %d is %d\n",first_operand,second_operand,
                                  first_operand % second_operand);
        printf("Enter next number for first operand(<=0 to quit):");
    }

    return 0;
} 

9 编写一个程序, 要求用户输入一个华氏温度。 程序应读取double 类型的值作为温度值, 并把该值作为参数传递给一个用户自定义的函数Temperatures() 。 该函数计算摄氏温度和开氏温度, 并以小数点后面两位数字的精度显示3种温度。 要使用不同的温标来表示这3个温度值。 下面是华氏温度转摄氏温度的公式:
摄氏温度 = 5.0 / 9.0 * (华氏温度 - 32.0)
开氏温标常用于科学研究, 0 表示绝对零, 代表最低的温度。下面是摄氏温度转开氏温度的公式:
开氏温度 = 摄氏温度 + 273.16
Temperatures() 函数中用const 创建温度转换中使用的变量。 在main() 函数中使用一个循环让用户重复输入温度, 当用户输入q 或其他非数字时, 循环结束。 scanf() 函数返回读取数据的数量, 所以如果读取数字则返回1 , 如果读取q 则不返回1 。 可以使用==运算符将scanf() 的返回值和1 作比较, 测试两值是否相等。

#include <stdio.h>
void Temperatures(double Fahrenheit);

int main(void)
{
    double Fahrenheit;
    printf("Please input a fahrenheit value(and input q to quit):");
    while(scanf("%lf",&Fahrenheit) == 1)
    {
         Temperatures(Fahrenheit);
    }


    return 0;
} 

void Temperatures(double Fahrenheit)
{
    const double F_to_C1 = 5.0f, F_to_C2 = 9.0f,F_to_C3 = 32.0f,
                 F_to_D = 273.16f;

    double centigrade_degree,degree_kelvin;

    centigrade_degree = (Fahrenheit - F_to_C3)*F_to_C1/F_to_C2;
    degree_kelvin = centigrade_degree + F_to_D;
    printf("The %.2f Fahrenheit equal %.2f centigrade degree and \
echo %.2f degree kelvin\n", Fahrenheit,centigrade_degree,degree_kelvin);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值