通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
第1题
结构化程序的三种基本控制结构是( )。
顺序、选择和重复(循环)
过程、子程序和分程序
顺序、选择和调用
调用、返回和转移
第2题
软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。
学生成绩管理系统
C语言编译程序
UNIX操作系统
数据库管理系统
第3题
通常软件测试实施的步骤是( )。
集成测试、单元测试、确认测试
单元测试、集成测试、确认测试
确认测试、集成测试、单元测试
单元测试、确认测试、集成测试
第4题
下面描述中错误的是( )。
系统总体结构图支持软件系统的详细设计
软件设计是将软件需求转换为软件表示的过程
数据结构与数据库设计是软件设计的任务之一
PAD图是软件详细设计的表示工具
第5题
结构化程序所要求的基本结构不包括( )。
顺序结构
GOTO跳转
选择(分支)结构
重复(循环)结构
第6题
某二叉树共有7个结点,其中叶子结点只有1个,则该二又树的深度为(假设根结点在第1层)( )。
3
4
6
7
第7题
下列关于栈叙述正确的是( )。
栈顶元素最先能被删除
栈顶元素最后才能被删除
栈底元素永远不能被删除
栈底元素最先能被删除
第8题
在数据库中,数据模型包括数据结构、数据操作和( )。
查询
数据类型
关系运算
数据约束
第9题
一名教师可讲授多门课程,一门课程可由多名教师讲授。则实体教 师和课程问的联系是( )。
1:1联系
1:m联系
m:1联系
m:n联系
第10题
若变量均已正确定义并赋值,以下合法的C语言赋值语句是 ( )。
x=n%2.5;
x=y==5;
x+n=i;
x=5=4+1;
第11题
以下叙述中错误的是( )。
C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制 机器指令文件
C语言中的每条可执行语句和非执行语句最终都将被转换成二进制 的机器指令
用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个 文本文件中
C语言源程序经编译后生成后缀为.obj的目标程序
第12题
下列叙述中错误的是( )。
C程序可以由一个或多个函数组成
C程序可以由多个程序文件组成
一个C语言程序只能实现一种算法
一个C函数可以单独作为一个C程序文件存在
第13题
设有定义:
int a;float b;
执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876 543.0,则a和b的值分别是( )。
87和6.0
876和543.0
87和543.0
76和543.0
第14题
关于C语言标识符,以下叙述错误的是()。
标识符可全部由数字组成
标识符可全部由下划线组成
标识符可全部由小写字母组成
标识符可全部由大写字母组成
第15题
以下合法的转义字符是()。
'\0X41'
'\0x41'
'\X41'
'\x41'
第16题
以下能正确表述算式 sin(2πr+30°)的C语言表达式是( )。
sin(2*π*r+30)
sin(2*3.14*r+30)
sin(2*3.14*r+3.14*30/180.0)
sin(2*3.14*r+30*3.14/360.0)
第17题
char s[81];int i=0;
以下不能将一行(不超过80个字 符)带有空格的字符串正确读入的语句或语句组是( )。
gets(s);
while((s[i++]=getchar())!='\n');s[i]='\0';
scanf("%s",s);
do{ scanf("%c",&s[i]);} while(s[i++]!='\n');s[i]='\0';
第18题
有以下程序
#include <stdio.h> main() { char c1,c2,c3,c4,c5,c6; scanf("%c%c%c%c", &c1,&c2,&c3,&c4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf("%c%c\n",c5,c6); }
程序运行后,若从键盘输入(从第1列开始) 123<回车> 45678<回车> 则输出结果是( )。
1256
1245
1278
1267
第19题
#include <stdio.h> main() { int a,b; for(a=0; a<3; a++) { scanf("%d", &b); switch(b) { default: printf("%d,", ++b); case 1: printf("%d,", ++b); case 2: printf("%d,", ++b); } } }
执行时输入:1 2 3 <回车>,则输出结果是( )。
2,3,3,4,5,6,
2,3,4,
2,2,3,4,4,4,
2,3,4,3,4,4,
第20题
对于if(表达式)语句,以下叙述正确的是( )。
“表达式”的值可以是任意合法的数值
变量不能出现在“表达式”中
常量不能出现在“表达式”中
如果“表达式”的值不是逻辑值,程序会出现编译错误
第21题
以下程序段中的变量已正确定义
for( i=0; i<4; i++,i++ ) for( k=1; k<3; k++ ); printf("*" );
该程序段的输出结果是( )。
******
****
**
*
第22题
#include <stdio.h> main() { int a=-1, b=-1; for(; ++a;)++b; printf("%d,%d\n", a, b); }
程序运行后的输出结果是( )。
0,-1
0,0
-1,-1
结果不确定
第23题
有以下程序:
#include <stdio.h> main( ) { int i, array[6] = {1, 5, 0, 4}; for (i=0; i<5; i++) printf("%d,", array[i] & 4); printf("\n"); }
0,4,0,4,0,
1,5,0,4,0,
1,5,5,4,0,
1,2,1,2,0
第24题
若有定义语句:
int m[][3]={1,2,3,4,5,6,7};
则与该语句等价的是 ( )。
int m[][3]={{1,2,3},{4,5,6},{7}};
int m[][3]={{1,2},{3,4},{5,6,7}};
int m[][3]={{1,2,3},{4,5},{6,7}};
int m[][3]={{1},{2,3,4},{5,6,7}};
第25题
以下叙述中正确的是( )。
char c1, c2, *c3, c4[40];是合法的变量定义语句
数组下标的下限由数组中第一个非零元素的位置决定
数组下标的下限由数组中第一个被赋值元素的位置决定
数组下标的下限是1
第26题
字符数组a和b中存储了两个字符串,判断字符串a和b是否相等,应当使用的是()。
if(strcmp(a,b)==0)
if(strcpy(a,b))
if(a==b)
if(a=b)
第27题
若有定义:char s[30] = {0};运行时输入:This is a string.<回车>则以下不能正确读入整个字符串:This is a string.到字符数组 s 中的语句组是( )。
for(i=0;(c=getchar())!= '\n';i++)s[i] = c;
i=0;while((c=getchar())!='\n')s[i++] = c;
第28题
函数调用时,不必区分函数名称的大小写
调用函数时,函数名必须与被调用的函数名完全一致
函数名允许用数字开头
在函数体中只能出现一次return语句
第29题
#include <stdio.h> void fun(int a,int b) { int t; t=a; a=b; b=t; } main() { int c[10]={1,2,3,4,5,6,7,8,9,0}, i; for (i=0; i<10; i+=2) fun(c[i], c[i+1]); for (i=0;i<10; i++) printf("%d,", c[i]); printf("\n"); }
程序的运行结果是( )。
1,2,3,4,5,6,7,8,9,0,
2,1,4,3,6,5,8,7,0,9,
0,9,8,7,6,5,4,3,2,1,
0,1,2,3,4,5,6,7,8,9,
第30题
#include <stdio.h> int fun(int n) { int a; if(n==1) return 1; a = n+fun(n-1); return (a); } main() { printf("%d\n", fun(5)); }
程序的输出结果是( )。
10
14
15
9
第31题
int x=0, *p;
紧接着的赋值语句正确的是( )。
*p=x;
*p=NULL;
p=x;
p=NULL;
第32题
#include <stdio.h> int add(int a,int b) { return (a+b); } main() { int k, (*f)(),a=5,b=10; f=add; … }
则以下函数调用语句错误的是( )。
k= *f(a,b);
k=add(a,b);
k=(*f)(a,b);
k=f(a,b);
第33题
当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
函数可以返回地址值
改变函数形参的值,不会改变对应实参的值
可以给指针变量赋一个整数作为地址值
第34题
设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是( )。
float *p=&x;
int *p=(float)x;
float p=&x;
float *p=1024;
第35题
在C语言中,预处理命令行都以“#”开头
预处理命令行必须位于C源程序的起始位置
#include <stdio.h>必须放在C程序的开头
C语言的预处理不能实现宏定义和条件编译的功能
第36题
有以下程序:
#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
第37题
下面结构体的定义语句中,错误的是( )。
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;
第38题
#include <stdio.h> typedef struct {int b, p;} A; void f(A c) { int j; c.b+=1; c.p+=2; } void main() { int i; A a={1,2}; f(a); printf("%d,%d\n", a.b, a.p); }
2,4
1,2
1,4
2,3
第39题
#include <stdio.h> void main() { unsigned char a=8, c; c = a>>3; printf("%d\n",c);}
32
16
1
0
第40题
#include <stdio.h> main() { printf("%d\n", NULL); }
变量无定义,输出不确定
-1
第41题
给定程序中,函数fun的功能是:计算下式前n项的和作为函数的返 回值
例如,当形参n的值为10时,函数返回:9.612558。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得 出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!
/**********code.c**********/ #include <stdio.h> double fun(int n) { int i; double s,t; /**********found**********/ s=①______; /**********found**********/ for(i=1; i<=②______; i++) { t=2.0*i; /**********found**********/ s=s+(2.0*i-1)*(2.0*i+1)/③______; } return s; } main() { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); } printf("\nThe result is: %f\n",fun(n)); } /**********-code.c**********/
第42题
给定程序MODI1.C中函数fun的功能是:统计substr所指子字符串在 str所指字符串中出现的次数。 例如,若字符串为aaas lkaaas,子字符串为as,则应输出2。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的 结构!
/**********code.c**********/ #include <stdio.h> int fun (char *str,char *substr) { int i,j,k,num=0; /**********found**********/ for(i = 0, str[i], i++) for(j=i,k=0;substr[k]==str[j];k++,j++) /**********found**********/ If(substr[k+1]=='\0') { num++; break; } return num; } void main() { char str[80],substr[80]; printf("Input a string:") ; gets(str); printf("Input a substring:") ; gets(substr); printf("%d\n",fun(str,substr)); } /**********-code.c**********/
错误:for(i=0,str[i],i++) 正确:for(i=0;str[i];i++)
错误:If(substr[k+1]=='\0') 正确:if(substr[k+1]== '\0')
第43题
请编写一个函数fun,他的功能是:根据以下公式求 π的值(要求满 足精度0.0005,即某项小于0.0005时停止迭代):
程序运行后,如果输入精度0.0005,则程序输出为3.14…。 注意部分源程序存在文件PROG1.C立件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花 括号中填入你编写的若干语句。
/**********code.c**********/ #include <stdio.h> #include <math.h> double fun(double eps) { } void main() { double x; printf("Input eps:") ; scanf("%lf",&x); printf("\neps = %lf,PI=%lf\n", x, fun(x)); }
参考答案:
double fun(double eps) { double s=1.0,s1=1.0; int n=1; while(s1>=eps)/*当某项大于精度要求时,继续求下一项*/ { s1=s1*n/(2*n+1);/*求多项式的每一项*/ s=s+s1;/*求和*/ n++; } return 2*s; }
一、选择题(1 - 40题,共计40分) 二、填空题(41 - 43题,共计60分)