题目基于DevC++或VC运行
2025.1.22打卡任务
第1章 C语言概述
- 1.编写代码打印(以下三行行首的空心圆圈用于分级,打印时请忽略):
- ===========
- hello world
- ===========
- 2.main()函数前方加int或void有何区别?
- 3.解释以下代码段的含义
- "#include"
- <stdio.h>
- return 0
- printf("zhangsan")
- main()及其后方的"{}"
- 4.C程序的完整运行步骤有哪些?假设源文件名为“a.c”,运行期间还生成了哪些文件?
- 5.由0和1组成的二进制指令又称为什么语言?
- 6.宏定义分为哪两种,简述其一般形式。
- 7.补充:编译型语言和解释型语言。
- 编译型(C C++ Java C# Go):代码写完后,编译器将其变成另外一个文件(如C程序链接后生成的“exe”可执行程序),然后交给计算机执行
- 解释型(python php ruby javascript perl):写完代码交给解释器,解释器会从上到下一行行代码执行:边解释边执行
- 编译型语言和解释型语言的区别类似于全文翻译VS实时翻译
- Windows计算机有时运行软件会提示“xxx.dll文件缺失”,该文件就是编译后生成的。
- 出现错误时
- python代码要运行到某一句才知道错误(边解释边执行),所以错误之前的print可以正常输出,如以下代码:

- C语言代码必须通过编译才能知道错误,如果有错误,错误前方的语句中即使前方有printf也无法输出。错误会导致C源程序无法生成exe程序,进而无法执行

第2章 基本数据类型与简单程序设计
2025.1.23打卡任务
- 1.列举C语言中常用标准数据类型的英文名称和长度(以B为单位)
- 2.unsigned char/unsigned short类型的取值范围分别是多少,为什么?
- 3.C语言中八进制数、十六进制数分别以什么开头,包含哪些基数?
- 4.十进制如何转化为二进制数?
- 5.二进制、八进制和十六进制数如何转化为十进制数?
2025.1.24打卡任务:进制相关
- 1.进制基本概念
- 基数:进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。
- 位权:进位制中每一固定位置对应的单位值。
- 如十进制的个位位权为10^0(1) 、十位位权为10^1(10)、 百位位权为10^2(100),以此类推
- 2.进制分类
- 十进制:生活中最常用的进制,满十进一,包含数字0~9(任意十进制数拆分开都是由这十个基数构成)
- 八进制:以0开头,满八进一,包含数字0~7(任意八进制数拆分开都是由这八个基数构成)
- 十六进制:以0x或0X开头,包含数字0~9、 字母 A~ F或a~f; A/a代表数字10,F/f代表数字15(任意十六进制数拆分开都是由这十六个基数构成)
- 用字母代替10~15可避免歧义,如果不引入字母的话,如0X931087中的10是看作十还是一和零,容易产生歧义
- 3.二/八/十六进制转十进制
- 拆分十进制数
- 从十进制数的拆分出发,对比得到其他进制转为十进制的方法。
- 2354=2x10^3 + 3x10^2 + 5x10^1 + 4x10^0=2354 ---> 每一位的数与该位位权相乘后相加求和
- 拆分二进制
- 二进制数只有0和1两种数字组成
- 二进制数每一位的位权为2^n
- (1100)2 = 1x2^3 + 1x2^2 + 0x2^1 + 0x2^0 = 12
- 转换方法
- 对于形式化的进制表示可以从0开始,对数字的各个数位进行编号,即个位起往左依次为编号0,1,2,……;对称的,从小数点后的数位则是-1,-2,……
- 十进制数110,其中百位上的1表示1个10^2, 即100,十位的1表示1个10^1, 即10,个位的0表示0个10^0,即0
- 二进制数110,其中高位的1表示1个2^2, 即4,低位的1表示1个2^1, 即2,最低位的0表示0个2^0,即0
- 十六进制数110,其中高位的1表示1个16^2, 即256,低位的1表示1个16^1, 即16,最低位的0表示0个16^0,即0
- 总结
- 在数制中,各位数字所表示值的大小不仅与该数字本身的大小有关,还与该数字所在的位置有关,这种关系称为数的位权
- 十进制数的位权是以10为底的幂,二进制数的位权是以2为底的幂,十六进制数的位权是以16为底的幂。数位由高向低,以降幂的方式排列。无论是二进制、八进制还是十六进制,各位上的位权与该位上的数相乘,最后再相加得到的和就是它转为十进制的结果。
- 4.十进制转为二/八/十六进制
- 方法1(基础方法):短除法,除到商为0截止;余数要倒序相连
- 注意:十进制转为多少进制,除数就是多少(除二取余 除八取余 除十六取余)
- 案例


- 方法2(进阶方法)
- 原理:二进制转十进制是由若干个2的整数次幂相加得到的,那反过来,十进制转为二进制可以拆分为若干个2的整数次幂的和。
- 必备:2的0到10的幂次方
- 案例
2025.1.25打卡任务:进制计算
- 1.将十进制数8 20转为八进制
- 2.将十六进制数0X3a转为十进制
- 3.将二进制数1100转为十六进制
2025.1.27打卡任务:字符
- 1.求以下字符的ASCII码:'a' 'z' 'A' 'Z' '0' 空格符 空字符
- 2.列举5个常用的转义字符并说明其作用
- 补充【生产环境应用】
#include <stdio.h>
#include <windows.h>
int main(){
int i;
for(i = 1; i <= 100; i++) {
printf("%d%%\r", i);
Sleep(200);
}
return 0;
}
- 在读取大文件时,可结合'\r'打印文件的读取进度(百分比)
import os
import time
file_size = os.stat('./file/zhangsan.jpg').st_size
read_size = 0
with open('./file/zhangsan.jpg', mode='rb') as f1:
while read_size < file_size:
chunk = f1.read(1000)
read_size += len(chunk)
val = int(read_size / file_size * 100)
print("%s%%\r" %val, end="")
time.sleep(0.01)
- 3.简述圆括号、乘法、除法、模除、加法和减法的书写方式、优先级,并说明除法和模除运算的特性
2025.2.4打卡任务:输入输出 格式符 运算符 数学函数
- 1.简述函数printf()和scanf()的一般形式和常用的输入或输出格式符
- 2.使用自增、自减运算符时要注意什么(开放式回答)
- 3.列举5个常用的数学函数
2025.2.9打卡任务:运算符 弧度 结构化程序
- 1.列举6个常用的位运算符、优先级、运算特征
- 2.什么是弧度?如何将角度转换为弧度?
- 3.结构化程序有哪几种基本结构?
第3章 分支结构程序设计
2025.2.11打卡任务
- 1.简述常用的关系运算符的含义及其优先级
- 2.简述常用的逻辑运算符的含义、优先级和运算特征
- 3.以下3段代码的执行逻辑有何区别(flag已赋初值)
if(flag) {
printf("hello world");
}
if(flag = 0) {
printf("hello world");
}
if(flag == 1) {
printf("hello world");
}
2025.2.12打卡任务
int a=3, b=4;
a=a+b-2;
y=(a++, b++&&a++);
- 2.以下代码段是否有错误?说明理由
- 参考答案:
y=0
后方没有“;”;if分支后的两条语句应该加“{}”括起来
if(x > y)
printf("%d的值更大", x);
y = 0
else
printf("%d的值更大", y);
- 3.假设整型数据a、b、c均已赋值,请用一条语句实现将a、b、c中的最大值赋值给max
- 参考答案:
max = (max = (a>b?a:b))>c?max:c;
2025.2.13打卡任务
- 1.列举3种C语言中常用的构造类型
- 2.读代码写结果
int i, j, a=0;
for(i=1;i<=2;i++){
for(j=1;j<=4;j++){
if(j%2) break;
else continue;a++;
}
}
printf("%d\n", a);
// 答案为0
- 3.选出合法的C语言标识符(答案:Else Scanf)
for 1_a a# Else Scanf
2025.2.14打卡任务
- 1.已知学生测试总分数为100分,现输入学生的成绩(整数),若成绩不低于90则打印A,若不低于80且低于90则打印B,若不低于70且低于80则打印C,低于70分打印D。用switch结构实现。
- 2.列举2种交换变量a和变量b值的方法(假设a b均有初值)
- 3.循环结构的程序通常包含哪3部分
课外拓展 写代码
2025.2.5打卡任务:编程练习
- 1.现有一大于1的正整数num,a1、a2、a3...an是num所有的因数(不含num本身)。现做如下定义:若a1 + a2 + a3 + ... +an = a1 * a2 * a3 * ... * an = num,则称num为“具有完美性质的数”。
- 填空:闭区间[2, 1000]中所有的“具有完美性质的数”有___________
- 编程:验证上一题,打印输出2~1000所有的“具有完美性质的数”
2025.2.6打卡任务:编程练习
- 1.(2024.3.9 软件与应用技术技能考试 第一场)输入一个三行四列的整型二维数组,将数组每行的平均值放在一个一维数组中并输出,平均值保留3位小数。参考如下:
- 2.(2024.3.9 网络技术技能考试 第一场)输入两行英文单词,输出下标为奇数位的字符
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」