测 试 题
总分120,时间180分钟
一、单选题(每题2分,共40分)
- C++中表示大于等于用以下哪个关系运算符( B )
A.> B.>= C.≥ D.>&= - C++中,不等于用以下哪个关系运算符( C )
A.<> B.≠ C.!= D.== - 表达式7%2的值是多少( B )
A.0 B.1 C.2 D.-1 - 要计算变量B的算术平方根,可以用以下哪个语句( A )
A.sqrt(B) B.abs(B) C.B*B D.pow(B) - 变量A是一个int类型的变量,它一般占用空间大小是( C )字节。
A.1 B.6 C.4 D.8 - C++中,语句a++;和下面哪个语句效果一致( A )
A.a=a+1; B.a=1; C.a==1; D.a--; - 有下面两个语句,运行后屏幕输出的结果为( D )
A.3 B.1 C.a=3 D.4int a=3; cout<<++a;
- 下面语句的输出结果为( A )
A.ok B.no C.ok no D.无输出int y=21; if(y%7==0&&y%2==1) cout<<”ok”; else cout<<”no”;
- C++程序中,主函数的名字为( A )
A.main B.mat C.abs D.任意标识符 - 要输出一个换行,可以用下面哪个语句( A )
A.cout<<endl; B.cout<<””; C.cout<<a; D.cout>>endl; - 关于变量的命名,哪个是正确的( D )
A.3x B.int C.return D.abcd - C++中检测两个变量a,B 是否相等,哪个关系运算式是正确的( C )
A.a=b B.a==b C.a==B D.a=B - 表达式1.0/2的值是多少( B )
A.0 B.0.5 C.nan D.2 - 我们可以用下面哪个语句将字符’a’强制转化成数值( B )
A.char(‘a’) B.int(‘a’) C.return ‘a’ D.a++ - 想在计算机屏幕上输出一个”hello world”,可以用下面哪个语句( C )
A.cin<<"hello world"; B.cin>>"hello world"; C.cout<<"hello world"; D.cout>>"hello world";
- 想给变量x赋值为3,我们可以用下面哪个语句( B )
A.x>3 B.x=3 C.x=x+1 D.3=x - for 循环语句中continue 表示的意思是( A )
A.跳到循环变量的下一个值 B.没有任何意义
C.中断循环 D.退出程序 - 运行下面几行语句后,变量a,b的值是多少( C )
A.a=3 b=4 B.a=3 b=3 C.a=4 b=3 D.a=4 b=4int a,b,t; a=3;b=4; t=a;a=b;b=t;
- 用下面的语句定义数组,以下描述正确的是( D )
int d[10];
A.数组d的元素共10个,分别是d[1]到d[10]
B.d是一个字符形数组。
C.数组的大小是11
D.数组的大小是10 - 已知’B’的ASCII值是66,请问’A’的ASCII值是多少( B )
A.67 B.65 C.66 D.68
二、程序设计(每题20分,共80分)
- 矩形的面积(area,1s,512M)
小明得到一个红色的矩形,它的长为 \(a\),宽为 \(b\),请你帮小明计算一下矩形的面积。面积公式 \(S=a*b\)。
输入两个以空格分割的正整数 \(a,b\);输出一个正整数 \(S\)。
数据保证答案不超过 \(2^{31}-1\)。
- 参考程序
#include <iostream>
using namespace std;、
int main() {
int a, b; cin >> a >> b;
cout << a * b;
return 0;
}
- 结队子(team,1s,512M)
小明和小张来自两个不同的小学,一天他们结队子做游戏,规则很简单,他们每人独自写一个 \(10\) 以内的正整数,如果他们写出的数相同,则结队子成功(输出”yes”),否则失败(输出”no”)。
输入两个数,分别表示小明和小张写出的两个正整数。
输出一个字符串,表示是否成功。
- 参考程序
#include <iostream>
using namespace std;
int main() {
int a, b; cin >> a >> b;
if (a == b) cout << "yes";
else cout << "no";
return 0;
}
- 求和(sum,1s,512M)
小明今天接到一个任务,就是计算求 \(1,2,3,...,n\) 的奇数和。由于小明比较懒,他请你帮他算一下。
输入一个正整数 \(n\),输出一个正整数,表示奇数之和。
数据规模:
80%的数据,\(n\) 小于\(10000\);
90%的数据,\(n\) 小于\(1000000\);
100%的数据,\(n\) 小于等于 \(2^32\)
问题:求 \(1,2,3,...,n\) 的奇数和,其中 \(n≤2^{32}\)。
等差数列:当首项为 \(a_1\),末项为 \(a_n\),项数为 \(n\),其前 \(n\) 项和 \(s=\frac{(a_1+a_n)* n}{2}\)
分析:循环肯定TLE,明显存在规律,有\(n\) 为奇数和偶数时有不同情况,分情况讨论;
-
当 \(n\) 是奇数的时候,\(s=1+3+5+...+n;\)
假设有 \(k\) 项元素,则 \(1+(k-1)*2=n\),解出 \(k=\frac{n-1}{2}+1=\frac{n+1}{2}\)
\(s=\frac{(1+n)*k}{2}=\frac{(n+1)^2}{4}\) -
当 \(n\) 是偶数的时候,\(s=1+3+5+...+n-1;\)
假设有 \(k\) 项元素,则 \(1+(k-1)*2=n-1\),解出 \(k=\frac{n-1-1}{2}+1=\frac{n}{2}\)
\(s=\frac{(1+n-1)*k}{2}=\frac{(n)^2}{4}\)
在程序中,为了 n*n 不爆long long, 我们会进行如下的一些优化写法。
- 参考程序
#include <iostream>
using namespace std;
int main() {
long long n, s; cin >> n;
if (n % 2) s = ((n + 1) / 2) * ((n + 1) / 2);
else s = (n / 2) * (n / 2);
cout << s;
return 0;
}
- 七仙女(seven,1s,512M)
七仙女总喜欢与 \(7\) 相关的数字,如果一个数是 \(7\) 的倍数,七仙女喜欢,如果一个数至少有一位含有数值 \(7\)(例如 \(71\) 虽然不是7的倍数,但它的十位数是 \(7\)),则七仙女也喜欢。所以 \(7、14,71,117\),都是七仙女喜欢的数,而 \(6,9\) 则不喜欢,输入 \(n\) 个正整数统计七仙女喜欢的数的个数。
输入第一行一个正整数 \(n\),表示共有多少个数。接下来一行,\(n\) 个正整数。
输出一行一个数,表示七仙女喜欢的数的个数。
数据范围:\(n<1000\),每个整数小于$ 232$。
- 参考程序
#include <iostream>
using namespace std;
int main() {
int n, cnt = 0;
long long a; // unsigned int 也可以
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a;
if (a % 7 == 0) cnt++, a = 0;
while (a) {
if (a % 10 == 7) break;
a /= 10;
}
if (a) cnt++;
}
cout << cnt;
return 0;
}
标签:语句,10,frac,cout,int,C++,6.3,正整数,参考答案
From: https://www.cnblogs.com/hellohebin/p/17453794.html