通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
第1题
下列数据结构中,属于非线性结构的是( )。
循环队列
带链队列
二叉树
带链栈
第2题
算法的空间复杂度是指( )。
算法在执行过程中所需要的计算机存储空间
算法所处理的数据量
算法程序中的语句或指令条数
算法在执行过程中所需要的临时工作单元数
第3题
下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
栈
队列
第4题
软件设计中划分模块的一个准则是( )。
低内聚低耦合
高内聚低耦合
低内聚高耦合
高内聚高耦合
第5题
结构化程序的三种基本控制结构是( )。
顺序、选择和重复(循环)
过程、子程序和分程序
顺序、选择和调用
调用、返回和转移
第6题
下面描述不属于软件特点的是( )。
软件是一种逻辑实体,具有抽象性
软件在使用中不存在磨损、老化问题
软件复杂性高
软件使用不涉及知识产权
第7题
程序测试的目的是( )。
为被测程序设计正确的测试用例
发现并改正程序中的错误
发现程序中的错误
改正程序中的错误
第8题
数据库管理系统是( )。
操作系统的一部分
在操作系统支持下的系统软件
一种编译系统
一种操作系统
第9题
设数据元素的集合D={1,2,3,4,5},则满足下列关系R的数据结构中为线性结构的是( )。
R={(1,2),(3,2),(5,1),(4,5)}
R={(1,3),(4,1),(3,2),(5,4)}
R={(1,2),(2,4),(4,5),(2,3)}
R={(1,3),(2,4),(3,5),(1,2)}
第10题
在E-R图中,用来表示实体联系的图形是( )。
椭圆形
矩形
菱形
三角形
第11题
以下关于结构化程序设计的叙述中对的的是()。
一个结构化程序必须同时由顺序、分支、循环三种结构组成
结构化程序使用goto语句会很便捷
在C语言中,程序的模块化是运用函数实现的
由三种基本结构构成的程序只能解决小规模的问题
第12题
以下叙述正确的是( )。
计算机只接收由0和1代码组成的二进制指令或数据
计算机只接收由0和1代码组成的十进制指令或数据
计算机可直接接收并运行C源程序
计算机可直接接收并运行任意高级语言编写的源程序
第13题
关于C语言标识符,以下叙述错误的是( )。
标识符可全部由数字组成
标识符可全部由下划线组成
标识符可全部由小写字母组成
标识符可全部由大写字母组成
第14题
若有C语言表达式 2+3*4+7/3,以下选项中叙述正确的执行顺序是( )。
先执行3*4得12,再执行2+12得14,再执行7/3得2,最后执行14+2得16
先执行3*4得12,再执行7/3得2.5,最后执行2+12+2.5得16.5
先执行7/3得2,再执行3*4得12,再执行12+2得14,最后执行2+14得16
先执行2+3得5,再执行5*4得20,再执行20+7得27,最后执行27/3得9
第15题
以下定义语句中正确的是( )。
int a=b=0;
char A=65+1,b='b';
float a=1,*b=&a,*c=&b;
double a=0.0,b=1.1;
第16题
若想给已定义为int型的变量a、b、c、d赋整数1,以下选项中错误的语句是()。
a=b,b=c,c=d,d=1;
d=c=b=a=1;
a=1,b=a,c=b,d=c;
d=1,c=d,b=c,a=b;
第17题
若有定义:char c;int d; 程序运行时输入:c=1,d=2<回车>,能把字符1输入给变量c、整数2输入给变量d的输入语句是( )。
scanf("c=%c,d=%d", &c,&d);
scanf("c=%c d=%d", &c,&d);
scanf("c=%d,d=%d", &c,&d);
scanf("c=%d d=%d", &c,&d);
第18题
若有定义:int a; float b;double c;,程序运行时输入:1,2,3<回车>,能把1输入给变量a、2输入给变量b、3输入给变量c的输入语句是( )。
scanf("%d,%f,%lf", &a,&b,&c);
scanf("%d%f%lf", &a,&b,&c);
scanf("%d,%lf,%lf", &a,&b,&c);
scanf("%d,%f,%f", &a,&b,&c);
第19题
有以下程序:
#include <stdio.h> main() { int i,j; for(i=1;i<4;i++) { for(j=i;j<4;j++) printf("%d*%d=%d ",i,j,i*j); printf("\n"); } }
程序运行后的输出结果是( )。
1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9
1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9
1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9
第20题
有以下程序
#include <stdio.h> main() { char a = 'H'; a = (a>='A' && a<='Z') ? (a+32):a; printf("%c\n",a); }
h
H
A
a
第21题
#include <stdio.h> main() { int a=-1, b=-1; for(; ++a;)++b; printf("%d,%d\n", a, b); }
0,-1
0,0
-1,-1
结果不确定
第22题
以下叙述中正确的是()。
在C语言程序设计中,所有函数必须保存在一个源文件中
在算法设计时,可以把复杂任务分解成一些简单的子任务
只要包含了三种基本结构的算法就是结构化程序
结构化程序必须包含所有的三种基本结构,缺一不可
第23题
C语言主要是借助以下哪种手段来实现程序模块化?( )
定义常量和外部变量
定义函数
使用丰富的数据类型
使用三种基本结构语句
第24题
以下程序段中的变量已正确定义
for( i=0; i<4; i++,i++ ) for( k=1; k<3; k++ ); printf("*" );
该程序段的输出结果是( )。
********
****
**
*
第25题
字符数组a和b中存储了两个字符串,判断字符串a和b是否相等,应当使用的是()。
if(strcmp(a,b)==0)
if(strcpy(a,b))
if(a==b)
if(a=b)
第26题
const int *p说明不能修改( )。
p指针
p指针指向的量
p指针指向的数据类型
上述A、B、C三者
第27题
在源程序的开始处加上“#include”进行文件引用的原因, 以下叙述正确的是( )。
stdio.h文件中包含标准输入输出函数的函数说明,通过引用此文件以便能正确使用prinff、scanf等函数
将stdio.h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行
将stdio.h中标准输入输出函数的源程序插入到引用处,以便进行编译链接
将stdio.h中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接
第28题
以下叙述中正确的是( )。
函数调用时,不必区分函数名称的大小写
调用函数时,函数名必须与被调用的函数名完全一致
函数名允许用数字开头
在函数体中只能出现一次return语句
第29题
设有某函数的说明为
int* func(int a[10], int n);
则下列叙述中,正确的是( )。
形参a对应的实参只能是数组名
说明中的a[10]写成a[]或*a效果完全一样
func的函数体中不能对a进行移动指针(如a++)的操作
只有指向10个整数内存单元的指针,才能作为实参传给a
第30题
#include <stdio.h> int fun (int x,int y) { if(x!=y) return ((x+y)/2); else return (x); } main() { int a=4,b=5,c=6; printf("%d\n",fun(2*a,fun(b,c))); }
3
6
8
12
第31题
要求定义一个具有6个元素的int型一维数组,以下选项中错误的是 ( )。
int N = 6,a[N];
int a[2*3]={0};
#define N 3 int a[N+N];
int a[]={1,2,3,4,5,6};
第32题
设有定义int x=0,*p;立即执行以下语句,正确的语句是( )。
p=x;
*p=x;
p=NULL;
*p=NULL;
第33题
以下叙述中错误的是( )。
当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
函数可以返回地址值
改变函数形参的值,不会改变对应实参的值
可以给指针变量赋一个整数作为地址值
第34题
如果定义float a[10],x;则以下叙述中正确的是( )。
语句 a = &x; 是非法的
表达式 a+1 是非法的
三个表达式 a[1]、*(a+1)、*&a[1]表示的意思完全不同
表达式*&a[1]是非法的,应该写成 *(&(a[1]))
第35题
关于地址和指针,以下说法正确的是( )。
通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量
可以取一个常数的地址赋值给同类型的指针变量
可以取一个表达式的地址赋值给同类型的指针变量
可以取一个指针变量的地址赋值给基类型相同的指针变量
第36题
在C语言中,预处理命令行都以“#”开头
预处理命令行必须位于C源程序的起始位置
#include<stdio.h>必须放在C程序的开头
C语言的预处理不能实现宏定义和条件编译的功能
第37题
有以下程序:
#include<stdio.h> #define PT 3.5; #define S(x) PT*x*x; main() { int a=1,b=2; printf("%4.1f\n",S(a+b)); }
31.5
7.5
程序有错无输出结果
14.0
第38题
typedef的作用是用一个新的标识符来代表已存在的类型名
typedef说明的新类型名必须使用大写字母,否则会出编译错误
可以用typedef说明的新类型名来定义变量
用typedef可以说明一种新的类型名
第39题
下面结构体的定义语句中,错误的是( )。
struct ord {int x;int y;int z;} struct ord a;
struct ord {int x;int y;int z;};struct ord a;
struct ord {int x;int y;int z;} a;
struct {int x;int y;int z;}a;
第40题
设有如下语句
typedef struct Date { int year; int month; int day; } DATE;
则以下叙述中错误的是()。
DATE是用户定义的结构体变量
struct Date是用户定义的结构体类型
DATE是用户说明的新结构体类型名
struct是结构体类型的关键字
第41题
给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从低位到高位相反的顺序组成一个新的数,并作为函数值返回。例如,输入一个整数:27638496,函数返回值为:64862。请在程序的下划线处填入正确的内容并把下划线删除.便程序得出正确的结果。注意:
源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
/**********code.c**********/ #include <stdio.h> unsigned long fun(unsigned long n) { unsigned long x=0; int t; while(n) { t=n%10; if(t%2==①______) x=②______+t; n=③______; }return x; } main() { unsigned long n=-1; while(n>99999999||n<0) { printf("Please input(0<n<100000000): "); scanf("%ld",&n); } printf("\nThe result is: %ld\n",fun(n)); } /**********-code.c**********/
0
10*x
n/10
第42题
给定程序MODI1.C中函数fun功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:7531。请改正程序中的错误,使它能得出正确的结果。注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
/**********code.c**********/ #include <stdio.h> void fun (long s, long *t) { int d; long sl=1; /**********found**********/ t = 0; while (s > 0) { d = s%10; /**********found**********/ if (d%2 == 0) { *t = d * sl + *t; sl *= 10; }s /= 10; } }void main() { long s, t; printf("\nPlease enter s:"); scanf("%ld", &s); fun(s, &t); printf("The result is: %ld\n", t); } /**********-code.c**********/
错误:t = 0; 正确:*t=0;
错误:if (d%2 == 0) 正确:if(d%2!=0)或if(d%2==1)
第43题
编写一个函数fun它的功能是:实现两个字符串的连接(使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。例如,分别输入下面两个字符串:FirstStrinf—SecondString程序输出:FirstString——SecondString注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
/**********code.c**********/ #include <stdio.h> void fun(char p1[],char p2[]) { } void main() { char s1[80],s2[40]; printf("Enter s1 and s2:\n"); scanf("%s%s",s1,s2); printf("s1=%s\n",s1); printf("s2=%s\n",s2); printf("Invoke fun(s1,s2):\n"); fun(s1,s2); printf("After invoking:\n"); printf("%s\n",s1); }
参考答案:
void fun(char p1[], char p2[]) { int i,j; for(i=0;p1[i]!='\0';i++) ; for(j=0;p2[j]!='\0';j++) p1[i++]=p2[j]; p1[i]='\0'; }
一、选择题(1 - 40题,共计40分) 二、填空题(41 - 43题,共计60分)