1、以下for循环的执行次数是()
for (int x = 0, y = 0; (y = 123) && (x < 4); x++);
A 是无限循环
B 循环次数不定
C 4次
D 3次
答案:C
2、以下程序的运行结果是()
#include
int main(void)
{
printf("%s , %5.3s\n", "computer", "computer");
return 0;
}
A computer , puter
B computer , com
C computer , computer
D computer , compu.ter
答案:B
3、下列main()函数执行后的结果为()
int func()
{
int i, j, k = 0;
for (i = 0, j = -1; j = 0; i++, j++)
{
k++;
}
return k;
}
int main()
{
cout << (func());
return 0;
}
A -1
B 0
C 1
D 2
答案:B
4、下面程序输出是什么?()
#include
int main()
{
int a = 1, b = 2, c = 3, d = 0;
if (a == 1 && b++ == 2)
if (b != 2 || c-- != 3)
printf("%d,%d,%d\n", a, b, c);
else
printf("%d,%d,%d\n", a, b, c);
else
printf("%d,%d,%d\n", a, b, c);
return 0;
}
A 1,2,3
B 1,3,2
C 3,2,1
D 1,3,3
答案:D
5、若有定义语句: int a=10 ; double b=3.14 ; 则表达式 ‘A’+a+b 值的类型是()
A char
B int
C double
D float
答案:C
6、下面代码中,p[1][2]的值是()`
int p[][4] = { {1}, {3, 2}, {4, 5, 6}, {0} };
A 1
B 0
C 6
D 2
答案:B
7、选择表达式 11|10 的结果(本题数值均为十进制)()
A 11
B 10
C 8
D 2
答案:A
8、fun(21)运行结果是()
int fun(int a)
{
a ^= (1 << 5) - 1;
return a;
}
A 10
B 5
C 3
D 8
答案:A
9、若有定义语句:int year=1009,*p=&year;以下不能使变量 year 中的值增至 1010 的语句是()
A *p+=1;
B (*p)++;
C ++(*p)
D *p++
答案:D
10、下面关于"指针"的描述不正确的是()
A 当使用free释放掉一个指针内容后,指针变量的值被置为NULL
B 32位系统下任何类型指针的长度都是4个字节
C 指针的数据类型声明的是指针实际指向内容的数据类型
D 野指针是指向未分配或者已经释放的内存地址
答案:A
入口:题目链接
题目解析:
队伍的水平值等于该队伍队员中第二高水平值,为了所有队伍的水平值总和最大的解法,也就是说每个队伍的第二个值是尽可能大的值。所以实际值把最大值放到最右边,最小是放到最左边。
解题思路:
代码展示:
#include
#include
#include
using namespace std;
int main()
{
int n;
while (cin >> n)
{
long long sum = 0;
vector<int> a;
a.resize(3 * n);
for (int i = 0; i < 3 * n; i++)
{
cin >> a[i];
}
std::sort(a.begin(), a.end());
for (int i = 0; i < n; i++)
{
sum = sum + a[a.size() - 2 * (i + 1)];
}
cout << sum << endl;
}
return 0;
}
入口:题目链接
代码展示:
#include
#include
using namespace std;
int main()
{
// oj中IO输入字符串最好使用getline。
string str1, str2;
//cin>>str1; // 注意这里不能使用cin接收,因为cin遇到空格就结束了。
getline(cin, str1);
getline(cin, str2);
// 使用哈希映射思想先str2统计字符出现的次数
int hash[256] = { 0 };
for (size_t i = 0; i < str2.size(); ++i)
{
hash[str2[i]]++;
}
// 遍历str1,str1[i]映射hash对应位置为0,则表示这个字符在
// str2中没有出现过,则将他+=到ret。注意这里最好不要str1.erases(i)
// 因为边遍历,边erase,容易出错。
string ret = "";
for (size_t i = 0; i < str1.size(); ++i)
{
if (hash[str1[i]] == 0)
ret += str1[i];
}
cout << ret << endl;
return 0;
}