经典C++笔试题目100例,接近实际,值得一看!
第一部分:C++与C语言的差异(1-18)
1、C 和 C++ 中 struct 有什么区别?
Protection行为 | 能否定义函数 | |
C | 无 | 否,但可以有函数指针 |
C++ | 有 | 可以,默认是public |
2、C++中的 struct 和 class 有什么区别?
【参考答案】从语法上讲,class和struct做类型定义时只有两点区别:
(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;
(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。 除了这两点,class和struct基本就是一个东西。语法上没有任何其它区别。
3、如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
【标准答案】
#ifdef __cplusplus
cout<<“c++";
#else
printf("c");
#endif
复制代码
4、 C和C++有什么不同?
【参考答案】
从机制上:C是面向过程的(但C也可以编写面向对象的程序);C++是面向对象的,提供了类。但是,C++编写面向对象的程序比C容易。
从适用的方向:C适合要求代码体积小的,效率高的场合,如嵌入式;C++适合更上层的,复杂的; llinux核心大部分是C写的,因为它是系统软件,效率要求极高。
从名称上也可以看出,C++比C多了+,说明C++是C的超集;那为什么不叫C+而叫C++呢,是因为C++比C来说扩充的东西太多了,所以就在C后面放上两个+;于是就成了C++。
C语言是结构化编程语言,C++是面向对象编程语言。 C++侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。
5、“引用”与指针的区别是什么?
【参考答案】
指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;
而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
6、虚函数
class A {
virtual void func1();
void func2();
} ;
class B: class A {
void func1() {
cout < < "fun1 in class B" < < endl;
}
virtual void func2() {
cout < < "fun2 in class B" < < endl;
}
}
复制代码
A、A中的func1和B中的func2都是虚函数
B、A中的func1和B中的func2都不是虚函数.
C、A中的func2是虚函数.,B中的func1不是虚函数.
D、A中的func2不是虚函数,B中的func1是虚函数.
【标准答案】A
7、int id[sizeof(unsigned long)]; 这个对吗?为什么?
【标准答案】正确 这个 sizeof是编译时运算符,编译时就确定了 可以看成和机器有关的常量。
8、某文件中定义的静态全局变量(或称静态外部变量)其作用域是 () ?
A.只限某个函数 B.本文件
C.跨文件 D.不限制作用域
【参考答案】B。静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。
由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。
9、C++函数中值的传递方式有哪几种?
【标准答案】C++函数的三种传递方式为:值传递、指针传递和引用传递。
10、对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
【标准答案】C用宏定义,C++用 inline
11、引用与指针有什么区别?
【参考答案】
1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针
12、C++中 virtual 与 inline 的含义分别是什么?
【参考答案】
在基类成员函数的声明前加上virtual关键字,意味着将该成员函数声明为虚函数。
inline与函数的定义体放在一起,使该函数称为内联。inline是一种用于实现的关键字,而不是用于声明的关键字。
## 虚函数的特点;
如果希望派生类能够重新定义基类的方法,则在基类中将该方法定义为虚方法,这样可以启用动态联编。
## 内联函数的特点;
使用内联函数的目的是为了提高函数的运行效率。
内联函数体的代码不能过长,因为内联函数省去调用函数的时间是以代码膨胀为代价的。
内联函数不能包含循环语句,因为执行循环语句要比调用函数的开销大。
13、VC 中,编译工具条内的 Debug 与 Release 选项是什么含义?
【参考答案】
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
Debug 带有大量的调试代码,运行时需要相应的运行库,发布模式程序紧凑不含有调试代码和信息,直接可以运行(如果不需要运行库)
14、函数 assert 的用法?
【参考答案】
断言assert是仅在debug版本起作用的宏,用于检查“不应该“发生的情况。
程序员可以把assert看成一个在任何系统状态下都可以安全使用的无害测试手段。
15、 const 与 #define 的比较 ,const有什么优点?
【参考答案】
(1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。
而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应) 。
(2)有些集成化的调试工具可以对 const 常量进行调试,但是不能对宏常量进行调试。
16、请你谈谈引用和指针的区别。
【参考答案】
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化) 。
(2)不能有 NULL 引用,引用必须与合法的存储单元关联(指针则可以是 NULL) 。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象) 。
17、有了 malloc/free 为什么还要 new/delete ?
【参考答案】
malloc 与 free 是 C++/C 语言的标准库函数,new/delete 是 C++的运算符。它们都可用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,光用 maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。
由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于 malloc/free。
因此 C++语言需要一个能完成动态内存分配和初始化工作的运算符 new,以及一个能完成清理与释放内存工作的运算符 delete。
注意 new/delete 不是库函数。
18、如果在申请动态内存时找不到足够大的内存块,malloc 和 new 将返回 NULL 指针,宣告内存申请失败。你是怎么处理内存耗尽的?
【参考答案】
(1)判断指针是否为 NULL,如果是则马上用 return 语句终止本函数。
(2)判断指针是否为 NULL,如果是则马上用 exit(1) 终止整个程序的运行
(3)为 new 和 malloc 设置异常处理函数。例如 Visual C++可以用_set_new_hander 函数为 new 设置用户自己定义的异常处理函数,
也可以让 malloc 享用与 new 相同的异常处理函数。
第二部分:数据类型、关键字(19-37)
19、C++是不是类型安全的?
【参考答案】不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。
20、const 符号常量;
(1)const char *p
(2)char const *p
(3)char * const p
说明上面三种描述的区别;
【参考答案】
(1) p是一个指向const char的指针,p是可以改变指向的,但是p指向的值是不能改变的;
(2) p指向的恰好是一个指向const的char的普通指针;
(3) p是一个指针,这个指针是指向char的const指针。
(1)和(2)的定义是一样的。
21、用C++写个程序,如何判断一个操作系统是16位还是32位的?
【标准答案】
定义一个指针p,打印出sizeof(p),如果节后是4,则表示该操作系统是32位,打印结果是2,表示是16位。
22、用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用 sizeof() 函数。
【参考答案】
int a = ~0;
if(a > 65536) {
cout<<"32 bit"<<endl;
} else {
cout<<"16 bit"<<endl;
}
复制代码
23、识别函数或指针
void * ( * (*fp1)(int))[10];
float (*(* fp2)(int,int,int))(int);
int (* ( * fp3)())[10]();
分别表示什么意思?
【标准答案】
1、void * ( * (*fp1)(int))[10]; fp1是一个指针,指向一个函数,这个函数的参数为int型,函数的返回值是一个指针,这个指针指向一个数组,
这个数组有10个元素,每个元素是一个void*型指针。
2、float (*(* fp2)(int,int,int))(int); fp2是一个指针,指向一个函数,这个函数的参数为3个int型,函数的返回值是一个指针,这个指针指向一个函数,
这个函数的参数为int型,函数的返回值是float型。
3、int (* ( * fp3)())[10](); fp3是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是一个指针,这个指针指向一个数组,
这个数组有10个元素,每个元素是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是int型。
24、多态类中的虚函数表是 Compile-Time,还是 Run-Time 时建立的?
【标准答案】
虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.而对象的隐藏成员--虚拟函数表指针是
在运行期--也就是构造函数被调用时进行初始化的,这是实现多态的关键。
25、错误的转义字符是?
A、'\091'
B、'\\'
C、'\0' D.'\''
【标准答案】A
26、若数组名作实参而指针变量作形参,函数调用实参传给形参的是?
A、数组的长度 B.数组第一个元素的值
C、数组所有元素的值
D、数组第一个元素的地址
【标准答案】D
27、变量的指针含意是指变量的?
A.值 B.地址 C.存储 D.名字
【标准答案】B
28、内存的分配方式有几种?
【参考答案】
一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量。
二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效
率很高,但是分配的内存容量有限。
三、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们
决定,使用非常灵活,但问题也最多。
29、float a,b,c , 问等式 (a+b)+c==(b+a)+c 和 (a+b)+c==(a+c)+b 能否成立?
【参考答案】
两者都不行。在比较float或double时,不能简单地比较。由于计算误差,相等的概率很低。应判断两数之差是否落在区间(-e,e)内。
这个e应比浮点数的精度大一个数量级。
30、全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
【参考答案】
生命周期不同:
全局变量随主程序创建和创建,随主程序销毁而销毁;
局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在; 内存中分配在全局数据
区。
使用方式不同:
通过声明后全局变量程序的各个部分都可以用到;局部变量只能在局部使用;分配在栈区。
操作系统和编译器通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载。局部变量则分配在堆栈里面 。
31、Heap 与 Stack 的差别
【参考答案】
Heap是堆,stack是栈。 Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区 C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行
32、In C++, what does "explicit" mean? what does "protected" mean?
【标准答案】
C++中的 explicit 关键字用来修饰类的构造函数,表明该构造函数是显式的,在某些情况下,我们要求类的使用者必须显示调用类的构造函数时就需要使用 explicit,反之默认类型转换可能会造成无法预期的问题。
protected 控制的是一个函数对一个类的成员(包括成员变量及成员方法)的访问权限。protected成员只有该类的成员函数及其派生类的成员函数可以访问。
33、重复多次 fclose 一个打开过一次的 FILE *fp 指针会有什么结果,并请解释。
【参考答案】
考察点:导致文件描述符结构中指针指向的内存被重复释放,进而导致一些不可预期的异常。
34、为什么数组名作为参数,会改变数组的内容,而其它类型如int却不会改变变量的值?
【参考答案】
当数组名作为参数时,传递的实际上是地址。
而其他类型如int作为参数时,由于函数参数值实质上是实参的一份拷贝,被调函数内部对形参的改变并不影响实参的值。
35、你觉得如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?
【参考答案】
(1) 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。
(2) 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。
(3) 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。
36、为什么需要使用堆,使用堆空间的原因?
【参考答案】
直到运行时才知道一个对象需要多少内存空间;不知道对象的生存期到底有多长。
37、 const关键字?有哪些作用?
【参考答案】
const关键字至少有下列n个作用:
(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;
(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;
(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。
注: 这个题可以考查面试者对程序设计知识的掌握程度是初级、中级还是比较深入,没有一定的知识广度和深度,不可能对这个问题给出全面的解答。大多数人只能回答出 static 和 const 关键字的部分功能。
第三部分:C++面向对象的特性(38-61)
38、是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?
【参考答案】
virtual修饰符会被隐形继承的。virtual可加可不加。子类的空间里有父类的所有变量(static除外)。同一个函数只存在一个实体(inline除外)。子类覆盖它的函数不加virtual ,也能
实现多态。在子类的空间里,有父类的私有变量。私有变量不能直接访问。
39、面向对象的三个基本特征,并简单叙述之?
【参考答案】
1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected, public)
2. 继承:广义的继承有三种实现形式:
实现继承(指使用基类的属性和方法而无需额外编码的能力)、
可视继承(子窗体使用父窗体的外观和实现代码)、
接口继承(仅使用属性和方法,实现滞后到子类实现)。
前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。
3. 多态:是将父对象设置成为和一个或更多的与他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。
简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
40、重载(overload)、重写(override,有的书也叫做“覆盖”)、重定义(redefinition)的区别?
【标准答案】
重载 同一名字空间 是指允许存在多个同名函数,而这些函数的参数表不同。
重定义/隐藏 不同名字空间 用于继承,派生类与基类的函数同名,屏蔽基类的函数
重写/覆盖 不同名字空间
用于继承,子类重新定义父类虚函数的方法
41、多态的作用?
【参考答案】
主要是两个:
1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;
2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。
42、当一个类A 中没有声命任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。
【标准答案】
sizeof(A) = 1;
43、如果 ClassA 中定义并实现虚函数 int func(void),ClassB 中也实现该函数,那么上述变量 a->func() 将调用哪个类里面的函数?如果 int func(void) 不是虚函数,情况又如何?为什么?
【参考答案】
第一问调用的是B的。第二问调用A的。
虚函数的一个典型应用,虚函数只能借助于指针或者引用来达到多态的效果。
44、 C++里面是不是所有的动作都是main()引起的?如果不是,请举例。
【参考答案】
比如全局变量的初始化,就不是由 main 函数引起的。举例:
class A{
};
A a; //a的构造函数限执行
int main() {
}
复制代码
45、 内联函数在编译时是否做参数类型检查
【参考答案】
内联函数要做参数类型检查, 这是内联函数跟宏相比的优势。
46、请讲一讲析构函数和虚函数的用法和作用?
【参考答案】
析构函数是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载,只有在类对象的生命期结束的时候,由系统自动调用。
有适放内存空间的作用。
虚函数是C++多态的一种表现, 使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销为代价。
47、“new”in c++ is a?
A. library function like malloc in c
B. key word
C. operator
D. none of the above
【参考答案】C。
malloc是库函数,不在编译器控制范围之内;new是运算符,在编译器控制范围之内。
调用malloc时,从堆中申请内存;调用new时,从堆中申请内存并为内存调用构造函数。
48、对于C++中类(class) 与结构(struct)的描述正确的为:
A、类中的成员默认是private的,但是可以声明public,private 和 protected,结构中定义的成员默认的都是public;
B、结构中不允许定义成员函数,但是类中可以定义成员函数;
C、结构实例使用malloc() 动态创建,类对象使用new 操作符动态分配内存;
D、结构和类对象都必须使用new 创建;
E、结构中不可以定义虚函数,但是类中可以定义虚函数.
F、结构不可以存在继承关系,但是类可以存在继承关系.
【标准答案】A,D
49、两个互相独立的类:ClassA 和 ClassB,都各自定义了非静态的公有成员函数 PublicFunc() 和非静态的私有成员函数 PrivateFunc(); 现在要在ClassA 中增加定义一个成员函数ClassA::AdditionalPunction(ClassA a,ClassB b);则可以在AdditionalPunction(ClassA x,ClassB y)的实现部分(函数功能体内部)出现的合法的表达是最全的是:
A、x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc();
B、x.PrivateFunc();x.PublicFunc();y.PublicFunc();
C、x.PrivateFunc();y.PrivateFunc();y.PublicFunc();
D、x.PublicFunc();y.PublicFunc();
【标准答案】B
50、C++程序下列说法正确的有:
A、对调用的虚函数和模板类都进行迟后编译.
B、基类与子类中函数如果要构成虚函数,除了要求在基 类中用virtual 声名,而且必须名字相同且参数类型相同返回类型相同。
C、重载的类成员函数都必须要:或者返回类型不同,或者参数数目不同,或者参数序列的类型不同.
D、静态成员函数和内联函数不能是虚函数,友员函数和构造函数也不能是虚函数,但是析构函数可以是虚函数.
【标准答案】A
51、在C++中有没有纯虚构造函数?
【标准答案】构造函数不能是虚的。只能有虚的析构函数。
52、下面的 throw 表达式哪些是错误的?
(a) class exceptionType { };
throw exceptionType { };
(b) enum mathErr { overflow, underflow, zeroDivide };
throw zeroDivide();
【标准答案】
(a) class exceptionType { };
throw exceptionType();
(b) enum mathErr { overflow, underflow, zeroDivide };
throw zeroDivide;
53、谈谈你是怎么认识 C++ 中的模板的?
【参考答案】
模板使程序员能够快速建立具有类型安全的类库集合和函数集合,它的实现,方便了大规模的软件开发。(结合stl更好)
54、在 C++的一个类中声明一个 static 成员变量有没有用?
【参考答案】
在C++类的成员变量被声明为 static(称为静态成员变量),意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,
也就是说不管创建多少对象,static修饰的变量只占有一块内存。其修改值为该类的其它所有实例所见;而类的静态成员函数也只能访问静态成员(变量或函数)。static是加了访问控制的全局变量,不被继承。
55、C++中为什么用模板类?
【参考答案】
(1)可用来创建动态增长和减小的数据结构
(2)它是类型无关的,因此具有很高的可复用性。
(3)它在编译时而不是运行时检查数据类型,保证了类型安全(4)它是平台无关的,可移植性(5)可用于基本数据类型
56、函数模板与类模板有什么区别?
【参考答案】
函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。
58、请你谈谈你在类中如何使用 const 的。
【参考答案】
有时我们希望某些常量只在类中有效。由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用 const 修饰数据成员来实现。
const 数据成员的确是存在的,但其含义却不是我们所期望的。const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其 const 数据成员的值可以不同。 不能在类声明中初始化 const 数据成员。
const 数据成员的初始化只能在类构造函数的初始化表中进行。
59、函数重载,我们靠什么来区分调用的那个函数?靠返回值判断可以不可以?
【参考答案】
如果同名函数的参数不同(包括类型、顺序不同) ,那么容易区别出它们是不同的。如果同名函数仅仅是返回值类型不同,有时可以区分,有时却不能。例如:
void Function(void);
int Function (void);
上述两个函数,第一个没有返回值,第二个的返回值是 int 类型。如果这样调用函数:
int x = Function ();
则可以判断出 Function 是第二个函数。问题是在 C++/C 程序中,我们可以忽略函数的返回值。在这种情况下,编译器和程序员都不知道哪个 Function 函数被调用。 所以只能靠参数而不能靠返回值类型的不同来区分重载函数。
60、所有的运算符都能重载吗?
【参考答案】
不能被重载的运算符
在 C++运算符集合中,有一些运算符是不允许被重载的。这种限制是出于安全方面的考虑,可防止错误和混乱。
(1)不能改变 C++内部数据类型(如 int,float 等)的运算符。
(2)不能重载‘.’,因为‘.’在类中对任何成员都有意义,已经成为标准用法。
(3)不能重载目前 C++运算符集合中没有的符号,如#,@,$等。原因有两点,一是难以理解,二是难以确定优先级。
(4)对已经存在的运算符进行重载时,不能改变优先级规则,否则将引起混乱。
61、基类的析构函数不是虚函数,会带来什么问题?
【参考答案】
派生类的析构函数用不上,会造成资源的泄漏。
第四部分:程序阅读题(62-90)
62、main 函数执行以前,还会执行什么代码?
【参考答案】
全局对象的构造函数会在main 函数之前执行。
63、 There are two int variables: a and b, don't use“if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers.
【标准答案】
( ( a + b ) + abs( a - b ) ) / 2
64、如何打印出当前源文件的文件名以及源文件的当前行号?
【标准答案】
cout << __FILE__ ;
cout<<__LINE__ ;
__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。(C也有)
65、下面两种if语句判断方式。请问哪种写法更好?为什么?
int n;
if (n == 10) // 第一种判断方式
if (10 == n) // 第二种判断方式
【参考答案】
这是一个风格问题,第二种方式如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了=。
66、写出运行结果:
{
// test1 char str[] = "world";
cout << sizeof(str) << ": ";
char *p = str;
cout << sizeof(p) << ": ";
char i = 10;
cout << sizeof(i) << ": ";
void *pp = malloc(10);
cout << sizeof(pp) << endl;
}
复制代码
【标准答案】6:4:1:4
67、在不用第三方参数的情况下,交换两个参数的值。
【参考答案】
a = a + b;
b = a – b; a = a – b;
68、以下代码如果有错,请该正,并写出输出结果?
void main(void)
{
int nArrLength(400), i = 546;
for (int i = 0; i< 99999999999; i++);
cout << nArrLength << endl;
cout << i << endl;
}
复制代码
【标准答案】
void main(void)
{
int nArrLength(400), i = 546;
/*主要是考看对C++的基础知识是否了解这里的int nArrLength(400)是对整数的定义,当然,明名上有问题,这里是故意这样的,
但是,最好是变量名改为 ....[还是您自己看着办了]*/
for (int i = 0; i< 99999999999; i++);
/*这里是考对变量越界理解,同时....,所以,999...应该改为 ~((int)0),也就是整数中0取反考对变量块作用域的理解,这里的i,在循环后就不存在了*/
cout << nArrLength << endl; // 这里输出 400
cout << i << endl; // 这里输出 546
}
复制代码
69、int i = 5, b = 7; cout << (i+++b) <<endl; 不用调试,请说出,以上代码在gcc编译过后的执行结果!
【标准答案】结果是12。
70、写一个能做左值的函数(方法有很多)。
如:max(x, y) += 2874 + 55; drwline(x, y)++;
【参考答案】
int &max(int & x, int & y)
{
return x > y? x : y;
}
int x = 55, y = 77;
max(x, y) += 12 + 11; // 此时 y = 77;
cout << "x = "x << "; y = "<< y << endl; // 输出 x = 55; y = 77;
复制代码
71、程序输出
class human
{
public:
~human()
{
cout << "human over......" << endl;
}
void Disp()
{
cout << "human disp ... ..." << endl;
}
};
class man : public human
{
public:
~man()
{
cout << "man over......" << endl;
}
void Disp()
{
cout << "man disp ... ..." << endl;
}
};
int main()
{
human* p = new human;
p->Disp();
delete p;
return 0;
}
复制代码
【标准答案】
human disp ... ...
human over ......
72、下面的函数实现在一个固定的数上加上一个数,有什么错误,改正:
int add_n(int n)
{
static int i = 100;
i += n;
return i;
}
复制代码
【标准答案】
因为static使得i的值会保留上次的值。以后的i会一直更新,使得第二次调用出现错误, 去掉static就可了
73、写出打印结果
unsigned short array[]={1,2,3,4,5,6,7};
int i = 3;
*(array + i) = ?
【标准答案】4
74、写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n。
【参考答案】
long fn(long n)
{
if(n <= 0)
{
printf("error: n must > 0);
exit(1);
}
if(0 == n % 2)
return (n / 2) * (-1);
else
return (n / 2) * (-1) + n;
复制代码
75、字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?
【参考答案】
指针变量也占用内存单元,而且所有指针变量占用内存单元的数量都是相同的。
就是说,不管是指向何种对象的指针变量,它们占用内存的字节数都是一样的,并且要足够把程序中所能用到的最大地址表示出来(通常是一个机器字长)。
76、以下三条输出语句分别输出什么?
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?
cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?
cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?
复制代码
【参考答案】
分别输出 false,false,true。
str1和str2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区首地址,不等;
str3和str4同上,只是按const语义,它们所指向的数据区不能修改。
str5和str6并非数组而是字符指针,并不分配存储区,其后的“abc”以常量形式存于静态数据区,而它们自己仅是指向该区首地址的指针,相等。
77、以下代码有什么问题?
cout << (true?1:"1") << endl;
复制代码
【参考答案】
三元表达式“?:”问号后面的两个操作数必须为同一类型。
78、以下代码能够编译通过吗,为什么?
unsigned int const size1 = 2;
char str1[ size1 ];
unsigned int temp = 0;
cin >> temp;
unsigned int const size2 = temp;
char str2[ size2 ];
复制代码
【标准答案】
str2定义出错,size2非编译器期间常量,而数组定义要求长度必须为编译期常量。
79、以下代码中的输出语句输出0吗,为什么?
struct CLS
{
int m_i;
CLS( int i ) : m_i(i) {}
CLS()
{
CLS(0);
}
};
CLS obj;
cout << obj.m_i << endl;
复制代码
【标准答案】
不能。在默认构造函数内部再调用带参的构造函数属用户行为而非编译器行为,亦即仅执行函数调用,而不会执行其后的初始化表达式。
只有在生成对象时,初始化表达式才会随相应的构造函数一起调用。
80、How do you code an infinite loop in Cplus plus ?
【参考答案】
while(1){} or for(;1;)
81、What are the values of a, b, and c after the following instructions:
int a=5, b=7, c;
c = a+++b;
复制代码
【标准答案】a=6,b=7,c=12
82、在排序方法中,关键码比较次数与记录地初始排列无关的是()
A. Shell排序
B. 归并排序
C. 直接插入排序
D. 选择排序
【标准答案】D
83、代码:
void func() {
static int val;
}
中,变量 val 的内存地址位于:
A. 已初始化数据段
B.未初始化数据段
C.堆
D.栈
【标准答案】A
84、一个栈的入栈序列是 A,B,C,D,E,则栈的不可能的输出序列是?
A、EDCBA;
B、DECBA;
C、DCEAB;
D、ABCDE
【标准答案】C
85、写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a 的值。
int a = 4;
(A)、a += (a++);
(B)、a += (++a) ;
(C)、(a++) += a;
(D)、(++a) += (a++);
a = ?
复制代码
【参考答案】
C错误,左侧不是一个有效变量,不能赋值,可改为 (++a) += a; 改后答案依次为 9,10,10,11
86、请你谈谈你是如何使用 return 语句的。
【参考答案】
(1)return 语句不可返回指向“栈内存”的“指针”或者“引用” ,因为该内存在函数体结束时被自动销毁。
(2)要搞清楚返回的究竟是“值”、“指针”还是“引用” 。
(3)如果函数返回值是一个对象,要考虑 return 语句的效率。
87、① return String(s1 + s2); 和 ②String temp(s1 + s2); return temp; 一样吗?
【参考答案】
①这是临时对象的语法,表示“创建一个临时对象并返回它” 。
②将发生三件事。首先,temp 对象被创建,同时完成初始化;然后拷贝构造函数把 temp 拷贝到保存返回值的外部存储单元中;
最后,temp 在函数结束时被销毁(调用析构函数) 。然而“创建一个临时对象并返回它”的过程是不同的,
编译器直接把临时对象创建并初始化在外部存储单元中,省去了拷贝和析构的化费,提高了效率。
88、下列程序的运行结果是?
#include <iostream>
const char *str = "vermeer";
int main()
{
const char *pstr = str;
cout << "The address of pstr is: " << pstr << endl;
}
复制代码
【标准答案】
The address of pstr is: vermeer
89、下列程序输出结果是?
inline void max_out( int val1, int val2 )
{
cout << ( val1 > val2 ) ? val1 : val2;
}
int main()
{
int ix = 10, jx = 20;
cout << "The larger of " << ix;
cout << ", " << jx << " is ";
max_out( ix, jx );
cout << endl;
}
复制代码
【标准答案】
The larger of 10, 20 is 0 ,
为什么不是20呢?问题在于输出操作符的优先级高于条件操作符 所以输出 val1 和 val2 比较结果的 true/false
90、int max( int *ia, int sz );
int max( int *, int = 10 );
算函数重载?还是重复声明?
【标准答案】
如果在两个函数的参数表中只有缺省实参不同则第二个声明被视为第一个的重复声明 。
第六部分:编程练习(比C要难)(91-100)
91、请编写一个 C++函数,该函数给出一个字节中被置 1 的位的个数。
【参考答案】
unsigned int TestAsOne0(char log)
{
int i;
unsigned int num = 0, val;
for (i = 0; i < 8; i++)
{
val = log >> i; //移位
val &= 0x01; //与1相与
if (val)
num++;
}
return num;
}
复制代码
92、编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回。
【参考答案】
BOOL HexToDec(LPCTSTR shex, int& idec)
{
int i, mid;
int len = lstrlen(shex);
if (len > 8)
return FALSE;
mid = 0;
idec = 0;
for (i = 0; i < len; i++)
{
if (shex[i] >= '0'&&shex[i] <= '9')
mid = shex[i] - '0';
else if (shex[i] >= 'a'&&shex[i] <= 'f')
mid = shex[i] - 'a' + 10;
else if (shex[i] >= 'A'&&shex[i] <= 'F')
mid = shex[i] - 'A' + 10;
else
return FALSE;
mid <<= ((len - i - 1) << 2); // 移位表示变为2的n次方倍
idec = idc + mid;
}
return TRUE;
}
复制代码
93、输入一个字符串,将其逆序后输出 。
【参考答案】
void main()
{
char a[50];
memset(a, 0, sizeof(a));
int i = 0, j;
char t;
cin.getline(a, 50, '\n');
for (i = 0, j = strlen(a) - 1; i < strlen(a) / 2; i++, j--)
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
cout << a << endl;
}
复制代码
94、编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法。
【参考答案】
void frequency(String& s, char& A[], int& C[], int &k)
{
int i, j, len = s.length();
if (!len) { cout << "The string is empty. " << endl; k = 0; return; }
else
{
A[0] = s[0]; C[0] = 1; k = 1; /*语句s[i]是串的重载操作*/
for (i = 1; i < len; i++) C[i] = 0; /*初始化*/
for (i = 1; i < len; i++)
{ /*检测串中所有字符*/
j = 0; while (j < k && A[j] != s[i]) j++; /*检查s[i]是否已在A[ ]中*/
if (j == k)
{
A[k] = s[i]; C[k]++; k++
} /*s[i]从未检测过*/
else C[j]++; /*s[i]已经检测过*/
}
}
}
复制代码
95、假设以数组Q[m]存放循环队列中的元素, 同时以rear和length分别指示环形队列中的队尾位置和队列中所含元素的个数。试给出该循环队列的队空条件和队满条件, 并写出相应的插入(enqueue)和删除(dlqueue)元素的操作。
【参考答案】循环队列类定义
#include <assert.h>
template <class Type> class Queue { //循环队列的类定义
public:
Queue ( int=10 );
~Queue ( ) { delete [ ] elements; }
void EnQueue ( Type & item );
Type DeQueue ( );
Type GetFront ( );
void MakeEmpty ( ) { length = 0; } //置空队列
int IsEmpty ( ) const { return length == 0; } //判队列空否
int IsFull ( ) const { return length == maxSize; } //判队列满否
private:
int rear, length; //队尾指针和队列长度
Type *elements; //存放队列元素的数组
int maxSize; //队列最大可容纳元素个数
};
复制代码
template <class Type>
Queue<Type>::Queue(int sz) : rear(maxSize - 1), length(0), maxSize(sz)
{
//建立一个最大具有maxSize个元素的空队列。
elements = new Type[maxSize];//创建队列空间
assert(elements != 0);//断言: 动态存储分配成功与否
}
template<class Type>
void Queue<Type>::EnQueue(Type &item)
{
assert(!IsFull());//判队列是否不满,满则出错处理
length++;//长度加1
rear = (rear + 1) % maxSize;//队尾位置进1
elements[rear] = item;//进队列
}
template<class Type>
Type Queue<Type> ::DeQueue()
{
assert(!IsEmpty());//判断队列是否不空,空则出错处理
length--;//队列长度减1
return elements[(rear - length + maxSize) % maxSize];//返回原队头元素值
}
template<class Type>
Type Queue<Type> ::GetFront()
{
assert(!IsEmpty());
return elements[(rear - length + 1 + maxSize) % maxSize];//返回队头元素值
}
复制代码
96、已知A[n]为整数数组,试写出实现下列运算的递归算法:
(1) 求数组A中的最大整数。
(2) 求n个整数的和。
(3) 求n个整数的平均值。
【参考答案】
#include <iostream.h>
class RecurveArray
{ //数组类声明
private: int *Elements; //数组指针
int ArraySize; //数组尺寸
int CurrentSize; //当前已有数组元素个数
public :
RecurveArray ( int MaxSize =10 ) :
ArraySize ( MaxSize ), Elements ( new int[MaxSize] ){ }
~RecurveArray ( ) { delete [ ] Elements; }
void InputArray(); //输入数组的内容
int MaxKey ( int n ); //求最大值
int Sum ( int n ); //求数组元素之和
float Average ( int n ); //求数组元素的平均值
};
void RecurveArray :: InputArray ( )
{ //输入数组的内容
cout << "Input the number of Array: \n";
for ( int i = 0; i < ArraySize; i++ ) cin >> Elements[i];
}
int RecurveArray :: MaxKey ( int n )
{ //递归求最大值
if ( n == 1 ) return Elements[0];
int temp = MaxKey ( n - 1 );
if ( Elements[n-1] > temp ) return Elements[n-1];
else return temp;
}
int RecurveArray :: Sum ( int n ) { //递归求数组之和
if ( n == 1) return Elements[0];
else return Elements[n-1] + Sum (n-1);
}
float RecurveArray :: Average ( int n ) { //递归求数组的平均值
if ( n == 1) return (float) Elements[0];
else return ( (float) Elements[n-1] + ( n - 1) * Average ( n - 1 ) ) / n;
}
int main ( int argc, char* argv [ ] ) {
int size = -1;
cout << "No. of the Elements : ";
while ( size < 1 ) cin >> size;
RecurveArray ra ( size );
ra.InputArray();
cout<< "\nThe max is: " << ra.MaxKey ( ra.MaxSize ) << endl;
cout<< "\nThe sum is: " << ra.Sum ( ra.MaxSize ) << endl;
cout<< "\nthe avr is: " << ra.Average ( ra.MaxSize ) << endl;
return 0;
}
复制代码
97、已知f为单链表的表头指针, 链表中存储的都是整型数据,试写出实现下列运算的递归算法:
(1) 求链表中的最大整数。
(2) 求链表的结点个数。
(3) 求所有整数的平均值。
【标准答案】
#include <iostream.h> //定义在头文件"RecurveList.h"中
class List;
class ListNode { //链表结点类
friend class List;
private:
int data; //结点数据
ListNode *link; //结点指针
ListNode ( const int item ) : data(item), link(NULL) { } //构造函数
};
class List { //链表类
private:
ListNode *first, current;
int Max ( ListNode *f );
int Num ( ListNode *f );
float Avg ( ListNode *f, int& n );
public:
List ( ) : first(NULL), current (NULL) { } //构造函数
~List ( ){ } //析构函数
ListNode* NewNode ( const int item ); //创建链表结点, 其值为item
void NewList ( const int retvalue ); //建立链表, 以输入retvalue结束
void PrintList ( ); //输出链表所有结点数据
int GetMax ( ) { return Max ( first ); } //求链表所有数据的最大值
int GetNum ( ) { return Num ( first ); } //求链表中数据个数
float GetAvg ( ) { return Avg ( first ); } //求链表所有数据的平均值
};
ListNode* List :: NewNode ( const int item ) { //创建新链表结点
ListNode *newnode = new ListNode (item);
return newnode;
}
void List :: NewList ( const int retvalue ) { //建立链表, 以输入retvalue结束
first = NULL; int value; ListNode *q;
cout << "Input your data:\n"; //提示
cin >> value; //输入
while ( value != retvalue )
{ //输入有效
q = NewNode ( value ); //建立包含value的新结点
if ( first == NULL ) first = current = q;//空表时, 新结点成为链表第一个结点
else { current->link = q; current = q; } //非空表时, 新结点链入链尾
cin >> value; //再输入
}
current->link = NULL; //链尾封闭
}
void List :: PrintList ( )
{ //输出链表
cout << "\nThe List is : \n";
ListNode *p = first;
while ( p != NULL ) { cout << p->data << ' '; p = p->link; }
cout << ‘\n’;
}
int List :: Max ( ListNode *f )
{ //递归算法 : 求链表中的最大值
if ( f ->link == NULL ) return f ->data; //递归结束条件
int temp = Max ( f ->link ); //在当前结点的后继链表中求最大值
if ( f ->data > temp )
return f ->data; //如果当前结点的值还要大, 返回当前检点值
else return temp; //否则返回后继链表中的最大值
}
int List :: Num ( ListNode *f )
{ //递归算法 : 求链表中结点个数
if ( f == NULL ) return 0; //空表, 返回0
return 1+ Num ( f ->link ); //否则, 返回后继链表结点个数加1
}
float List :: Avg ( ListNode *f , int& n )
{ //递归算法 : 求链表中所有元素的平均值
if ( f ->link == NULL ) //链表中只有一个结点, 递归结束条件
{
n = 1; return ( float ) (f ->data );
}
else
{ float Sum = Avg ( f ->link, n ) * n; n++; return ( f ->data + Sum ) / n; }
}
#include "RecurveList.h" //定义在主文件中
int main ( int argc, char* argv[ ] )
{
List test; int finished;
cout << “输入建表结束标志数据 :”;
cin >> finished; //输入建表结束标志数据
test.NewList ( finished ); //建立链表
test.PrintList ( ); //打印链表
cout << "\nThe Max is : " << test.GetMax ( );
cout << "\nThe Num is : " << test.GetNum ( );
cout << "\nThe Ave is : " << test.GetAve () << '\n';
printf ( "Hello World!\n" );
return 0;
}
复制代码
98、字符串的替换操作 replace(String &s, String &t, String &v) 是指:
若t是s的子串,则用串v替换串t在串s中的所有出现;若t不是s的子串,则串s不变。例如,若串s为“aabbabcbaabaaacbab”,串t为“bab”,串v为“abdc”,则执行replace操作后,串s中的结果为“aababdccbaabaaacabdc”。试利用字符串的基本运算实现这个替换操作。
【参考答案】
String & String::Replace(String & t, String &v)
{
if ((int id = Find(t)) == -1) //没有找到,当前字符串不改,返回
{
cout << “The(replace) operation failed.” << endl; return *this;
}
String temp(ch);//用当前串建立一个空的临时字符串
ch[0] = '\0'; curLen = 0; //当前串作为结果串,初始为空
int j, k = 0, l; //存放结果串的指针
while (id != -1)
{
for (j = 0; j < id; j++) ch[k++] = temp.ch[j];
curLen += id + v.curLen; //修改结果串连接后的长度
if (curLen <= maxLen) l = v.curLen; //确定替换串v传送字符数l
else { l = curLen - maxLen; curLen = maxLen; }
for (j = 0; j < l; j++) ch[k++] = v.ch[j];
//连接替换串v到结果串ch后面
if (curLen == maxLen) break; //字符串超出范围
for (j = id + t.curLen; j < temp.curLen; j++)
temp.ch[j - id - t.curLen] = temp.ch[j]; //删改原来的字符串 temp.curLen -= ( id + t.curLen );
id = temp.Find(t);
}
return *this;
}
复制代码
99、试编写一个求解Josephus问题的函数。用整数序列1, 2, 3, ……, n表示顺序围坐在圆桌周围的人,并采用数组表示作为求解过程中使用的数据结构。然后使用n = 9, s = 1, m = 5,以及n = 9, s = 1, m = 0,或者n = 9, s = 1, m = 10作为输入数据,检查你的程序的正确性和健壮性。
【参考答案】
void Josephus(int A[], int n, int s, int m)
{
int i, j, k, tmp;
if (m == 0)
{
cout << "m = 0是无效的参数!" << endl;
return;
}
for (i = 0; i < n; i++)
A[i] = i + 1; /*初始化,执行n次*/
i = s - 1; /*报名起始位置*/
for (k = n; k > 1; i--)
{ /*逐个出局,执行n-1次*/
if (i == k)
i = 0;
i = (i + m - 1) % k; /*寻找出局位置*/
if (i != k - 1)
{
tmp = A[i]; /*出局者交换到第k-1位置*/
for (j = i; j < k - 1; j++)
A[j] = A[j + 1];
A[k - 1] = tmp;
}
}
for (k = 0; k < n / 2; k++)
{ /*全部逆置, 得到出局序列*/
tmp = A[k]; A[k] = A[n - k + 1]; A[n - k + 1] = tmp;
}
}
复制代码
100、编写类 String 的构造函数、析构函数和赋值函数已知类 String 的原型为:
class String
{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~String(void); // 析构函数
String & operate = (const String &other); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
复制代码
请编写 String 的上述 4 个函数。
【标准答案】
// String 的析构函数
String::~String(void)
{
delete[] m_data;
// 由于 m_data 是内部数据类型,也可以写成 delete m_data;
}
// String 的普通构造函数
String::String(const char *str)
{
if (str == NULL)
{
m_data = new char[1]; // 若能加 NULL 判断则更好
*m_data = ‘\0’;
}
else
{
int length = strlen(str);
m_data = new char[length + 1];
strcpy(m_data, str);
}
}
// 拷贝构造函数
String::String(const String &other)
{
int length = strlen(other.m_data);
m_data = new char[length + 1]; // 若能加 NULL 判断则更好
strcpy(m_data, other.m_data);
}
// 赋值函数
String & String::operate = (const String &other)
{
if (this == &other)
return *this;
delete[] m_data;
int length = strlen(other.m_data);
m_data = new char[length + 1];
strcpy(m_data, other.m_data);
return *this;
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- ecshop中smarty最常用的6大基本语法
模板制作比较核心的其实就是变量的使用,因为这些就是数据的根本,想从数据库里获取数据并显示在界面就必须使用smarty来展示,下面是关于smarty的介绍和使用。Smarty是一个php模板引擎,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法.Smarty要求web服务器运行php4.0.…...
2024/4/28 11:48:17 - 【再回首Python之美】【Scipy-手册】scipy库使用手册
doc汇总:https://docs.scipy.org/doc/scipy模块:https://docs.scipy.org/doc/scipy/reference/py-modindex.html调试器:http://scipy.github.io/devdocs/hacking.html方法1)sklearn.datasets.make_blobs2)(end)...
2024/4/28 3:20:02 - AjaxPro 未定义错误
问题:"本机测试一切正常,传到服务器上浏览器提示我的AjaxPro 未定义"-->这是我在网上找的原话也是我的问题. 原因和解决:1.没有将AjaxPro加载放在form1以内,有篇文章写得不错: AjaxPro未定义错误的原因&javascript顺序执行&AjaxPro机制.2.忘记在服务器的w…...
2024/4/28 4:10:44 - C语言的返回值return总结
return是C++预定义的语句,它提供了种植函数执行的一种放大。当return语句提供了一个值时,这个值就成为函数的返回值. 说到return,有必要提及主函数的定义,下面是从网络上找到的资料,好好消化吧,对了解主函数中返回值的理解有很大的帮助.很多人甚至市面上的一些书籍,都使用了…...
2024/4/28 5:27:22 - AjaxPro使用Session注意地方(转)
AjaxPro使用Session出错(AjaxPro "Session"引发了"System.NullReferenceException"类型的异常) 关于在ASP.NET如何使用AjaxPro,这里就不多说了,先看代码: [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)] public string btn…...
2024/4/14 23:42:43 - 关键字nullable,nonnull,null_resettable,_Null_unspecified详解
相信在开发过程中,很多小伙伴们儿都会见到nullable,nonnull,null_resettable,_Null_unspecified这几个关键字,但是并不知道它们是什么意思,下面我就给大家一一解释一下。 在解释这四个关键字之前,先给大家普及一下关键字是干嘛的。 关键字:可以用于属性,方法返回值和参数…...
2024/4/5 0:18:03 - C++ new 的用法 (总结)
C++ new 的基本和高级用法推荐文章 http://kelvinh.github.io/blog/2014/04/19/research-on-operator-new-and-delete/new 的基本用法int *a = new int[5]; class A {...} //声明一个类 A A *obj = new A(); //使用 new 创建对象 delete []a; delete obj;这里我们注意,new …...
2024/4/12 6:42:03 - C++开发工程师面试题库 100~150道
101. 编写strcat函数(6分) 已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc); 其中strDest 是目的字符串,strSrc 是源字符串。 (1)不调用C++/C 的字符串库函数,请编写函数 strcat 答: VC源码: char * __cdecl strcat (char * dst, const char * …...
2024/4/18 7:14:42 - php smarty简单的例子
实例1: 先来看一个简单的例子。 ===================================================== index.tpl ====================================================={* 显示是smarty变量识符里的用*包含的文字为注释内容 *}{include file="header.tpl"}{*页面头*}大家好,…...
2024/4/18 5:52:48 - JavaCC技术手册之JJTree参考文档
不知道大家了解Lucence这个项目么,一个开源的搜索引擎。不过想看懂很难,因为需要很多相关的知识,我这里就翻译了一篇文档,JavaCC技术手册之JJTree参考文档,Lucence在一些主要的文法分析中用到了JavaCC,而JJTree是JavaCC的一个预处理。下面就是翻译: JavaCC技术手册:JJT…...
2024/4/12 6:42:03 - 免费分享教程集合
C语言(计算机二级必过题库) 链接:https://pan.baidu.com/s/1jqgKJaY37MlaE44pIP5RqQ 提取码:dd7q Visual C++从入门到精通实战教程(10章) 链接:https://pan.baidu.com/s/1coLJwyIwQJ2MkdPw8uRKBQ 提取码:jfvm 《C语言精讲》从入门到精通(14章) 链接:https://pan.bai…...
2024/4/12 6:42:15 - js中onclick事件用“return”开头+方法名的返回值
js中onclick事件用“return”开头+方法名,方法内的返回值如果在任何一个事件上添加js方法上的时候要加上return; 在方法里面要加上返回值。return true:事件本身的功能接着往上执行 return false:事件本身的功能不执行。比如:在a标签内使用onClick事件,如果a标签的“href”是…...
2024/4/10 8:22:34 - Could not load file or assembly 'AjaxPro.2' or one of its dependencies. 拒绝访问
Could not load file or assembly AjaxPro.2 or one of its dependencies. 拒绝访问 郁闷啊。。怎么解决呢。。。 web.config里的配置如下: <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.a…...
2024/4/14 23:43:14 - iOS关键字之nullable、nonnull、null_resettable、_Null_unspecified的区别
nullable、nonnull、null_resettable、_Null_unspecified是iOS9.0出现的新的修饰关键词,下面我们来研究一下它们之间的区别。一 共同点1.可以进行代码规范,减少开发沟通成本,一看便知怎么赋值 2.只能用于对象声明,不能声明基本数据类型,因为只有对象才能置为nil二 不同点…...
2024/4/12 6:41:39 - 很简单的一个c语言问题switch中用了return
1.先给源码吧int main(){int i;//while(1){printf("i = ");scanf("%d", &i);switch(i){case 1:printf("\n i = 1");break;case 2:printf("\n i = 2\n");return 0;break;default:break;}printf("\nonly break will see this m…...
2024/4/12 6:42:03 - 北大ACM - POJ试题分类 (2017整理版)
北大ACM - POJ试题分类 *—— By EXP 2017-12-03 *转载请注明出处: by EXP http://exp-blog.com相关推荐文:旧版POJ分类目录 ACM绝版资源公开( 参考书、模板、讲义、指导) ACM国家集训队论文集(1999-2009) ACM测试数据合集 一位ACMer过来人的心得1.入门水题可用于练手与…...
2024/4/20 2:35:27 - 在iis7下部署ASP.NET程序AjaxPro不能用问题解决办法
我原来是在windows2003下面,用vs2005 c#+ajaxpro开发的一个b/s程序,ajaxpro一切都运行正常 现在我移植到vista下面,在iis7下配置好了,数据库访问什么的都很正常,就是ajaxpro部分的代码允许不正常 总是提示类名没有定义 代码如下: var nRtn=Index.GetValidateCode(documen…...
2024/4/20 16:24:02 - HTML Tidy中文手册
tidy tidy 名称 用法 简述 选项 用法简述 环境 退出返回 ______________________________ 配置详细说明 用法 警告 简述 选项 获取更多信息... 作者 翻译名称tidy- 一个验证,纠正,美化HTML文件的工具 (version: 18 June 2008)用法tidy[option ...] [file ...] [option ...] [f…...
2024/4/26 18:13:03 - C++腾讯面试题库干货!作为程序员,这些都掌握了,还有什么理由拿不到offer?
前面小编发的两篇文章就是相对这些问题的知识点。方便大家套用练习,特别在面试前翻看几次,临时记忆也好。助你轻松拿到大厂offer。记得关注我。C 和 C++ 区别const 有什么用途主要有三点: 1:定义只读变量,即常量 2:修饰函数的参数和函数的返回值 3: 修饰函数的定义体,这…...
2024/4/20 1:05:22 - Smarty 学习随记!
Smarty 学习随记!我的个人建议,下边的文字都是SMARTY里经常用到的一些基础概念的东西! 写的非常细致,而且接近中国人的思维了,都是工作中做的总结. 但是更全的资料到SMARTY的官方论坛上去看吧!!!!!http://www.phpinsider.com/smarty-forum/ 我注册的ID是:phpcoder虽然是全英文…...
2024/4/12 6:41:57
最新文章
- 【Spring AI】聊天API-OpenAI-Function Call
文章目录 Function Calling工作原理快速上手将函数注册为 Bean纯 Java 函数实现(Plain Java Functions)FunctionCallback Wrapper Specifying functions in Chat OptionsRegister/Call Functions with Prompt Options 附录:Spring AI 函数调用…...
2024/4/28 22:18:26 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 数据结构--KMP算法
数据结构–KMP算法 首先我在这里提出以下问题,一会一起进行探讨 1.什么是最长公共前后缀 2. KMP算法怎么实现对匹配原理 3. 最长公共前后缀怎么求解 KMP算法可以用来解决什么问题? 答:在字符串中匹配子串,也称为模式匹配 分析…...
2024/4/27 22:32:52 - 蓝桥杯加训
1.两只塔姆沃斯牛(模拟) 思路:人和牛都记录三个数据,当前坐标和走的方向,如果人和牛的坐标和方向走重复了,那就说明一直在绕圈圈,无解 #include<iostream> using namespace std; const i…...
2024/4/27 19:03:08 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/28 13:52:11 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/28 3:28:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/28 13:51:37 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/28 15:57:13 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/28 1:22:35 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/27 11:43:08 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57