王道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;
}
//逐语句是每次执行一条语句,逐过程是逐一个过程,语句可以跳进函数内部,但是过程只能函数过程
相关推荐
小陈工2 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
H Journey2 小时前
C++之 CMake、CMakeLists.txt、Makefile
开发语言·c++·makefile·cmake
lly2024067 小时前
C 标准库 - `<stdio.h>`
开发语言
沫璃染墨7 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
jwn9997 小时前
Laravel6.x核心特性全解析
开发语言·php·laravel
迷藏4947 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
功德+n7 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
明日清晨7 小时前
python扫码登录dy
开发语言·python
我是唐青枫8 小时前
C#.NET gRPC 深入解析:Proto 定义、流式调用与服务间通信取舍
开发语言·c#·.net
JJay.8 小时前
Kotlin 高阶函数学习指南
android·开发语言·kotlin