NOIP初赛普及组C++题目及答案.docx

上传人:b****5 文档编号:10164011 上传时间:2023-02-09 格式:DOCX 页数:11 大小:165.61KB
下载 相关 举报
NOIP初赛普及组C++题目及答案.docx_第1页
第1页 / 共11页
NOIP初赛普及组C++题目及答案.docx_第2页
第2页 / 共11页
NOIP初赛普及组C++题目及答案.docx_第3页
第3页 / 共11页
NOIP初赛普及组C++题目及答案.docx_第4页
第4页 / 共11页
NOIP初赛普及组C++题目及答案.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

NOIP初赛普及组C++题目及答案.docx

《NOIP初赛普及组C++题目及答案.docx》由会员分享,可在线阅读,更多相关《NOIP初赛普及组C++题目及答案.docx(11页珍藏版)》请在冰豆网上搜索。

NOIP初赛普及组C++题目及答案.docx

NOIP初赛普及组C++题目及答案

NOIP2014初赛普及组C++题目及答案

 { 

int n;     

float s;     

s = 1.0; 

for(n = 10; n > 1; n--)       

s = s + 1 / n;     

cout << s << endl;     

return 0;   

程序运行后输出结果错误,导致错误结果的程序行是(      )。

 

  A.s = 1.0;  B.for(n = 10; n > 1; n--)  C.s = s + 1 / n;  D.cout << s << endl;  

⒕设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是(      )。

  

A.x = (x * 100) + 0.5 / 100.0;  B.x = (x * 100 + 0.5) / 100.0;   

C.x = (int)(x * 100 + 0.5)/100.0;  D.x = (x / 100 + 0.5) * 100.0;  

⒖有以下程序 

#include 

using namespace std;  

int main()  

 { 

int s, a, n;     

s = 0;    

 a = 1;     

cin >> n;     

do      

 { 

        s += 1;         

a -= 2; 

      }

while(a !

= n);     

cout << s << endl;     

return 0;  

 } 

若要使程序的输出值为2,则应该从键盘给n输入的值是(      )。

    

A.-1  B.-3  C.-5  D.0  

⒗一棵具有5层的满二叉树中结点数为(      )。

   

 A.31  B.32  C.33  D.16  

⒘有向图中每个顶点的度等于该顶点的(      )。

  

  A.入度  B.出度  C.入度和出度之和  D.入度和出度之差  

⒙设有100个数据元素,采用折半搜索时,最大比较次数为(      )。

    

A.6  B.7  C.8  D.10  

⒚若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值,c>0。

 s = a; 

for(b = 1; b <= c; b++)   s += 1; 

则与上述程序段功能等价的赋值语句是(      )。

 

  A.s = a + b  B.s = a + c  C.s = s + c  D.s = b + c  

⒛计算机界的最高奖是(      )。

  

A.菲尔兹奖  B.诺贝尔奖  C.图灵奖  D.普利策奖 

二、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分) 

1.把M个同样的球放到N个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的放置方法?

(用K表示)。

 

例如,M=7,N=3时,K=8;在这里认为和是同一种放置方法。

 问:

M=8,N=5时,K=     。

 

2.如图所示,图中每条边上的数字表示该边的长度,则从A到E的最短距离是             。

 

 

三、阅读程序写结果(共4题,每题8分,共计32分)

1. 

#include    

using namespace std;   

int main()    

{  

int a, b, c, d, ans;     

 cin >> a >> b >> c;      

d = a- b;      

a = d + c;      

ans = a * b;  

cout << "Ans = " << ans << endl;      return 0;    

输入:

2 3 4  

输出:

Ans = 

2.

#include    

using namespace std;   

int fun(int n)    

{  

if(n == 1)        

return 1;      

if(n == 2)        

return 2;  

return fun(n -2) - fun(n - 1);    

}   

int main()    

{  

int n;      

cin >> n;  

cout << fun(n) << endl;     

 return 0;    

输入:

7  

输出:

 

3.

#include   

#include    

using namespace std;   

int main()    

{  

string st;      

int i, len;  

getline(cin, st);

 len = st.size();  

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

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

 st[i] = st[i] - 'a' + 'A';      

cout << st << endl;      

return 0;    

输入:

Hello, my name is Lostmonkey.  

输出:

  

4. 

#include    

using namespace std;   

const int SIZE = 100;   

int main()    

{  

    int p[SIZE];  

    int n, tot, i, cn;     

 tot = 0;     

 cin >> n;  

    for(i = 1; i <= n; i++)       

 p[i] = 1;  

    for(i = 2; i <= n; i++)       

 {  

        if(p[i] == 1)           

 tot++;          

cn = i * 2;          

while(cn <= n)            

{  

    p[cn] = 0;              

cn += i;            

}        

}  

    cout << tot << endl;     

 return 0;    

输入:

30  

输出:

四、完善程序(共2题,共计28分) 

1.(数字删除)下面程序的功能是将字符串中的数字字符删除后输出。

请填空。

(每空3分,共12分)

 #include    

using namespace std;   

int delnum(char *s)   

 {  

    int i, j;     

 j = 0;  

    for(i = 0; s[i] !

= '\0'; i++)  

      if(s[i] < '0' ①s[i] > '9')          

{  

    s[j] = s[i];          

  ②;         

 }     

 return ③;    

}   

const int SIZE = 30;   

int main()    

{  

    char s[SIZE];      

int len, i;  

    cin.getline(s, sizeof(s));     

 len = delnum(s);  

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

cout << ④;      

cout << endl;      

return 0;   

 } 

2.(最大子矩阵和)给出m行n列的整数矩阵,求最大的子矩阵和(子矩阵不能为空)。

  

输入第一行包含两个整数m和n,即矩阵的行数和列数。

之后m行,每行n个整数,描述整个矩阵。

程序最终输出最大的子矩阵和。

(最后一空4分,其余3分,共16分) 

 比如在如下这个矩阵中:

  4 4  

0 -2 -7 0  

9 2 -6 2  

-4 1 -4 1  

-1 8 0 -2  

拥有最大和的子矩阵为:

 

 9 2  

-4 1  

-1 8  

其和为15   

3 3  

-2 10 20 

-1 100 -2 

0 -2 -3 

最大子矩阵和为128   

4 4  

0 -2 -9 -9 

-9 11 5 7 

-4 -3 -7 -6 

-1 7 7 5 

最大子矩阵和为26  

#include    

using namespace std;   

const int SIZE = 100;  

int matrix[SIZE + 1][SIZE + 1];  

int rowsum[SIZE + 1][SIZE + 1]; //rowsum[i][j]记录第i行前j个数的和  

int m, n, i, j, first, last, area, ans;   

int main()   

 {  

    cin >> m >> n;  

    for(i = 1; i <= m; i++)        

for(j = 1; j <= n; j++)          

cin >> matrix[i][j];      

ans = matrix①;  

    for(i = 1; i <= m; i ++)        

②     

for(i = 1; i <= m; i++)        

for(j = 1; j <= n; j++)  

        rowsum[i][j] = ③;     

 for(first = 1; first <= n; first++)        

for(last = first; last <= n; last++)          

{  

         ④;  

         for(i = 1; i <= m; i++)              

{  

  area += ⑤;               

 if(area > ans)                

  ans = area;               

 if(area < 0)                

  area = 0;             

 }        

  }  

    cout << ans << endl;      

return 0;  

  }

 

第二十届全国青少年信息学奥林匹克联赛初赛

普及组参考答案

一、单项选择题(共20题,每题1.5分,共计30分)

1

2

3

4

5

6

7

8

9

10

B

D

D

D

C

B

A

A

B

B

11

12

13

14

15

16

17

18

19

20

D

C

C

C

B

A

C

B

B

C

二、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分)

1.18

2.11

三、阅读程序写结果(共4题,每题8分,共计32分)

1.Ans=9

2.-11

3.HELLO,MYNAMEISLOSTMONKEY.

4.10

四、完善程序(共计28分,以下各程序填空可能还有一些等价的写法,由各省赛区组织本省专家审定及上机验证,可以不上报CCFNOI科学委员会复核)

Pascal语言

C++语言

C语言

分值

1.

(1)

or

||

3

(2)

j:

=j+1或inc(j)

j++或j=j+1或++j

3

(3)

j

3

(4)

s[i]

3

2.

(1)

[1,1]

[1][1]

3

(2)

rowsum[i,0]:

=0

rowsum[i][0]=0

3

(3)

rowsum[i,j-1]+matrix[i,j]

rowsum[i][j-1]+matrix[i][j]

3

(4)

area:

=0

area=0

3

(5)

rowsum[i,last]-rowsum[i,first-1]

rowsum[i][last]-rowsum[i][first-1]

4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1