使用vs创建一个程序,描述一下操作流程。观察一下创建解决方案和项目的时候,分别新建了哪些文件和文件夹?
创建程序的时间跟着vs的指示创建就行了,解决方案我觉得是一个问题的解决所需要的所有项目的容器,创建解决方案,注意路径 。创建解决方案后面会产生一个.slnx的文件,以及一个x64的文件夹,这两个的作用暂时没明白
vs存在着普通状态和调试状态。如何进入调试状态?进入调试状态以后,调整好输出、监视、内存和调用堆栈窗口的布局
关键在这里有个问题如果有太多的文件在项目中要先把目标文件设置成启动文件,否则不会执行当前文件,断让是执行到上一行。在调试下找window就可以监视目标窗口了


如何查看一个变量的内存布局?描述一下操作行为
首先先把变量添加到监视panel上,然后复制变量的ptr地址到内存panel上就会显示变量的地址和值,byte字节是数据的最小单位是两个16位数,8个bits,64位就是地址表达的最大范围是64个bits
下面的代码片段有错误,请指出来
cpp
#include <stdio.h>;
#define MESSAGE = "Happy new year!"
<> 后面不加;宏定义是不用=号的 直接空格;
测试下本地环境中,short\int\long\long long\unsigned int\分别需要多大的存储空间?使用了什么运算符?
short 2 char 1int4 long8 long long16 单位是bytes

使用字符字面值的字符模式、16进制模式、8进制模式表示字符c;使用整数来表示字符c,写出对应的代码。
cpp
char c1 = 'c'; // 直接使用字符 'c'
printf("字符字面值: %c\n", c1); // 输出: c
cpp
char c2 = '\x63'; // 十六进制转义序列
printf("十六进制模式: %c\n", c2); // 输出: c
cpp
char c4 = 99; // 直接使用ASCII码的十进制值
printf("整数模式: %c\n", c4); // 输出: c
cpp
char c3 = '\143'; // 八进制转义序列
printf("八进制模式: %c\n", c3); // 输出: c
如何将一个字符2转换成整数2?如何将一个字符A转换成字符a?
cpp
int main()
{
char ch = 'A' +32;
int x = 0 - '0' + '2';
printf("整数%d\t小写%c",x,ch
);
return 0;
}
什么是缓冲区?我们使用了哪些缓冲区
缓冲区旨在解决速度不不同,我们有stdi stdo缓冲区。有点像上下游流速不同我们设置蓄水池
缓冲区的数据是先进先出还是后进先出
先进先出,这是自己实验出来的,为什么不是很了解。
scanf函数取出标准输入缓冲区的数据,使用%d和%c有什么区别?
scanf是读取stdi中的数据,%d%f会忽略所有前置的空白字符但是%d%c不会忽略前置空白字符,如果想忽略的话需要自己在占位符之间加一个空符,而且%d%f在遇到后置字符会停下。
cpp
scanf("%d %c", &i, &ch);//%c忽略前面的的所有空白
scanf函数的返回值是什么?如何输入一个EOF控制符,此时scanf的返回值是多少?
int类型 表示成功写入变量的数量,EOF三个ctrlz,但是我没太理解什么是Eof,返回的是-1;
ctrlz表示的是输入流的结束。
整理已经学习过的printf和scanf相关的控制符,使用表格记录下来

自学putchar函数和getchar函数

使用VS的断点和调试工具,尝试理解下面代码的运行过程
cpp
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 此函数运行结果不符合预期,需要找出bug
void print_rectangle(int line, int column) {
for (int i = 0; i < line; i++) {
for (int j = 0; j < column; j++) {
printf("#");
}
}
}
void test(void){
printf("test!\n");
printf("test!\n");
printf("test!\n");
}
int main(void) {
printf("hello world!\n");
test();
int a = 10;
int b = 20;
int sum = a + b;
printf("请键盘输入一个int整数: ");
int c;
scanf("%d", &c);
if (c > 0){
printf("您输入的数大于0!\n");
}else if (c < 0) {
printf("您输入的数小于0!\n");
}else{
printf("您输入的数就是0!\n");
}
printf("接下来开始打印一个矩形,请输入要打印矩形的行数和列数: \n");
int line;
int column;
scanf("%d", &line);
scanf("%d", &column);
print_rectangle(line,column);
return 0;
}
cpp
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 此函数运行结果不符合预期,需要找出bug
void print_rectangle(int line, int column) {
for (int i = 0; i < line; i++) {
for (int j = 0; j < column; j++) {
printf("#");
}//这里有问题因为没有换行所以这里所有的#会一行输出
printf("\n");
}
}
void test(void) {
printf("test!\n");
printf("test!\n");
printf("test!\n");
}
int main(void) {
printf("hello world!\n");
test();
int a = 10;
int b = 20;
int sum = a + b;
printf("请键盘输入一个int整数: ");
int c;
scanf("%d", &c);
if (c > 0) {
printf("您输入的数大于0!\n");
}
else if (c < 0) {
printf("您输入的数小于0!\n");
}
else {
printf("您输入的数就是0!\n");
}
printf("接下来开始打印一个矩形,请输入要打印矩形的行数和列数: \n");
int line;
int column;
scanf("%d", &line);
scanf("%d", &column);
print_rectangle(line, column);
return 0;
}
//逐语句是每次执行一条语句,逐过程是逐一个过程,语句可以跳进函数内部,但是过程只能函数过程