王道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;
}
//逐语句是每次执行一条语句,逐过程是逐一个过程,语句可以跳进函数内部,但是过程只能函数过程
相关推荐
lly2024062 小时前
SQLite 安装指南
开发语言
星火开发设计2 小时前
C++ deque 全面解析与实战指南
java·开发语言·数据结构·c++·学习·知识
ID_180079054732 小时前
除了Python,还有哪些语言可以解析淘宝商品详情API返回的JSON数据?
开发语言·python·json
草莓熊Lotso2 小时前
Qt 信号与槽深度解析:从基础用法到高级实战(含 Lambda 表达式)
java·运维·开发语言·c++·人工智能·qt·数据挖掘
superman超哥3 小时前
Rust 异步错误处理最佳实践
开发语言·rust·编程语言·rust异步错误处理·rust最佳实践
脏脏a3 小时前
C++ STL list 模拟实现:从底层链表到容器封装
开发语言·c++·stl·双链表
故事不长丨10 小时前
C#正则表达式完全攻略:从基础到实战的全场景应用指南
开发语言·正则表达式·c#·regex
哈库纳玛塔塔11 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
你怎么知道我是队长11 小时前
C语言---typedef
c语言·c++·算法