21
2020
08

R 语言基础

一门新的语言学习一般是从输出 "Hello, World!" 程序开始,R 语言的 "Hello, World!" 程序代码如下:实例(helloworld.R)myString <- "Hello, World!"print ( myString )运行实例 »[1] "Hello, World!"以上实例将字符串 "Hello, World!" 赋值给 myString 变量,然后使用
20
2020
08

R 注释

注释主要用于对一段代码对解析,可以让阅读者更易理解,编程语言对注释会被编译器忽略掉,不会影响代码对执行。一般编程语言的注释分为单行注释与多行注释,但是 R 语言只支持单行注释,注释符号为 #。其实如果有多行注释我们只需要在每一行添加 # 号就好了。单行注释# 这是我对第一个编程代码myString <- "Hello, World!"print ( myString )多行注释# R 语言实现两个数相加  # 变量赋值a <- 9b <-
15
2020
08

R 语言教程

R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。如果你是一个计算机程序的初学者并且急切地想了解计算机的通用编程,R 语言不是一个很理想的选择,可以选择 Python、C 或 Java。R 语言与 C 语言都是贝尔实验室的研究成果,但两者有不同的侧重领域,R 语言是一种解释型的面向数学理论研究工作者的语言,而 C 语言是为计算机软件工程师设计的。R 语言是解释运行的语言(与 C 语言的编译运行不同),它的执行速度比 C 语言慢得多,不利于优化。但它在语法层面提供
12
2020
08

R 环境安装

R 语言的开发环境本身具备了图形开发环境,这与其他很多工程语言是不同的,所以开发环境最好安装在为桌面个人计算机设计的操作系统上(如 Windows, macOS 或 Ubuntu 桌面版 等)。首先,我们需要下载 R 语言环境的安装包:Windows官方地址:https://cloud.r-project.org/bin/windows/base/R-4.0.0-win.exeUSTC 镜像:https://mirrors.ustc.edu.cn/CRAN/bin/windows/base/R-
22
2020
02

do……while和while……do有什么区别?

答:前一个循环一遍再判断,后一个判断以后再循环 
22
2020
02

语句for( ;1 ;)有什么问题?它是什么意思?

答:和while(1)相同。
22
2020
02

全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

答:可以,在不同的C文件中以static形式来声明同名全局变量。   可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错 。
22
2020
02

如何引用一个已经定义过的全局变量?

答:extern。  可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。          头文件引用在编译期间报错,extern方式在连接期间报错。
22
2020
02

局部变量能否和全局变量重名?

答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "。  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 
21
2020
02

简述 strcpy、sprintf 与 memcpy 的区别

三者主要有以下不同之处:(1) 操作对象不同,strcpy 的两个操作对象均为字符串,sprintf 的操作源对象可以是多种数据类型,目的操作对象是字符串,memcpy 的两个对象就是两个任意可操作的内存地址,并不限于何种数据类型。(2) 执行效率不同,memcpy 最高,strcpy 次之,sprintf 的效率最低。(3) 实现功能不同,strcpy 主要实现字符串变量间的拷贝,sprintf 主要实现其他数据类型格式到字符串的转化,memcpy 主要是内存块间的拷贝。说明:strcpy、s
21
2020
02

简述 C、C++程序编译的内存分配情况

C、C++中内存分配方式可以分为三种:(1) 从静态存储区域分配:内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static 变量等。(2) 在栈上分配:在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3) 从堆上分配:即动态内存分配。程序在运行的时候用 malloc 或 new 申请任意大小的内存,程序员自己
21
2020
02

a 和&a 有什么区别

请写出以下代码的打印结果,主要目的是考察 a 和&a 的区别。#include<stdio.h> void main( void ) {   int a[5]={1,2,3,4,5};   int *ptr=(int *)(&a+1);  printf("%d,%d",*(a+1),*(ptr-1));   return; } 输出结果:2
21
2020
02

一个指针可以是 volatile 吗

可以,因为指针和普通变量一样,有时也有变化程序的不可控性。常见例:子中断服务子程序修改一个指向一个 buffer 的指针时,必须用 volatile 来修饰这个指针。说明:指针是一种普通的变量,从访问上没有什么不同于其他变量的特性。其保存的数值是个整型数据,和整型变量不同的是,这个整型数据指向的是一段内存地址。
21
2020
02

写一个“标准”宏 MIN

#define min(a,b)((a)<=(b)?(a):(b))注意:在调用时一定要注意这个宏定义的副作用,如下调用:((++*p)<=(x)?(++*p):(x)。p 指针就自加了两次,违背了 MIN 的本意。
21
2020
02

C中的 malloc 和C++中的 new 有什么区别

malloc 和 new 有以下不同:(1) new、delete 是操作符,可以重载,只能在 C++中使用。(2) malloc、free 是函数,可以覆盖,C、C++中都可以使用。(3) new 可以调用对象的构造函数,对应的 delete 调用相应的析构函数。(4) malloc 仅仅分配内存,free 仅仅回收内存,并不执行构造和析构函数(5) new、delete 返回的是某种数据类型指针,malloc、free 返回的是 void 指针。注意:malloc 申请的内存空间要用 fre
21
2020
02

C 语言的关键字 static 和 C++ 的关键字 static 有什么区别

在 C 中 static 用来修饰局部静态变量和外部静态变量、函数。而 C++中除了上述功能外,还用来定义类的成员变量和函数。即静态成员和静态成员函数。注意:编程时 static 的记忆性,和全局性的特点可以让在不同时期调用的函数进行通信,传递信息,而 C++的静态成员则可以在多个对象实例间进行通信,传递信息。
21
2020
02

sizeof 和 strlen 的区别

sizeof 和 strlen 有以下区别:1 sizeof 是一个操作符,strlen 是库函数。2 sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能以结尾为‘\0‘的字符串作参数。3 编译器在编译时就计算出了 sizeof 的结果。而 strlen 函数必须在运行时才能计算出来。并且 sizeof 计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。4 数组做 sizeof 的参数不退化,传递给 strlen 就退化为指针了。注意:有些是操作符
21
2020
02

写出 bool 、int、 float、指针变量与“零值”比较的 if 语句

bool 型数据: if( flag ) {   A; } else {   B; } int 型数据: if( 0 != flag ) {   A; } else {   B; } 指针型数: if( NULL == flag ) {   A;&n
21
2020
02

变量的声明和定义有什么区别

为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是只在一个地方定义。加入 extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。
21
2020
02

简述指针常量与常量指针区别

指针常量是指定义了一个指针,这个指针的值只能在定义时初始化,其他地方不能改变。常量指针是指定义了一个指针,这个指针指向一个只读的对象,不能通过常量指针来改变这个对象的值。指针常量强调的是指针的不可改变性,而常量指针强调的是指针对其所指对象的不可改变性。注意:无论是指针常量还是常量指针,其最大的用途就是作为函数的形式参数,保证实参在被调用函数中的不可改变特性。
21
2020
02

数组名和指针的区别

请写出以下代码的打印结果:#include <iostream.h>#include <string.h>void main(void){char str[13]="Hello world!";char *pStr="Hello world!";cout<<sizeof(str)<<endl;cout<<sizeof(pStr)<<endl;cout<<strlen(str
21
2020
02

如何避免“野指针”

“野指针”产生原因及解决办法如下:(1) 指针变量声明时没有被初始化。解决办法:指针声明时初始化,可以是具体的地址值,也可让它指向 NULL。(2) 指针 p 被 free 或者 delete 之后,没有置为 NULL。解决办法:指针指向的内存空间被释放后指针应该指向 NULL。(3) 指针操作超越了变量的作用范围。解决办法:在变量的作用域结束前释放掉变量的地址空间并且让指针指向 NULL。注意:“野指针”的解决方法也是编程规范的基本原则,平时使用指针时一定要避免产生“野指针”,在使用指针前一定
21
2020
02

常引用有什么作用

常引用的引入主要是为了避免使用变量的引用时,在不知情的情况下改变变量的值。常引用主要用于定义一个普通变量的只读属性的别名、作为函数的传入形参,避免实参在调用函数中被意外的改变。说明:很多情况下,需要用常引用做形参,被引用对象等效于常对象,不能在函数中改变实参的值,这样的好处是有较高的易读性和较小的出错率。
21
2020
02

编码实现字符串转化为数字

编码实现字符串转化为数字编码实现函数 atoi(),设计一个程序,把一个字符串转化为一个整型数值。例如数字:“5486321”,转化成字符:5486321。【答案】int myAtoi(const char * str){int num = 0; //保存转换后的数值int isNegative = 0; //记录字符串中是否有负号int n =0;char *p = str;if(p == NULL) //判断指针的合法性{return -1;}while(*p++ != '\0
21
2020
02

简述 strcpy、sprintf 与 memcpy 的区别

三者主要有以下不同之处:(1) 操作对象不同,strcpy 的两个操作对象均为字符串,sprintf 的操作源对象可以是多种数据类型,目的操作对象是字符串,memcpy 的两个对象就是两个任意可操作的内存地址,并不限于何种数据类型。(2) 执行效率不同,memcpy 最高,strcpy 次之,sprintf 的效率最低。(3) 实现功能不同,strcpy 主要实现字符串变量间的拷贝,sprintf 主要实现其他数据类型格式到字符串的转化,memcpy 主要是内存块间的拷贝。说明:strcpy、s
21
2020
02

用 C 编写一个死循环程序

while(1){ }说明:很多种途径都可实现同一种功能,但是不同的方法时间和空间占用度不同,特别是对于嵌入式软件,处理器速度比较慢,存储空间较小,所以时间和空间优势是选择各种方法的首要考虑条件。
21
2020
02

编码实现某一变量某位清 0 或置 1

编码实现某一变量某位清 0 或置 1给定一个整型变量 a,写两段代码,第一个设置 a 的 bit 3,第二个清 a 的 bit 3,在以上两个操作中,要保持其他位不变。【答案】#define BIT3 (0x1 << 3 ) Satic int a;  //设置 a 的 bit 3:  void set_bit3( void ) {   a |= BIT3;          
21
2020
02

评论下面这个中断函数

评论下面这个中断函数中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展——让标准 C 支持中断。具体代表事实是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt 关键字去定义一个中断服务子程序(ISR),请评论以下这段代码。__interrupt double compute_area (double radius)  {  double area = PI * radius * radius;  printf(
21
2020
02

构造函数能否为虚函数

构造函数不能是虚函数。而且不能在构造函数中调用虚函数,因为那样实际执行的是父类的对应函数,因为自己还没有构造好。析构函数可以是虚函数,而且,在一个复杂类结构中,这往往是必须的。析构函数也可以是纯虚函数,但纯虚析构函数必须有定义体,因为析构函数的调用是在子类中隐含的。说明:虚函数的动态绑定特性是实现重载的关键技术,动态绑定根据实际的调用情况查询相应类的虚函数表,调用相应的虚函数。
21
2020
02

谈谈你对面向对象的认识

面向对象可以理解成对待每一个问题,都是首先要确定这个问题由几个部分组成,而每一个部分其实就是一个对象。然后再分别设计这些对象,最后得到整个程序。传统的程序设计多是基于功能的思想来进行考虑和设计的,而面向对象的程序设计则是基于对象的角度来考虑问题。这样做能够使得程序更加的简洁清晰。说明:编程中接触最多的“面向对象编程技术”仅仅是面向对象技术中的一个组成部分。发挥面向对象技术的优势是一个综合的技术问题,不仅需要面向对象的分析,设计和编程技术,而且需要借助必要的建模和开发工具。