CPrimerPlus 第五章练习题,自我记录下

记录一下学习过程:D

5.11.1

#include <stdio.h>
const int MINS = 60;
int main()
{
    int mins;//用户输入的分钟值
    int left_mins, hour;//剩余的分钟、小时
    _Bool status; 

    printf("请输入分钟:");
    status = scanf_s("%d", &mins) == 1; //利用scanf的特性,若成功读取mins的值,则返回1给status
    while (status)
    {
        hour = mins / MINS;//求小时
        left_mins = mins % MINS;//求剩余分钟
        printf("输入的分钟为:%d,换算过来是%d小时%d分钟(若想继续转换,请输入数字;若退出请输入非数字)\n", mins, hour, left_mins);
        status = scanf_s("%d", &mins) == 1; //同上,非数字则退出循环,进入下一语句
    }

    printf("see you next time!");

    return 0;
}

5.11.2

#include <stdio.h>
int main()
{
    int nums, bignum;//读取的数字和比其大10的数字
    printf("pls entry a number:");
    scanf_s("%d", &nums);
    bignum = nums + 10;

    while (nums <= bignum) //小于等于bignum前,都进行循环
    {
        printf("%d\n", nums++);//控制格式,打印nums
    }
    return 0;
}

5.11.3

#include <stdio.h>
const int WEEKS = 7;
int main()
{
    int day, week, left_days; 
    _Bool status;
    printf("pls entry days:");
    status = scanf_s("%d", &day) == 1;

    while (status) 
    {
        week = day / WEEKS;
        left_days = day % WEEKS;
        printf("%d days are %d weeks, %d days\n", day, week, left_days);
        printf("pls entry next days(non nums to quit):");
        status = scanf_s("%d", &day) == 1;
    }
    printf("enjoy it!\n");
    return 0;
}

5.11.4

/*
1feet = 12inch or 30.48cm
1inch = 2.54cm
*/
#include <stdio.h>
#define PER_INCH 2.54
#define PER_FEET 30.48
int main()
{
    float cm, inch;
    int feet;
    
    printf("enter a height in centimeters: ");
    scanf("%f", &cm);
   
    while(cm)
  {
    feet = cm / PER_FEET;
    //此处利用了feet是整数类型,所以会截断cm/30.48后的小数点
    inch = (cm - feet * PER_FEET) / PER_INCH;
    //然后可以用CM直接减feet*30.48,而将剩余的数值*2.54
    printf("%.1f cm = %d feet, %.1f inches\n", cm, feet, inch);
    printf("enter a height in centimeters (<=0 to quit): ");
    scanf("%f", &cm);
  }
   
    printf("bye\n");
   
    return 0;
}

 5.11.5

#include <stdio.h>
int main()
{
    int count = 0;
    int sum = 0;
    int days;

    printf("enter workdays: ");
    scanf("%d", &days);
    
    while(count++ < days)
    {
        sum = sum + count;
    }
    printf("you can earn $%d!\n", sum);
    
    return 0;
}

5.11.6

#include <stdio.h>
int main()
{
    int count = 0;
    int sum = 0;
    int days;
   
    printf("enter workdays: ");
    scanf("%d", &days);
    while(count++ < days)
    {
        sum = sum + count * count ;
    }
    printf("you can earn $%d!\n", sum);
   
    return 0;
}

5.11.7

#include <stdio.h>
void cube(double n);
int main()
{
    double n = 0;
    printf("pls enter a number, then program will calulate a cube\n");
    cube(n);

    return 0;
}

void cube(double n)
{
    scanf_s("%lf", &n); //由于是double,所以用scnaf()读取用%lf转换
    n = n * n * n;
    printf("the number cube is:%.3f ", n);
    //printf()没有%lf这一说,所以无论是double还float都是使用%f
}

5.11.8

#include <stdio.h>
//void mod_f (int n);
int main()
{
    int num2, num1;
    printf("this program computes moduli.\n");
    printf("enter an integer to serve as the second operand: ");
    scanf_s("%d\n", &num2);
    printf("now enter the first operand: ");
    scanf_s("%d", &num1);
    
    while(num1)
    {
        printf("%d %% %d is %d\n", num1, num2, num1%num2);
        printf("enter next number for first operand(<= 0 to quit): ");
        scanf_s("%d\n", &num1);
    }
    printf("done\n");
    
    return 0;
}

5.11.9

#include <stdio.h>
void Temperatures(double f); //k是Kelvins 开氏度
int main()
{
    double f;
    printf("输入华氏度:");

    while (scanf_s("%lf", &f) == 1)
    {
        Temperatures(f);
        printf("请继续输入(q to quit):");
    }

    printf("done!\n");
    return 0;
}

void Temperatures(double f1)
{
    const double ktemp = 273.16;
    double k, c;
    c = 5.0 / 9.0 * (f1 - 32);
    k = c + ktemp;
    printf("1.华氏度 = %.2f\n", f1);
    printf("2.摄氏度 = %.2f\n", c);
    printf("3.开氏度 = %.2f\n", k);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值