NOIP 2007 普及组初赛试题 原题及答案 & 洛谷1001
在关系数据库中,存放在数据库中的数据的逻辑结构以( )为主。
得分: 1.5 / 1.5 分
在下列各项中,只有( )不是计算机存储容量的常用单位。
得分: 1.5 / 1.5 分
ASCII 码的含义是( )。
得分: 1.5 / 1.5 分
一个完整的计算机系统应包括( )。
得分: 1.5 / 1.5 分
IT 的含义是( )。
得分: 1.5 / 1.5 分
LAN 的含义是( )。
得分: 1.5 / 1.5 分
冗余数据是指可以由其它数据导出的数据。例如,数据库中已存放了学生的数学、语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。冗余数据往往会造成数据的不一致。例如,上面 个数据如果都是输入的,由于操作错误使总分不等于三科成绩之和,就会产生矛盾。下面关于冗余数据的说法中,正确的是( )。
得分: 1.5 / 1.5 分
在下列各软件,不属于 NOIP 竞赛(复赛)推荐使用的语言环境有( )。
★mxd提醒:由于试题为 年的试题,请根据 年的实际情况作答。★
得分: 1.5 / 1.5 分
以下断电后仍能保存数据的有( )。
得分: 1.5 / 1.5 分
在下列关于计算机语言的说法中,正确的有( )。
得分: 1.5 / 1.5 分
近 20 年来,许多计算机专家都大力推崇递归算法,认为它是解决较复杂问题的强有力的工具。在下列关于递归算法的说法中,正确的是( )。
得分: 1.5 / 1.5 分
一个无法靠自身的控制终止的循环成为“死循环”,例如,在 C++ 语言程序中,语句 while(1) printf("*");
就是一个死循环,运行时它将无休止地打印 *
号。下面关于死循环的说法中,只有( )是正确的。
得分: 1.5 / 1.5 分
在 C++ 语言中,表达式 23|2^5
的值是( )
得分: 1.5 / 1.5 分
在 C++ 语言中,判断 等于 或 等于 或 等于 的正确的条件表达式是( )。
得分: 1.5 / 1.5 分
地面上有标号为 A、B、C 的三根柱,在 A 柱上放有 个直径相同中间有孔的圆盘,从上到下依次编号为 ,将 A 柱上的部分盘子经过 B 柱移入 C 柱,也可以在 B 柱上暂存。如果 B 柱上的操作记录为“进、进、出、进、进、出、出、进、进、出、进、出、出”。那么,在 C 柱上,从下到上的编号为( )。
得分: 1.5 / 1.5 分
与十进制数 对应的八进制数是( )。
得分: 1.5 / 1.5 分
设 A=B=True
,C=D=False
,以下逻辑运算表达式值为假的有( )。
得分: 1.5 / 1.5 分
的结果是( )。
得分: 1.5 / 1.5 分
已知 个节点的二叉树的先根遍历是 (数字为节点的编号,以下同),中根遍历是 ,则该二叉树的后根遍历是( )。
得分: 1.5 / 1.5 分
(子集划分)将 个数 划分成 个子集。每个数都恰好属于一个子集,任何两个不同的子集没有共同的数,也没有空集。将不同划分方法的总数记为 。例如,,这 种不同的划分方法依次为 ,。当 时,______________。
(提示:先固定一个数,对于其余的 个数考虑 与 ,再分这两种情况对原固定的数进行分析。)
得分: 5 / 5 分
(最短路线)某城市的街道是一个很规整的矩形网络(见下图),有 条南北向的纵街, 条东西向的横街。现要从西南角的 A 走到东北角的 B ,最短的走法共有多少种?___________
得分: 5 / 5 分
看程序写结果:
#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
得分: 8 / 8 分
看程序写结果:
#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 ); }
输出:_______________________________
得分: 8 / 8 分
看程序写结果:
#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.
2.
得分: 8 / 8 分
看程序写结果:
#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
得分: 8 / 8 分
完善程序:
(求字符的逆序)下面的程序的功能是输入若干行字符串,每输入一行,就按逆序输出该行,最后键入 终止程序。请将程序补充完整。
#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.
2.
3.
4.
得分: 8 / 8 分
完善程序:
(棋盘覆盖问题)在一个 个方格组成的棋盘中恰有一个方格与其它方格不同(图中标记为 的方格),称之为特殊方格。现 L 型(占 个小方格)纸片覆盖棋盘上除特殊方格的所有部分,各纸片不得重叠,于是,用到的纸片数恰好是 。在下表给出的一个覆盖方案中,,相同的 各数字构成一个纸片。下面给出的程序使用分治法设计的,将棋盘一分为四,依次处理左上角、右上角、左下角、右下角,递归进行。请将程序补充完整。
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.
2.
3.
4.
5.
6.
得分: 18 / 18 分
版权声明:本文由mxd's Blog发布,如需转载请注明出处。
如果文章中有风险行为,文章作者不负任何责任。