《C Primer Plus》第2章复习题与编程练习

这篇博客回顾了C语言的基本模块——函数,并讲解了语法错误和语义错误的区别。通过一系列程序修改和打印练习,展示了C语言的变量使用、程序状态及控制流程。还包含了年龄转换为天数等实际编程问题的解决示例。

复习题

1. C语言的基本模块是什么?

函数。

2. 什么是语法错误?

语法错误违反了组成语句或程序的规则。

3. 什么是语义错误?

含义错误。

4. 程序修改

正确的代码如下:

// week_in_a_year.c
#include <stdio.h>
#include <stdlib.h>
int main(void) /* 该程序打印一年有多少周*/
{
    int s;

    s=56;
    printf("There are %d weeks in a year.\n",s);

    system("pause");
    return 0;
}

结果:
在这里插入图片描述

5. 程序打印什么内容?

6. 在main、int、function、char、=中,哪些是C语言的关键字?

int、char。

7. 输出变量words和lines的值

printf("There were %d words and %d lines.",words,lines);

8. 程序的状态

第7行:a=5, b=2
第8行:a=5, b=5
第9行:a=5, b=5

9. 程序的状态

第7行:x=10, y=5
第8行:x=10, y=15
第9行:x=150,y=15

编程练习

1. 打印姓名

程序:

// practice2_12_1.c
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    printf("Gustav Mahler\n");
    printf("Gustav\nMahler\n");
    printf("Gustav ");
    printf("Mahler\n");

    system("pause");
    return 0;
}

结果:
在这里插入图片描述

2. 打印姓名和地址

程序:

// practice2_12_2.c
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    char name[10]="xiye";
    char address[20]="UESTC";


    printf("My name is %s, my address is %s.\n", name, address);

    system("pause");
    return 0;
}

结果:
在这里插入图片描述

3. 年龄转换为天数

程序:

// practice2_12_3.c
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int year;
    int day;

    year = 22;
    day = 365 * year;
    printf("I am %d years old, which equals to %d days.\n", year, day);

    system("pause");
    return 0;
}

结果:
在这里插入图片描述

4. 打印内容

程序:

// practice2_12_4.c
#include <stdio.h>
#include <stdlib.h>
void jolly(void);
void deny(void);
int main(void)
{
    for(int i=0;i<3;i++) jolly();
    deny();

    system("pause");
    return 0;
}
void jolly(void)
{
    printf("For he's a jolly good fellow!\n");
}
void deny(void)
{
    printf("Which nobody can deny!\n");
}

结果::

5. 打印内容

程序:

// practice2_12_5.c
#include <stdio.h>
#include <stdlib.h>
void br(void);
void ic(void);
int main(void)
{
    br();
    printf(", India, China\n");
    ic();
    printf(",\nBrazil, Russia\n");

    system("pause");
    return 0;
}
void br(void)
{
    printf("Brazil, Russia");
}
void ic(void)
{
    printf("India, China");
}

结果:
在这里插入图片描述

6. 打印值

程序:

// practice2_12_6.c
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int toes;

    toes = 10;
    printf("toes=%d, 2*toes=%d, toes^2=%d\n", toes, 2 * toes, toes * toes);

    system("pause");
    return 0;
}

结果:
在这里插入图片描述

7. 打印Smile!

程序:

// practice2_12_7.c
#include <stdio.h>
#include <stdlib.h>
void smile(void);
int main(void)
{
    smile();
    smile();
    smile();
    printf("\n");
    smile();
    smile();
    printf("\n");
    smile();
    printf("\n");
    
    system("pause");
    return 0;
}
void smile(void)
{
    printf("Smile!");
}

结果:
在这里插入图片描述

8. 函数调用

程序:

// practice2_12_8.c
#include <stdio.h>
#include <stdlib.h>
void one(void);
void two(void);
int main(void)
{
    printf("starting now:\n");
    one();
    two();
    printf("three\ndone!\n");

    system("pause");
    return 0;
}
void one(void)
{
    printf("one\n");
}
void two(void)
{
    printf("two\n");
}

结果:

在这里插入图片描述

内容概要:本文系统整理了《微软面试100题完整版(含解析+备考指南)2026最新求职资源》,涵盖算法编程、逻辑思维、计算机基础、系统设计工程实践、职场综合五大核心题型,共100道高频原题,均来自微软近十年真实面试题库,剔除过时内容,新增AI工程应用、轻量化系统设计等2026年前沿考点。每道题目配有详细解题思路考察要点,覆盖数据结构、动态规划、位运算、网络协议、数据库事务、微服务架构、高并发设计等关键技术领域,并包含逻辑推理、工程排查、产品权衡等综合素质题目,全面适配微软海内外各岗位面试需求。此外,文还提供分层刷题策略、地域差异化备考建议及完整资源获取路径,助力求职者高效通关初面、复面终面。; 适合人群:准备应聘微软的应届毕业生、1-5年工作经验的技术岗从业者(如软件开发、算法、测试、数据、运维等),以及计划投递微软海外岗位的求职者;尤其适合缺乏系统面试准备、希望提升解题思维工程表达能力的人群。; 使用场景及目标:①针对微软技术面试中的算法题进行专项突破,掌握最优解法代码规范;②训练逻辑思维系统设计能力,应对高阶岗位考察;③准备终面综合问题,提升职场素养岗位匹配度表达;④根据国内/海外不同考点调整复习重点,实现精准备考。; 阅读建议:此资源以真题为核心,强调解题思路而非死记硬背,建议按“分类刷题—总结模板—模拟手撕—复盘优化”流程学习,重点关注代码边界处理、复杂度优化中英文表达逻辑,结合自身背景补充项目复盘系统设计练习,全面提升面试实战能力。
一、内容概要 本资源为基于STM32标准外设库开发的通用型RS485模块化驱动代码,采用分层模块化设计,完整包含rs485.h头文件、rs485.c驱动实现文件、main.c工程调用示例三部分代码。驱动依托USART串口通信原理,搭配DE/RE控制引脚实现RS485收发模式自动切换,搭载串口中断接收环形缓冲区数据存储机制,有效解决传统串口通信丢包、数据紊乱问题。代码全部参数、硬件引脚均采用宏定义封装,无需修改底层逻辑即可快速适配不同STM32型号及硬件电路,同时兼容Modbus-RTU通信协议场景,具备高通用性、可移植性稳定性,是完整可直接编译运行的嵌入式RS485总线通信驱动方案。 二、适用人群 1、嵌入式单片机开发初学者、在校电子信息、自动化、物联网专业学生,可用于课程设计、毕业设计、实验实训; 2、从事STM32标准库项目开发的嵌入式工程师,适配老旧标准库工程迭代功能拓展; 3、需要快速实现RS485总线通信、Modbus设备通信的项目开发人员; 4、需要学习嵌入式模块化编程、串口中断、环形缓冲区数据处理技术的技术学习者。 三、使用场景及目标 使用场景:工业设备串口通信、传感器485数据采集、Modbus-RTU主从机通信、物联网下位机数据传输、嵌入式设备远距离总线通信、课程/毕设嵌入式通信功能开发等场景,适配各类基于STM32标准库的硬件项目。 使用目标:快速搭建稳定的STM32 RS485通信驱动框架,实现485总线数据的可靠发送接收;通过模块化代码解耦业务逻辑底层驱动,降低开发难度;借助环形缓冲+中断接收机制,提升大数据帧、高频通信场景下的数据稳定性;减少重复开发工作量,实现驱动代码一键移植复用,高效完成嵌入式总线通信功能开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值