《C Primer Plus》第6版-第5章 编程练习

《C Primer Plus》第6版-第5章 编程练习

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

#define ONE_HOUR_MIN 60;

int main(void) {
    
    
    int input;
    printf("请输入分钟:");
    scanf("%d", &input);
    while (input > 0) {
    
    
        int hour = input / ONE_HOUR_MIN;
        int minute = input % ONE_HOUR_MIN;
        printf("转换结果 %d小时%d分钟\n", hour, minute);
        printf("请输入分钟:");
        scanf("%d", &input);
    }
    printf("输入数据小于或等于0,程序结束\n");
    return 0;
}

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

int main(void) {
    
    
    int input;
    printf("请输入数据:");
    scanf("%d", &input);
    int max = input + 10;
    while (input <= max) {
    
    
        printf("%d ", input++);
    }
    return 0;
}

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

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

#include <stdio.h>

int main(void) {
    
    
    const int ONE_WEEK_DAY = 7;
    int input;
    printf("please input days:");
    scanf("%d", &input);
    while (input > 0) {
    
    
        int week = input / ONE_WEEK_DAY;
        int day = input % ONE_WEEK_DAY;
        printf("%d days are %d weeks, %d days.\n", input, week, day);
        printf("please input days:");
        scanf("%d", &input);
    }
    return 0;
}

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

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

int main(void) {
    
    
    int count, sum;
    count = 0;
    sum = 0;

    while (count++ < 20) {
    
    
        sum = sum + count;
    }
    printf("sum = %d\n", sum);
    return 0;
}
#include <stdio.h>

#include <stdio.h>

int main(void) {
    int count, sum, day;
    count = 0;
    sum = 0;

    printf("请输入天数:");
    scanf("%d", &day);
    while (count++ < day) {
        sum = sum + count;
    }
    printf("sum = %d\n", sum);
    return 0;
}

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

#include <stdio.h>

int main(void) {
    
    
    int count, sum, day;
    count = 0;
    sum = 0;

    printf("请输入天数:");
    scanf("%d", &day);
    while (count++ < day) {
    
    
        sum = sum + count * count;
    }
    printf("sum = %d\n", sum);
    return 0;
}

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

double calCube(double num);

int main(void) {
    
    
    double input = 1.1;
    printf("请输入浮点数据:");
    scanf("%lf", &input);
    double result = calCube(input);
    printf("计算结果是 %f", result);
    return 0;
}

double calCube(double num) {
    
    
    return num * num * num;
}

  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:");
    scanf("%d", &first_operand);
    while (first_operand > 0) {
    
    
        int result = first_operand % second_operand;
        printf("%d %s %d is %d\n", first_operand, "%", second_operand, result);
        printf("Enter next number for first operand (<= 0 to quit):");
        scanf("%d", &first_operand);
    }
    printf("Done\n");
    return 0;
}

scanf 函数解析

#include <stdio.h>

int main(void) {
    
    
    int num1, num2, num3;
    int result0 = 0,result1 = 0,result2 = 0,result3 = 0;
    while (!(result0 == 0 && result1 == 1 && result2 == 2 && result3 == 3)) {
    
    
        printf("请不要输入整数:");
        result0 = scanf("%d");
        getchar();
        printf("请输入1个整数:");
        result1 = scanf("%d", &num1);
        getchar();
        printf("请输入2个整数:");
        result2 = scanf("%d %d", &num1, &num2);
        getchar();
        printf("请输入3个整数:");
        result3 = scanf("%d %d %d", &num1, &num2, &num3);
        getchar();
        printf("输入验证结果 %d %d %d %d\n", result0, result1, result2, result3);
    }
    printf("程序退出");
    return 0;
}
  1. 运行上面的程序,如何输入才能到达程序退出?
  2. 如果删除 getchar() 函数,程序的运行逻辑和原来一致吗?

猜你喜欢

转载自blog.csdn.net/modelmd/article/details/128120049