Skip to content

第一周作业答案

  1. 使用vs创建一个程序,描述一下操作流程。观察一下创建解决方案和项目的时候,分别新建了哪些文件和文件夹?
创建解决方案时,会在文件系统当中创建一个同名文件夹
创建项目时,会在解决方案文件夹里面创建一个同名文件夹,并且内部有源文件、头文件和资源文件等文件夹
  1. vs存在着普通状态和调试状态。如何进入调试状态?进入调试状态以后,调整好输出、监视、内存和调用堆栈窗口的布局。
打断点之后再点击开始调试即可进入调试状态
  1. 如何查看一个变量的内存布局?描述一下操作行为。
先在监视窗口输入 &变量名 ,然后根据监视窗口里面的地址值去访问内存窗口
  1. 下面的代码片段有错误,请指出来
C++
#include <stdio.h>; // 不要分号
#define MESSAGE = "Happy new year!" //不要等于号
  1. 测试下本地环境中,short\int\long\long long\unsigned int\分别需要多大的存储空间?使用了什么运算符?
short 2
int 4
long 4
long long 8
unsigned int 4
使用sizeof运算符
  1. 使用字符字面值的字符模式、16进制模式、8进制模式表示字符c;使用整数来表示字符c,写出对应的代码。
c
#include <stdio.h>
int main(){
	char ch1 = 'c';
    char ch2 = 0x63;
    char ch3 = 0143;
    char ch4 = 99;
    printf("ch1 = %c, ch2 = %c, ch3 = %c, ch4 = %c\n",
          ch1,ch2,ch3,ch4);
    return 0;
}
  1. 如何将一个字符2转换成整数2?如何将一个字符A转换成字符a?
c
#include <stdio.h>
int main(){
    char ch1 = '2';
    int i = ch1 - '0';
    char ch2 = 'A';
    char ch3 = ch2 + 32;
    printf("i = %d, ch3 = %c\n", i, ch3);
    return 0;
}
  1. 什么是缓冲区?我们使用了哪些缓冲区?
缓冲区本质上是一块临时存储数据的内存区域(一般是在内存中分配的),它在速度较慢的内存和 I/O 设备与速度较快的 CPU 之间起到桥梁的作用。
stdin是标准输入缓冲区,和scanf getchar等函数相关
stdout是标准输出缓冲区,和printf putchar等函数相关
  1. 缓冲区的数据是先进先出还是后进先出?
先进先出
  1. scanf函数取出标准输入缓冲区的数据,使用%d和%c有什么区别?
%d 读取整数,会忽略前置空白字符
%c 读取字符,不会忽略前置空白字符
  1. scanf函数的返回值是什么?如何输入一个EOF控制符,此时scanf的返回值是多少?
scanf返回值是整数,是成功读取的占位符的个数
在Windows当中按下(多次)ctrl+z可以输入EOF,此时scanf返回-1
  1. 整理已经学习过的printf和scanf相关的控制符,使用表格记录下来。
  1. 自学putchar函数和getchar函数。
  1. 完成OJ练习C语言学习 | hello
c
#include<stdio.h>
int main() {
    printf("hello wangdao\n");
    return 0;
}
  1. 完成OJ练习C语言学习 | 计算a+b
c
#include <stdio.h>
int main(){
	int a,b;
	scanf("%d%d",&a,&b);
	printf("%d\n",a+b);
    return 0;
}

16.使用VS的断点和调试工具,尝试理解下面代码的运行过程:

c++
#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(); //这里需要使用F11才能进入到函数里面

    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;
}