王道C语言第一周作业

使用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;
}
//逐语句是每次执行一条语句,逐过程是逐一个过程,语句可以跳进函数内部,但是过程只能函数过程
相关推荐
炸膛坦客9 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
灯澜忆梦9 小时前
GO_并发编程---定时器
开发语言·后端·golang
-银雾鸢尾-9 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-9 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
段一凡-华北理工大学12 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe13 小时前
C++——多态
开发语言·c++
心平气和量大福大13 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf
从零开始的代码生活_15 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
云小逸15 小时前
【C++ 第七阶段:模板、泛型编程与工程综合详解】
开发语言·c++