下面有关函数参数的说法,正确的是( )。
A:值传递时实参值拷贝给形参,子函数修改形参不影响主函数实参。B 错(与值传递机制矛盾),C 错(传地址后子函数改值会影响主函数),D 错(C++ 实参与形参数必须匹配)。
下面 C++ 代码执行后,输出的是( )。
01int arr[10]={1}; 02string strArr="chen a dai"; 03cout<<strArr[arr[1]]<<endl;
B:c。int arr[10]={1} 表示 arr[0]=1,其余元素默认初始化为 0,故 arr[1]=0。strArr[0] 是字符串首字符 'c',故输出 c。
下面 C++ 代码最后执行后输出是( )。
01int fun1(int *n) 02{ 03 return *n**n; 04} 05int main() 06{ 07 int arr[10]={2}; 08 arr[1]=fun1(arr); 09 cout<<arr[1]<<endl; 10}
D:4。fun1(arr) 中 arr 退化为指针,*n=arr[0]=2,返回 n**n=22=4,赋给 arr[1],故输出 4。
下面 C++ 代码执行后的结果是( )。
01int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}}; 02for(int i=0;i<3;i++) 03{ 04 for(int j=2;j>=0;j--) 05 { 06 cout<<arr[i][j]<<" "; 07 } 08 cout<<endl; 09}
C:内层 j 从 2 递减到 0,每行逆序输出 arr[i][2]、arr[i][1]、arr[i][0],故输出 3 2 1 / 6 5 4 / 9 8 7 三行。
下面 C++ 代码执行后输出是( )。
01int arr[3]={1,2,3}; 02int *p=NULL; 03p=arr; 04p++; 05cout<<*p<<endl;
C:2。p=arr 后 p 指向 arr[0],p++ 自增一个 int(4 字节)指向 arr[1]=2,故 *p 输出 2。
如果变量 x 的地址是 0x6ffe14,下面 C++ 代码执行以后输出的是( )。
01int *p=NULL; 02int x=2; 03p=&x; 04p++; 05cout<<p<<endl;
C:0x6ffe18。p=&x 后 p 指向 x 的地址 0x6ffe14(int 4 字节),p++ 自增一个 int,故 p=0x6ffe14+4=0x6ffe18。
在 C++ 中,执行下面代码后,输出的是( )。
01int point(int *p) 02{ 03 return *p**p; 04} 05int main() 06{ 07 int a=20; 08 int *p=&a; 09 *p=point(p); 10 cout<<*p<<endl; 11}
A:400。p=&a=20,point(p) 中 *p=20,返回 p**p=2020=400,赋给 *p 即 a=400,cout<<*p 输出 400。
下列 C++ 语句执行以后结果是 true 的是( )。
B:5&&2。逻辑与运算两边都真即结果为真(true=1)。A 错(3 && false = false),C 错(101&&000 中 000 是 false),D 错(4&true 是按位与不是逻辑与,4&1=0)。
在如下的 C++ 代码中实现了对字符串中出现的 个字母的个数统计,横线处应填入是( )。
01string str="HELLO CHEN A DAI"; 02int strlen=str.length(); 03char alpha[26]={65}; 04int cnt[26]={0}; 05for(int i=1;i<26;i++) 06{ 07 ____________; 08} 09for(int i=0;i<26;i++) 10{ 11 cout<<alpha[i]<<" "; 12} 13cout<<endl; 14for(int i=0;i<26;i++) 15{ 16 for(int j=0;j<strlen;j++) 17 { 18 if(alpha[i]==str[j]) 19 { 20 cnt[i]++; 21 } 22 } 23} 24for(int i=0;i<26;i++) 25{ 26 cout<<cnt[i]<<" "; 27}
A:alpha[i]=alpha[i-1]+1。char alpha[26]={65} 把 alpha[0]='A'(65),循环从 i=1 起递增,每个元素等于前一个加 1,得到 'A','B',...,'Z'。
下面 C++ 代码执行后生成的文件其字节数为( )。
01ofstream fout; 02fout.open("1.txt"); 03for(int i=1;i<=10;i++) 04{ 05 if(i%5==0) 06 { 07 int x=6; 08 fout<<x; 09 } 10 else 11 { 12 char ch='A'; 13 fout<<ch; 14 } 15}
A:10 字节。i=1..10 中 i%5==0 的有 5、10,写入 '6' 各 1 字节共 2 字节;其余 8 次写入字符 'A' 各 1 字节共 8 字节;总 2+8=10 字节。
下列 C++ 代码输入 1,2,3,4,执行后,将输出的是( )。
01string str=""; 02cin>>str; 03int strlen=str.length(); 04for(int i=0;i<strlen;i++) 05{ 06 if(str[i]<='9'&&str[i]>='0') 07 { 08 cout<<str[i]; 09 } 10 else 11 { 12 cout<<"#"; 13 } 14}
D:1#2#3#4。cin>>str 遇逗号停止,str="1"(实际读到逗号前为"1",但 cin 默认按空白分隔,逗号非空白故读到 "1,2,3,4" 中?)。cin 默认以空白分隔,逗号非空白,故读到 "1,2,3,4",逐字符输出数字原样、逗号变 #,结果 1#2#3#4。
以下 C++ 代码用于实现每个整数对应的因数,如输入 ,则输出 1 2 3 4 6 12;如输入 ,则输出 1 2 3 6 9 18。横线处应填入代码是( )。
01int n; 02cin>>n; 03for(int i=1;i<=n;i++) 04{ 05 ____________ 06 { 07 cout<<i<<" "; 08 } 09}
A:if(n%i==0)。遍历 i=1..n,若 n 能被 i 整除则 i 是因数,输出 i。如 n=12 输出 1,2,3,4,6,12。
某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。( )。
C:油量表。声控选路系统需要:麦克风(输入语音)、扬声器(输出语音播报路线)、传感器(采集路况位置);油量表与选路算法无关。
现代计算机是指电子计算机,它所基于的是( )体系结构。
B:冯·诺依曼。冯·诺依曼提出存储程序概念,计算机由运算器、控制器、存储器、输入设备、输出设备五部分构成,是现代电子计算机的基础体系结构。
输入 个正整数 (),想找出它所有相邻的因数对,如,输入 ,因数对有 、、。下面哪段代码找不到所有的因数对?( )。
B:i 从 2 开始,遗漏相邻因数对 (1,2)。A/C/D 都能找到 (1,2)(C 通过 i=2 输出 (1,2),D 通过 i=1 输出 (1,2))。
C++ 的内置函数 sort() 支持数组的局部排序。例如 int a={10,9,8,7,6,5,4,3,2,1},可以用 sort(a,a+5) 排序成 {6,7,8,9,10,5,4,3,2,1}。
正确。std::sort 接受首尾迭代器 [a, a+5) 对前 5 个元素排序,原数组其余位置不变。示例 sort(a,a+5) 把 a[0..4] 从 10,9,8,7,6 排成 6,7,8,9,10,后 5 位不变。
用递归法求 n 的阶乘,时间复杂度是 。
正确。递归计算 n! 调用 n 次 factorial(每次 n 减 1),时间复杂度 O(n)。
[(1,2)*2]*3 在 C++ 中是合法的表达式。
错。C++ 没有 [] 一元运算符作用于字面量,[(1,2)*2] 不是合法语法(逗号表达式在 () 内可用,但 [] 下标运算符作用于非数组类型不合法)。
在下面的 C++ 代码中,将对 1.txt 文件写入 hello。
ifstream filein;
ofstream fileout;
filein.open("1.txt");
fileout<<"hello";
错。代码用 ifstream(读文件)打开 1.txt,没有对 ofstream 调用 open,无法写入;正确写法应 fileout.open("1.txt")。
文本文件 1.txt 第 行由 01234 共 个字符组成其间没有空格,当用 C++ 代码正常打开文件成功并执行如下代码以后,第 行长度为 。
01ifstream filein; 02int buff; 03filein.open("1.txt"); 04filein>>buff; 05cout<<buff<<endl;
错。代码读取 1.txt 到 int buff,但文件内容 01234 是字符(且以 0 开头非数字),>> 到 int 会停在非数字处,buff 实际只能读到 0 或失败,第 1 行长度仍是 5 不变,但 cout<<buff 输出整型而非字符串。
执行 C++ 代码 cout<<(5||2); 后将输出 。
正确。5||2 中 5 和 2 都为真(C++ 非零为真),逻辑或结果为 true 即 1,cout 输出 1。
在 C++ 中,两个字符串使用加号 + 运算符相加,相当于字符串的合并运算。下面 C++ 代码执行后,将输出 chenadai。
01string a="chen"; 02string b="a"; 03string c="dai"; 04string name=a+b+c; 05cout<<name<<endl;
正确。std::string 重载了 operator+,a+b+c 即字符串拼接,结果 "chen"+"a"+"dai"="chenadai"。
C++ 内置函数 sort() 可以对整数、浮点数、字符数组进行从大到小,从小到大,局部排序。
正确。std::sort 默认升序,可通过 greater<T>() 实现降序,对 int/float/char[] 等可比较元素均可排序,并支持局部排序 [first, last)。
小杨最近在准备考 GESP,他用的 Dev C++ 来练习和运行程序,所以 Dev C++ 也是一个小型操作系统。
错。Dev C++ 是集成开发环境(IDE),用于编写和编译 C++ 程序,本身不是操作系统。
任何一个 while 循环都可以转化为等价的 for 循环。
正确。任何 while(cond) { body } 都可改写为 for(; cond; ) { body },语义完全等价。