> 文章列表 > NOC创意编程项c++初中组模拟题

NOC创意编程项c++初中组模拟题

NOC创意编程项c++初中组模拟题

  1. 单选题(共10小题,每题2分,共20分)

3. 下面标识符中正确的是()

A:_abc B:3ab C:int D:+ab

4. 下列数据类型不是C++语言基本数据类型的是()

A:字符型 B:整型 C:实型 D:数组

5. 下列字符列中,可以作为"字符串常量"的是()

A:ABC B:"xyz" C:'uvw' D:'a'

6. 设变量m,n,a,b,c,d均为0,执行(m = a==b)||(n=c==d)后,m,n的值是()

A:0,0 B:0,1 C:1,0 D:1,1

7. 设a为5,执行下列代码后,b的值不为2的是()

A:b = a/2 B:b = 6-(--a) C:b = a%2 D:b = a < 3 ? 3: 2

8. 判断char型变量n是否为小写字母的正确表达式为()

A:’a’<= n <=’z’ B:(n>=a)&&(n<=z)

C:(’a’>=n)| |(’z’<=n) D:(n>=’a’)&&(n<=’z’)

9. 计算机的存储器中,组成一个字节(Byte)的二进制位(bit)个数是()

A:4 B:8 C:16 D:32

10. 下面程序的输出结果是()

(图已丢失,参考类似题型)

A:5 7 B:a=5 b=7 C:a=5 b=6 D:编译时出错

11. 对while、do…while循环结构,下面说法正确的是()

A:只是表达形式不同

B:do…while结构中的语句至少执行一次

C:while结构中的语句至少执行一次

D:条件成立时,它们有可能一次也不执行

12. 下列函数的功能是()

A:把a中的大写字母变成小写字母

B:把a中的小写字母变成大写字母

C:把a中的所有字母变成小写字母

D:把a中的字母变成它前面i个的

  1. 判断题(共5小题,每题2分,共10分)

13. const char* p说明p是指向字符串的常量指针()

对 错

14. 在说明一个结构变量后,不能整体引用结构体变量,需要逐一引用()

对 错

15. 设int a[][4]={1,2,3,4,5,6,7,8,9};则数组a的第一维的大小是4 ()

对 错

16. 字符数组中每一个元素可存放一个字符,而字符指针变量存放字符串首地址()

对 错

17. break语句也可以用于if中,退出if语句()

对 错

  1. 阅读程序写结果(共3小题,每题5分钟,共15分)

1、

#include <iostream>

using namespace std;

int gcd(int a,int b)

{

int r = a%b;

while( r )

{

a = b;

b = r;

r = a%b;

}

return b;

}

int main()

{

int a,b;

cin >> a >> b;

cout << gcd(a,b) << endl;

return 0;

}

18. 输入:16 24

输出:_____

2、

#include <iostream>

#include <algorithm>

using namespace std;

int main()

{

int a,b;

cin >> a >> b;

while( a!=b )

{

if( a > b )

{

a = a-b;

}

else

{

b = b-a;

}

}

cout << a << endl;

return 0;

}

19. 输入:18 63

输出:_____

3、

#include <iostream>

#include <cstring>

using namespace std;

int main()

{

char str[32] = {0};

cin >> str;

int len = strlen(str);

for(int i = 0 ; i < len; i++)

{

if( str[i] >= 'A' && str[i] <= 'Z')

{

str[i] += 32;

}

if( str[i] >= 'a' && str[i] <= 'z')

{

str[i] -= 32;

}

}

cout << str << endl;

return 0;

}

  1. 输入:AbCdefGg
    输出:__________

  1. 完善程序题(共3小题,每题10分,共30分)

1、如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,12321 就是一个回文数,而 77778 就不是。当然,回文数的首和尾都应是非零的,因此 0220 就不是回文数。事实上,有一些数(如 33 ),在十进制时是回文数,在二进制时( 100001 )时也是回文数,我们姑且将这样的数叫做双重回文数,请你找出两个整数之间的所有双重回文数,如果没有,输出-1

输入一个数,请按上述要求完善以下程序:

#include <iostream>

using namespace std;

int main(){

int a,b;

cin>>a>>b;

bool flag1=true;

for(int i=a;i<=b;i++){

int t=i,tmp=0;

while(t){

tmp=______①________;

t/=10;

}

if(tmp==i){

int arr[100],k=0,t=i;

while(t){

_______②________

t/=2;

}

_____③______

bool flag=true;

for(;p<q;p++,q--){

if(_____④_____){

flag=false;

break;

}

}

if(flag){

flag1=false;

cout<<i<<endl;

}

}

}

if(flag1){

cout<<"-1";

}

return 0;

}21. ①处应填()

A: tmp*10+t%10 B :t*10+tmp%10

C: tmp%10+t/10 D :tmp*10+t/10

22. ②处应填()

A: arr[k]=t/2; B:arr[k]=t%2;

C:arr[k++]=t%2; D:arr[k++]=t/2;

23. ③处应填()

A: int q=0,p=k-1;

B: int p=0,q=k-1;

C: int p=0,q=k;

D: int q=0,p=k;

24. ④处应填()

A: arr[p]==arr[q]; B: arr[p]!=arr[q];

C: arr[p]>arr[q]; D:arr[p]<arr[q];

2.给定一个有序(非降序)数组A,可含有重复元素,求最小的i使得A[i]等于target,不存在则返回-1。

#include <iostream>

using namespace std;

int BinarySearch(int A[],int n,int target){

if(n <= 0){

return -1;

}

int start = 0,end = n-1;

while(start < end){

int mid = _①_;

if(A[mid] < target){

start = __②__;

}

else{

_③___;

}

}

if(__④__){

return -1;

}

else{

return start;

}

}

int main(){

int target;

cin>>target;

int A[] = {2,3,4,4,4,4,4,5,6,7,8};

cout<<BinarySearch(___⑤___)<<endl;

return 0;

}25. ①处应填()

A: (start+end)/2; B :start

C: end D:start+end

26. ②处应填()

A: mid; B:mid+1;

C:mid-1; D:end;

27. ③处应填()

A:end=mid B:end=mid+1

C:end=mid-1 D:end=start

28. ④处应填()

A:A[start] === target B:A[start] != target

C:A[end] != target D:A[edn] == target;

29. ⑤处应填()

A: A,10,target

B: A,target,10

C: A,target,11

D:A,11,target

3.编一程序实现两种不同进制之间的数据转换。输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。

#include <iostream>

#include <cmath>

#include <cstring>

using namespace std;

char c[32];

char t[32];

void change(int n,int base)

{

int index = 0;

while(n>0){

if( n%base >= 10)

t[index++] = __①__;

else

t[index++] = __②__;

__③___;

}

}

int main()

{

int base,taget;

cin >> base >> c >> taget;

int len = strlen(c);

int value = 0;

for( int i = 0; i < len; i++)

{

if( c[i] < 'A' )

value += (__④__)*pow(base,len-1-i);

else

value += (__⑤__)*pow(base,len-1-i);

}

change(value,taget);

int t_len = strlen(t);

for(int i = t_len-1; i>= 0;i--)

{

cout << t[i];

}

cout << endl;

return 0;

}30. ①处应填()

A:n%base +’A’-10

B :n%base

C: n%base +’A’

D:n%base +’0’

31. ②处应填()

A:n%base B :n%base +’0’

C:n/base D :n%base -’0’

32. ③处应填()

A:n%=base; B :n%=10;

C:n/=10; D :n/=base;

33. ④处应填()

A:str[i] B :str[i]+'0'

C:str[i]-'0' D :str[i]-'1'

34. ⑤处应填()

A:str[i]-'A'+10 B :str[i]-'A'

C:str[i]+'A'+10 D :str[i]+'A'

五、编程题(共5小题,每题5分,共25分)35. 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。

输出格式:

在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

6 2

1 2 3 4 5 6

输出样例:

5 6 1 2 3 436. 题目描述

找出下列数字的规律,根据输入的项数n,求出数列的前n项内容

1 4 9 61 52 63......

输入格式:

一个正整数n

输出格式:

一行n个正整数

输入输出样例

输入:3

输出:1 4 937. 小码君和小码酱想要一起下围棋,但是围棋的棋盘找不到了,于是他们决定用C++完成一个简单的围棋程序,x表示小码君的黑子,o表示小码酱的白子,-表示没有下棋的位置,在围棋中这种位置称作是气,如果落子之后,能够导致对方连续的任意颗棋子所有相邻位置都没有气,则全部吃掉。可是如何利用程序实现判断小码君落子后围棋能能否吃子呢?

输入格式:

第一行一个整数n,表示围棋的棋盘为n行n列;

接下来n行,每行n个字符表示当前棋盘所有格子的棋子情况;

最后一行两个整数x, y,用空格隔开,分别表示小码君在x行y列落子;

输出格式:

如果可以吃子,输出true;

如果不能,输出false。

约定:

3<=n<=100;

落子之前的棋盘一定是符合规则的且小码君的落子一定符合规则。

输入样例1:

5

-----

-xo--

xox--

xoxo-

--ox-

5 2

输出样例1:

true

输入样例2:

5

-----

-xo--

xox--

xoxo-

--ox-

3 4

输出样例2:

False

38. 题目描述:

找出正整数M和N之间(N不小于M)的所有真素数

真素数的定义:如果一个正整数P为素数,且其反序也为素数,那么P就为真素数。

例如,11,13均为真素数,因为11的反序还是为11,13的反序为31也为素数。

输入格式:

输入两个数M和N,空格间隔,1<=M<=N<=100000。

输出格式:

按从小到大输出M和N之间(包括M和N)的真素数,逗号间隔。如果之间没有真素数,则输出No。

样例数据:

输入1:

10 35

输出1:

11,13,17,3139. 题目描述:第19届亚洲运动会将于2022年9月10日在杭州举行,在运动会体操项目中,现场会有10名评委对运动员的表现进行打分,采用去除一个最高分和一个最低分,余下取平均分最为运动员的最后得分,请你来帮助奥组员编写一个C++程序,实现这样的效果的,10个裁判一次输入得分,自动生成运动员最终得分。

输入格式:

10个数字,每个数字一行

输出格式:

1个保留两位小数的数字

输入样例:

10

9

9

8

7

8

8

6

9

9

输出样例:

8.38