解析:
for(初始化部分;条件判断部分;调整部分)
{
//循环部分
}
本题中条件判断部分是(y = 123) && (x < 4),中间用&&相连,左右都为真时才为真,左边是y=123,非0为真,所以只需要看右边是否满足即可,右边x<4,x初始值为0,当x=0,1,2,3时满足条件,所以执行四次,答案选C。
解析:
打印俩一个是%s一个是%5.3s。%s打印computer没有问题,%5.3s中的5表示打印字符宽度为五个,3表示取字符串前3个字符。然后右对齐,左补两个空格,达到5个字符宽度,所以答案为空格空格com,选B。
解析:
同第一题,条件判断为j=0,0为假,所以一次也不会执行,所以k为0,因此主函数输出为0,答案选B。
解析:
本题考察的是else的就近匹配原则和短路原则和前后置++的知识点。
我们先给它弄一下缩进,这样看起来好看一点。
首先第一个if中a==1为真,b++==2为真,在执行完该if语句后b的值变成了3,然后进入第二个if,b!=2为真,因为这里用的是||连接,只要有一个为真就是真,因此当左边b!=2为真后就不会再去判断c–!=3,所以会执行满足第二个if语句的print语句,此时a,b,c的值分别为1,3,3,答案为D。
解析:
隐式类型转换,比较简单不赘述。
解析:
二维数组只写列数,不写行数,会根据初始化的形式自动推断有几行,并且把没有赋初始值的初始化为0。题目中就是一个4*4的矩阵
1 0 0 0
3 2 0 0
4 5 6 0
0 0 0 0
p[1][2]就是0,答案选B。
解析:
11二进制为1011
10二进制为1010
按位或之后为1011为11选A。
位运算符 | 含义 | 说明 |
---|---|---|
& | 按位与 | 有0为0,双1为1: 1&1=1,1&0=0,0&1=0,0&0=0只有两者对应位都为1,结果对应位才为 1,否则为 0 |
| | 按位或 | 有1为1,双0为0: 1I1=1,1I0=1,0I1=1,0I0=0只要两者对应位有一个为1,则结果对应位就为 1,否则为 0 |
~ | 按位取反 | 1变0,0变1: ~1=0, ~0=1如果该位为 1,则结果对应位为 0如果该位为 0, 则结果对应位为 1 |
^ | 按位异或 | 不同为1,相同为0: 1^1=0, 1^0=1, 0^1=1, 0^0=0 只有两者对应位不一样,则结果对应位才为 1, 否则为 0 |
<< | 左移 | 左移n位就是乘以2的n次方所有位依次向左移动,高位丢弃,低位补0 |
>> | 右移 | 右移n位就是除以2的n次方无符号数据:所有位依次向右移动,高位补0,低位丢弃有符号数据:所有位依次向右移动,符号位不变,低位丢弃 |
解析:
根据七题给的总结,1<<5为二进制的100000,十进制的32,1<<5-1=31,31化成二进制为11111,21转换为二进制为10101
10101
^
11111
=
01010化为十进制为8+2=10,答案为A
解析:
D选项实际上包含两个操作:首先,它解引用指针 p(即访问 year 的值),但随后立即对指针 p 执行了自增操作(p++)。然而,由于解引用和自增操作是在同一个表达式中但以错误的顺序执行(从右到左的求值顺序),这里的关键是解引用操作 *p 实际上只获取了 year 的当前值(即 1009),但这个值并没有被用于任何操作(比如增加),紧接着指针 p 就被自增了。因此,这个语句既没有改变 year 的值,也没有将修改后的值存回 year,只是让 p 指向了一个不确定的位置
解析:
当使用free函数(在C中)或相应的内存释放机制(如在C++中的智能指针或delete/delete[]操作符)来释放一个指针所指向的内存时,free或相应的机制仅仅是将该内存块标记为可重新使用,并不会自动将指针变量的值置为NULL。
指针变量本身只是一个存储了内存地址的变量。当释放了它指向的内存后,指针变量仍然存储着那个已经被释放的内存地址。这意味着指针变量变成了所谓的“悬垂指针”(dangling pointer),即它指向的内存已经不再有效或可用,但指针本身的值(即内存地址)并未改变,故A错误。
题目链接:组队竞赛
题目描述:
运行结果:
提交代码:
#include <iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main() {
long long sum=0;
int n;
cin>>n;
vector<int> arr(3*n,0);
for(int i=0;i<3*n;i++)
cin>>arr[i];
sort(arr.begin(),arr.end());
for(int i=1;i<=n;i++)
{
sum+=arr[3*n-2*i];
}
cout<<sum;
}
// 64 位输出请用 printf(\"%lld\")
题目链接:删除公共字符
题目描述:
运行结果:
提交代码:
#include <iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
string str1,str2;
getline(cin,str1);
getline(cin,str2);
vector<int> arr(256,0);
for(char i : str2)
{
arr[i]++;
}
string str3;
for(char i : str1)
{
if(arr[i]==0)
{
str3+=i;
}
}
cout<<str3;
}
// 64 位输出请用 printf("%lld")