当前位置:首页 > C/C++ > 正文内容

NOIP 2007 普及组初赛试题 原题及答案 & 洛谷1001

mxdyeah9个月前 (08-11)C/C++1280

Luogu原题测试

第 1 题

在以下各项中,(  )不是 CPU 的组成部分

  1.     
    正确答案: D

得分: 1.5 / 1.5 分
第 2 题

在关系数据库中,存放在数据库中的数据的逻辑结构以(  )为主。

  1.     
    正确答案: D

得分: 1.5 / 1.5 分
第 3 题

在下列各项中,只有(  )不是计算机存储容量的常用单位。

  1.     
    正确答案: C

得分: 1.5 / 1.5 分
第 4 题

ASCII 码的含义是(  )。

  1.     
    正确答案: B

得分: 1.5 / 1.5 分
第 5 题

一个完整的计算机系统应包括(  )。

  1.     
    正确答案: B

得分: 1.5 / 1.5 分
第 6 题

IT 的含义是(  )。

  1.     
    正确答案: B

得分: 1.5 / 1.5 分
第 7 题

LAN 的含义是(  )。

  1.     
    正确答案: B

得分: 1.5 / 1.5 分
第 8 题

冗余数据是指可以由其它数据导出的数据。例如,数据库中已存放了学生的数学、语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。冗余数据往往会造成数据的不一致。例如,上面 4 个数据如果都是输入的,由于操作错误使总分不等于三科成绩之和,就会产生矛盾。下面关于冗余数据的说法中,正确的是(  )。

  1.     
    正确答案: C

得分: 1.5 / 1.5 分
第 9 题

在下列各软件,不属于 NOIP 竞赛(复赛)推荐使用的语言环境有(  )。

      ★mxd提醒:由于试题为 2007 年的试题,请根据 2007 年的实际情况作答。★

  1.     
    正确答案: C

得分: 1.5 / 1.5 分
第 10 题

以下断电后仍能保存数据的有(  )。

  1.     
    正确答案: A

得分: 1.5 / 1.5 分
第 11 题

在下列关于计算机语言的说法中,正确的有(  )。

  1.     
    正确答案: C

得分: 1.5 / 1.5 分
第 12 题

近 20 年来,许多计算机专家都大力推崇递归算法,认为它是解决较复杂问题的强有力的工具。在下列关于递归算法的说法中,正确的是(  )。

  1.     
    正确答案: A

得分: 1.5 / 1.5 分
第 13 题

一个无法靠自身的控制终止的循环成为“死循环”,例如,在 C++ 语言程序中,语句 while(1) printf("*"); 就是一个死循环,运行时它将无休止地打印 * 号。下面关于死循环的说法中,只有(  )是正确的。

  1.     
    正确答案: A

得分: 1.5 / 1.5 分
第 14 题

在 C++ 语言中,表达式 23|2^5 的值是( )

  1.     
    正确答案: C

得分: 1.5 / 1.5 分
第 15 题

在 C++ 语言中,判断  等于 0 或  等于 0 或  等于 0 的正确的条件表达式是(  )。

  1.     
    正确答案: B

得分: 1.5 / 1.5 分
第 16 题

地面上有标号为 A、B、C 的三根柱,在 A 柱上放有 10 个直径相同中间有孔的圆盘,从上到下依次编号为 1,2,3,将 A 柱上的部分盘子经过 B 柱移入 C 柱,也可以在 B 柱上暂存。如果 B 柱上的操作记录为“进、进、出、进、进、出、出、进、进、出、进、出、出”。那么,在 C 柱上,从下到上的编号为(  )。

A. 2 4 3 6 5 7B. 2 4 1 2 5 7C. 
D. 
正确答案: D

得分: 1.5 / 1.5 分
第 17 题

与十进制数 1770 对应的八进制数是(  )。

  1.     
    正确答案: C

得分: 1.5 / 1.5 分
第 18 题

设 A=B=TrueC=D=False,以下逻辑运算表达式值为假的有(  )。

  1.     
    正确答案: D

得分: 1.5 / 1.5 分
第 19 题

(2070)16+(34)8 的结果是(  )。

  1.     
    正确答案: A

得分: 1.5 / 1.5 分
第 20 题

已知 7 个节点的二叉树的先根遍历是 1 2 4 5 6 3 7(数字为节点的编号,以下同),中根遍历是 4 2 6 5 1 7 3,则该二叉树的后根遍历是(  )。

  1.     
    正确答案: A

得分: 1.5 / 1.5 分
第 21 题

(子集划分)将  个数 (1,2,,) 划分成  个子集。每个数都恰好属于一个子集,任何两个不同的子集没有共同的数,也没有空集。将不同划分方法的总数记为 (,)。例如,(4,2)=7,这 7 种不同的划分方法依次为 {(1),(234)},{(2),(134)},{(3),(124)},{(4),(123)}{(12),(34)},{(13),(24)},{(14),(23)}。当 =6,=3 时,(6,3)=______________。

(提示:先固定一个数,对于其余的 5 个数考虑 (5,3) 与 (5,2),再分这两种情况对原固定的数进行分析。)


正确答案: 90

得分: 5 / 5 分
第 22 题

(最短路线)某城市的街道是一个很规整的矩形网络(见下图),有 7 条南北向的纵街,5 条东西向的横街。现要从西南角的 A 走到东北角的 B ,最短的走法共有多少种?___________


正确答案: 210

得分: 5 / 5 分
第 23 题

看程序写结果:

#include<stdio.h>
int main()
{
	int i, p[5], a, b, c, x, y = 20;
	for ( i = 0; i <= 4; i++ )
		scanf( "%d", &p[i] );
	a = (p[0] + p[1]) + (p[2] + p[3] + p[4]) / 7;
	b = p[0] + p[1] / ( (p[2] + p[3]) / p[4]);
	c = p[0] * p[1] / p[2];
	x = a + b - p[(p[3] + 3) % 4];
	if ( x > 10 )
		y += (b * 100 - a) / (p[p[4] % 3] * 5);
	else
		y += 20 + (b * 100 - c) / (p[p[4] % 3] * 5);
	printf( "%d,%d\n", x, y );
	return(0);
}//注:本例中,给定的输入数据可以避免分母为 0 或数组元素下标越界。

输入:6 6 5 5 3

正确答案: 15,46

得分: 8 / 8 分
第 24 题

看程序写结果:

#include<stdio.h>
void fun( int *a, int *b )
{	
        int *k;
	k = a; a = b; b = k;
}
int main()
{	
        int a = 3, b = 6, *x = &a, *y = &b;
	fun( x, y );	
	printf( "%d,%d ", a, b );
}

输出:_______________________________

正确答案: 3,6

得分: 8 / 8 分
第 25 题

看程序写结果:

#include "math.h"
#include "stdio.h"
int main()
{	
        int a1[51] = { 0 };	
        int i, j, t, t2, n = 50;	
        for ( i = 2; i <= sqrt( n ); i++ )		
            if ( a1[i] == 0 )
		{
			t2 = n / i;			
			for ( j = 2; j <= t2; j++ )
				a1[i * j] = 1;
		}
	        t = 0;	
	        for ( i = 2; i <= n; i++ )		
	        if ( a1[i] == 0 )
		{			
		    printf( "%4d", i ); 
		    t++;			
		    if ( t % 10 == 0 )				
		        printf( "\n" );
		}	
		printf( "\n" );
}


  1. 1.

    每行四分
    正确答案: 2 3 5 7 11 13 17 19 23 29
  2. 2.

    每行四分
    正确答案: 31 37 41 43 47

得分: 8 / 8 分
第 26 题

看程序写结果:

#include "ctype.h"
#include "stdio.h"
void expand( char s1[], char s2[] )
{
	int i, j, a, b, c;
	j = 0;
	for ( i = 0; (c = s1[i]) != '\0'; i++ )
		if ( c == '-' )
		{
			a = s1[i - 1]; b = s1[i + 1];
			if ( isalpha( a ) && isalpha( b ) || isdigit( a ) && isdigit( b ) )
/*函数 isalpha(a) 用于判断字符 a 是否为字母,isdigit(b) 用于判断字符 b 是否为数字,如果是,返回 1,否则返回 0 */
			{
				j--;
				do
					s2[j++] = a++;
				while ( tolower( a ) < tolower( s1[i + 1] ) );
			}
/*函数 tolower(a) 的功能是当字符 a 是大写字母,改为小写,其余情况不变*/
			else s2[j++] = c;
		}else s2[j++] = c;
	s2[j] = '\0';
}


int main()
{
	char s1[100], s2[300];
	printf( "input s1:" );
	gets( s1 );
	expand( s1, s2 );
	printf( "%s\n", s2 );
}

输入:wer2345d-h454-82qqq

正确答案: input s1:wer2345defgh45456782qqq

得分: 8 / 8 分
第 27 题

完善程序:
(求字符的逆序)下面的程序的功能是输入若干行字符串,每输入一行,就按逆序输出该行,最后键入 1 终止程序。请将程序补充完整。

#include <iostream.h>
#include <string.h>
int maxline = 200, kz;
int reverse( char s[] )
{
	int i, j, t;
	for ( i = 0, j = strlen( s ) - 1; i < j; 【①】 , 【②】 )
	{
		t = s[i]; s[i] = s[j]; s[j] = t;
	}
	return(0);
}


int main()
{
	char line[100];
	cout << "continue? -1 for end." <<endl;
	cin>>kz;
	while(【③】)
	{
		cin  >>  line;
		【④】;
		cout << line  <<  endl;
		cout << "continue ? -1 for end." << endl;
		cin >> kz;
	}
}


1.

正确答案: i++ / i=i+1 / i+=1 / ++i

2.

正确答案: j-- / j=j-1 / j-=1 / --j

3.

正确答案: kz!=-1

4.

正确答案: reverse(line)

得分: 8 / 8 分
第 28 题

完善程序:
(棋盘覆盖问题)在一个 2×2 个方格组成的棋盘中恰有一个方格与其它方格不同(图中标记为 1 的方格),称之为特殊方格。现 L 型(占 3 个小方格)纸片覆盖棋盘上除特殊方格的所有部分,各纸片不得重叠,于是,用到的纸片数恰好是 (41)3。在下表给出的一个覆盖方案中,=2,相同的 3 各数字构成一个纸片。下面给出的程序使用分治法设计的,将棋盘一分为四,依次处理左上角、右上角、左下角、右下角,递归进行。请将程序补充完整。

2  2  3  3
2 -1  1  3
4  1  1  5
4  4  5  5
#include <iostream.h>
#include <iomanip.h>
int board[65][65], tile; /* tile为纸片编号 */
void chessboard( int tr, int tc, int dr, int dc, int size )
/* dr,dc依次为特殊方格的行、列号 */
{
	int t, s;
	if ( size == 1 )
		① ;
		t = tile++;
	s = size / 2;
	if ( ② )
		chessboard( tr, tc, dr, dc, s );
	else{
		board[tr + s -1][tc + s -1] = t;
		[③];
	}
	if ( dr < tr + s && dc >= tc + s )
		chessboard( tr, tc + s, dr, dc, s );
	else{
		board[tr + s -1][tc + s] = t;
		④;
	}
	if ( dr >= tr + s && dc < tc + s )
		chessboard( tr + s, tc, dr, dc, s );
	else{
		board[tr + s][tc + s -1] = t;
		[⑤];
	}
	if ( dr >= tr + s && dc >= tc + s )
		chessboard( tr + s, tc + s, dr, dc, s );
	else{ board[tr + s][tc + s] = t;
	      [⑥]; }
}


void prtl( int b[][65], int n )
{
	int i, j;
	for ( i =1; i <= n; i++ )
	{
		for ( j =1; j <= n; j++ )
			cout << setw( 3 ) << b[i][j];
		cout << endl;
	}
}


void main()
{
	int size, dr, dc;
	cout << "input size(4/8/16/64):" << endl;
	cin >> size;
	cout << "input the position of special block(x,y):" << endl;
	cin >> dr >> dc;
	board[dr][dc] = -1;
	tile++;
	chessboard( 1, 1, dr, dc, size );
	prtl( board, size );
}


1.

正确答案: return

2.

正确答案: (dr<tr+s)&&(dc<tc+s) / dr<tr+s&&dc<tc+s

3.

正确答案: chessboard(tr,tc,tr+s-1,tc+s-1,s)

4.

正确答案: chessboard(tr,tc+s,tr+s-1,tc+s,s)

5.

正确答案: chessboard(tr+s,tc,tr+s,tc+s-1,s)

6.

正确答案: chessboard(tr+s,tc+s,tr+s,tc+s,s)

得分: 18 / 18 分


版权声明:本文由mxd's Blog发布,如需转载请注明出处。

如果文章中有风险行为,文章作者不负任何责任。


本文链接:https://blog.mxdyeah.top/mxdyeah_blog_post/13.html

“NOIP 2007 普及组初赛试题 原题及答案 & 洛谷1001” 的相关文章

CSP 2021 提高级第一轮 原题及答案 & 洛谷1037

CSP 2021 提高级第一轮 原题及答案 & 洛谷1037

Luogu原题测试第 1 题在 Linux 系统终端中,用于列出当前目录下所含的文件和子目录的命令为( )。 A. ls B. cd C. cp D. all正确答案: A得分: 2 / 2 分第 2...

Hydro H1032【模板】快速幂 & 洛谷 P1226 题解

Hydro H1032【模板】快速幂 & 洛谷 P1226 题解

这道题挺简单的,只是第一次做的时候忘了%一下。#include<iostream> using namespace std; long long a,b,p,q,w; int loop(long long x,l...

2023年CSP-J组初赛真题及答案

2023年CSP-J组初赛真题及答案

一、  单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)1.  在C++中,下面哪个关键字用于声明一个变量,其值不能被修改?( )。A.  unsigned B.  const C.  static ...

CSP-S 2023 第二轮认证 题解

CSP-S 2023 第二轮认证 题解

密码锁#include <bits/stdc++.h> int n; int a[13][7], b[7]; bool check(int i) { int cnt = ...

CSP-J 2023 第二轮认证 题解

[CSP-J 2023] 小苹果#include <bits/stdc++.h> using namespace std; int main() {     int n; &nbs...

插入排序算法

插入排序算法

插入排序基本思想插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。示例代码1.C++for(int i=2;i<=n;i++)//从第二个数开始排...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。