C Primer Plus(第6版)—第4章编程练习

编程环境:VSCode + Remote-WSL,Ubuntu 20.04 LTS (GNU/Linux 4.4.0-18362-Microsoft x86_64)

/*
    编写程序,提示用户输入名和姓,然后以“名 姓”的格式打印出来
*/

#include<stdio.h>

int main(void){
    char name[10];
    char last_name[10]; 

    printf("What`s your name: ");
    scanf("%s",  name);

    printf("What`s your last name: ");
    scanf("%s", last_name);

    printf("%s.%s\n", last_name, name);

    return 0;
}
/*
    编写程序,提示用户输入名字,并执行以下操作:
    1. 打印名字,包括双引号
    2. 在宽度为 20 的字段右端打印名字,包括双引号
    3. 在宽度为 20 的字段左端打印名字,包括双引号
    4. 再比姓名宽度宽 3 的字段中打印名字
*/

#include<stdio.h>
int main(void){
    char name[20];

    printf("Please input your name: ");
    scanf("%s", name);

    printf("your name: \"%s\"\n", name);
    printf("your name: \"%20s\"\n", name);
    printf("your name: \"%-20s\"\n", name);

    int width = strlen(name) + 3;
    printf("your name: |%*s| \n", width, name);

    return 0;
}

 理想是美好的,Debug 是残酷的。结果不重要,重要的是过程,耐心

/*
    编写程序,读取浮点数,
    首先以小数点记数法打印,然后以指数记数法打印
*/
#include<stdio.h>
int main(void){
    float number;

    printf("Please input float number: ");
    scanf("%f", &number);

    printf("The input is %.1f or %.1e .\n", number);
    printf("The input is %+.3f or %.3E .\n", number);

    return 0;
}
/*
    编写程序,提示用户输入身高(厘米)和姓名,然后显示
*/
#include<stdio.h>
int main(void){
    float height;
    char name[30];

    printf("Please input your name and hight(cm): ");
    scanf("%s %f", name, &height);

    float height_m = height / 100;
    printf("your name: %s, your hight: %.0f cm.\n", name, height);
    printf("your name: %s, your hight: %.2f m.\n", name, height_m);

    return 0;
}

实践出真知,注意琐碎的细节,逐步优化程序结构

/*
    编写程序,提示用户输入以兆位每秒(Mb/s)为单位的下载速度,
    以兆字节(MB)为单位的文件大小,程序计算文件的下载时间
*/
#include<stdio.h>
int main(void){
    float download_speed;
    float file_size;
    float download_time;

    printf("Please input file size(MB) and download speed(Mb/s): ");
    scanf("%f %f", &file_size, &download_speed);

    download_time = file_size / download_speed;
    if (download_speed != 0)
    {
        printf("download_time: %.0f \n", download_time);
    }else
    {
        printf("Waitting... \n");
    }

    return 0;
}
/*
    编写程序,提示用户输入名,再输入姓,在一行打印用户输入的名和姓
    下一行分别打印名和姓的字母数,先右对齐,再左对齐
*/
#include<stdio.h>
int main(void){
    char name[30];
    char last_name[30];
    int sum_name;
    int sum_last_name;
    int width_name;
    int width_last_name;

    printf("Please input your name: ");
    scanf("%s", name);
    printf("Please input your last name: ");
    scanf("%s", last_name);

    sum_name = strlen(name);
    sum_last_name = strlen(last_name);
    width_name = sum_name;
    width_last_name = sum_last_name;

    printf("%s|", name);
    printf("%s|\n", last_name);
    printf("%*d|", width_name, sum_name);
    printf("%*d|\n", width_last_name, sum_last_name);

    printf("|%s", name);
    printf("|%s\n", last_name);
    printf("|%-*d", width_name, sum_name);
    printf("|%-*d\n", width_last_name, sum_last_name);
    return 0;
}

 

上一篇:C++基础知识体系导图


下一篇:C Primer Plus(第六版)第六章编程题答案参考