文档库 最新最全的文档下载
当前位置:文档库 › 9月份全国计算机等级考试二级C语言题库

9月份全国计算机等级考试二级C语言题库

9月份全国计算机等级考试二级C语言题库
9月份全国计算机等级考试二级C语言题库

9月份全国计算机等级考试二级C语言上机题

第一套

在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的。

(1)软件生命周期中花费费用最多的阶段是

A)详细设计B)软件编码C)软件测试D)软件维护

(2)为了提高测试的效率,应该

A)随机选取测试数据B)取一切可能的输入数据作为测试数据C)在完成编码以后制定软件的测试计划D)集中对付那些错误群集的程序

(3)以下不是面向对象思想中的主要特征的是

A)多态B)继承C)封装

D)垃圾回收

(4)下列叙述中,不符合良好程序设计风格要求的是

A)程序的效率第一,清晰第二B)程序的可读性好C)程序中要有必要的注释D)输入数据前要有提示信息

(5)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指

A)模块间的关系B)系统结构部件转换成软件的过程描述C)软件层次结构D)软件开发过程

(6)数据处理的最小单位是

A)数据B)数据元素C)数据项D)数据结构

(7)假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为

A)log2n B)n2 C)O(n1..5) D)n(n-1)/2

(8)在深度为5的满二叉树中,叶子结点的个数为

A)32 B)31 C)16 D)15

(9)数据库系统的核心是

A)数据库B)数据库管理系统

C)模拟模型D)软件工程

(10)一个关系中属性个数为1时,称此关系为

A)对应关系B)单一关系C)一元关系D)二元关系

(11)下面各选项中,均是C语言合法标识符的选项组是

A)33 we auto B)_23 me _3ew C)_43 3e_ else D)ER -DF 32

(12)可在C程序中用作用户标识符的一组标识符是

A)and B)Date

C)Hi D)case

_2007 y-m-d Dr.Tom Bigl

(13)以下对C语言函数的有关描述中,正确的是

A)在C语言中调用函数时,只能把实参的

值传给形参,形参的值不能传送给实参

B)C函数既可以嵌套定义又可以递归调用

C)函数必须有返回值,否则不能使用函数

D)函数必须有返回值,返回值类型不定

(14)若函数调用时的实参为变量时,以下关于

函数形参和实参的叙述中正确的是

A)函数的实参和其对应的形参共占同一

存储单元B)形参只是形式上的存在,不占

用具体存储单元

C)同名的实参和形参占同一存储单元

D)函数的形参和实参分别占用不同的存储单

(15)现有定义int a;double b;float c;char k;,

则表达式a/b+c-k值的类型为:

A)int B)double

C)float D)char

(16)以下关于long、int和short类型数据

占用内存大小的叙述中正确的是

A)均占4个字节B)根据数据的大小来

决定所占内存的字节数

C)由用户自己定义D)由C语言编译

系统决定

(17)有以下程序段

int j;float y;char name[50];

scanf("%2d%f%s",&j,&y,name);

当执行上述程序段,从键盘上输入55566

7777abc后,y的值为

A)55566.0 B)566.0

C)7777.0 D)566777.0

(18)若变量已正确定义,有以下程序段

i=0;

do printf("%d,",i);while(i++);

printf("%d\n",i);

其输出结果是

A)0,0 B)0,1 C)1,1 D)

程序进入无限循环

(19)下列程序的运行结果是

#include "stdio.h"

main()

{ int x=-9,y=5,z=8;

if(x

if(y<0)z=0;

else z+=1;

printf("%d\n",z);}

A)6 B)7 C)8

D)9

(20)若程序执行时的输入数据是"2473",则

下述程序的输出结果是

#include

void main()

{ int cs;

while((cs=getchar())!=; '\n')

{switch(cs-'2')

{ case 0

case 1: putchar(cs+4);

case 2: putchar(cs+4);

break;

case 3: putchar(cs+3); default:

putchar(cs+2); } } }

A)668977

B)668966

C)6677877

D)6688766

(21)以下程序的输出结果是

main()

{ int a,i;a=0;

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

{ switch(i)

{ case 0:

case 3:a+=2;

case 1:

case 2:a+=3;

default:a+=5; }

}printf("%d\n",a);}

A)31 B)13 C)10

D)20

(22)现有如下程序段

#include "stdio.h"

main()

{ int

k[30]={12,324,45,6,768,98,21,34,453,456};

int count=0,i=0;

while(k[i])

{ if(k[i]%2==0||k[i]%5==0)count++;

i++; }

printf("%d,%d\n",count,i);}

则程序段的输出结果为

A)7,8 B)8,8 C)7,10

D)8,10

(23)若有以下程序

#include

int a[]={2,4,6,8};

main()

{ int i;

int *p=a;

for(i=0;i<4;i++)a[i]=*p;

printf("%d\n",a[2]);}

上面程序的输出结果是

A)6 B)8 C)4

D)2

(24)有以下程序

#include

main()

{ int i,j,m=55;

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

for(j=3;j<=i;j++)m=m%j;

printf("%d\n",m);

}

程序的运行结果是

A)0 B)1 C)2

D)3

(25)已知字符′A′的ASCII码值是65,字符变

量cl的值是′A′,c2 的值是′D′。执行语句

printf("%d,%d",c1,c2-2);后,输出结果是

A)A,B B)A,68

C)65,66 D)65,68

(26)下列程序是用来判断数组中特定元素的位置所在的。

#include

#include

int fun(int *s, int t, int *k)

{ int i;

*k=0;

for(i=0;i

if(s[*k]

return s[*k]; }

main()

{ int a[10]={ 876,675,896,101,301,401,980,431, 451,777},k;

fun(a, 10, &k);

printf("%d, %d\n",k,a[k]);}

如果输入如下整数:876 675 896 101 301 401 980 431 451 777

则输出结果为

A)7,431 B)6

C)980 D)6,980

(27)下面程序的文件名为t.exe,在DOS下输入的命令行参数为:t to meet me<回车> 则程序输出的结果是

#include "stdio.h"

main(argc,argv)

int argc;char *argv[];

{ int i;

printf("%d\n",argc);}

A)3 B)4 C)2 D)以上答案都不正确

(28)有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10};

int *p=&a[3],b;b=p[5];

则b的值是

A)5 B)6 C)9 D)8 (29)以下叙述中错误的是

A)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值

C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含头文件stdio.h 时,可以给指针变量赋NULL

(30)下面程序的输出结果是

#include

main()

{ int a[]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%d\n",*p+9);}

A)0 B)1 C)10 D)9 (31)有下面程序段

#include "stdio.h"

#include "string.h"

main()

{ char a[3][20]={{"china"},{"isa"},{"bigcountry!"}}; char k[100]={0},*p=k;

int i; for(i=0;i<3;i++)

{ p=strcat(p,a[i]);}

i=strlen(p);

printf("%d\n",i);}

则程序段的输出结果是

A)18 B)19 C)20

D)21

(32)若有定义: char *st= "how are you "; ,

下列程序段中正确的是

A)char a[11], *p; strcpy(p=a+1,&st[4]);

B)char a[11]; strcpy(++a, st);

C)char a[11]; strcpy(a, st); D)char

a[], *p; strcpy(p=&a[1],st+2);

(33)有以下程序

#include

int fun(char s[])

{ int n=0;

while(*s<=′9′&&*s>=′0′) {n=10*n+*s-′

0′;s++;}

return(n);

}

main()

{ char s[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′};

printf("%d\n",fun(s));

}

程序的运行结果是

A)9 B)61490 C)61

D)5

(34)设有定义:char p[]={′1′,′2′,′3′},*q=p;,

以下不能计算出一个char型数据所占字节数

的表达式是

A)sizeof(p) B)sizeof(char)

C)sizeof(*q) D)sizeof(p[0])

(35)有以下函数

int aaa(char *s)

{ char *t=s;

while(*t++);

t--;

return(t-s);

}

以下关于aaa函数的功能的叙述正确的是

A)求字符串s的长度B)比较两个串

的大小C)将串s复制到串t D)

求字符串s所占字节数

(36)当用户要求输入的字符串中含有空格时,

应使用的输入函数是

A)scanf() B)getchar()

C)gets() D)getc()

(37)下列选项中错误的说明语句是

A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′};

B)char a[]={"toyou\0"};

C)char a[]="toyou\0";

D)char a[]=′toyou\0′;

(38)以下程序的输出结果是

int f()

{ static int i=0;

int s=1;

s+=i; i++;

return s; }

main()

{ int i,a=0;

for(i=0;i<5;i++)a+=f();

printf("%d\n",a);}

A)20 B)24 C)25

D)15

(39)下列程序的输出结果是

#include "stdio.h"

#define M(x,y) x%y

main()

{ int a,m=12,n=100;

a=M(n,m);

printf("%d\n",a--);}

A)2 B)3 C)4

D)5

(40)假定当前盘符下有两个如下文本文件:

文件名a1.txt a2.txt

内容123# 321#

则下面程序段执行后的结果为

#include "stdio.h"

void fc(FILE *p)

{ char c;

while((c=fgetc(p))!=′#′)putchar(c);}

main()

{ FILE *fp;

fp=fopen("a1.txt","r");

fc(fp);

fclose(fp);

fp=fopen("a2.txt","r");

fc(fp);

fclose(fp);

putchar('\n');}

A)123321 B)123

C)321 D)以上答案都不正确

答案

1)D (2)D (3)D (4)A (5)B (6)C (7)D

(8)C (9)B (10)C (11)B (12)A (13)A

(14)D (15)B (16)D (17)B (18)B

(19)D (20)A (21)A (22)D (23)D (24)B

(25)C (26)D (27)B (28)C 29)C (30)C

(31)B (32)A (33)C (34)A (35)A (36)C

(37)D (38)D (39)C (40)A

第二套

在下列各题的A)、B)、C)、D)四个选项中,

只有一个选项是正确的。

(1)程序流程图中带有箭头的线段表示的是

A)图元关系B)数据流C)控制流

D)调用关系

(2)下面不属于软件设计原则的是

A)抽象B)模块化C)自底

向上D)信息隐蔽

(3)下列选项中,不属于模块间耦合的是

A)数据耦合B)标记耦合

C)异构耦合D)公共耦合

(4)下列叙述中,不属于软件需求规格说明书的作用的是

A)便于用户、开发人员进行理解和交流B)反映出用户问题的结构,可以作为软件开发工作的基础和依据

C)作为确认测试和验收的依据D)便于开发人员进行需求分析

(5)算法的时间复杂度是指

A)执行算法程序所需要的时间B)算法程序的长度C)算法执行过程中所需要的基本运算次数

D)算法程序中的指令条数

(6)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是

A)堆排序B)直接插入排序C)快速排序D)B)和C)

(7)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是

A)ABCED B)DCBEA C)DBCEA D)CDABE

(8)数据库设计包括两个方面的设计内容,它们是

A)概念设计和逻辑设计B)模式设计和内模式设计C)内模式设计和物理设计D)结构特性设计和行为特性设计

(9)关系表中的每一横行称为一个

A)元组B)字段C)属性D)码

(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为

A)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩

(11)以下不正确的叙述是

A)在C程序中,逗号运算符的优先级最低

B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

(12)请选出可用作C语言用户标识符的是

A)void,define,WORD

B)a3_b3,_123,IF C)FOR,--abc,Case D)2a,Do,Sizeof

(13)以下选项中,不能作为合法常量的是

A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0 (14)在C语言中,运算对象必须是整型数的运算符是

A)% B)\ C)%和\ D)** (15)若变量均已正确定义并赋值,以下合法的

C语言赋值语句是

A)x=y==5; B)x=n%2.5;

C)x+n=i; D)x=5=4+1;

(16)有以下程序段

char ch; int k;

ch=′a′; k=12;

printf("%c,%d,",ch,ch,k); printf("k=%d

\n",k);

已知字符a的ASCII码值为97,则执行上述程

序段后输出结果是

A)因变量类型与格式描述符的类型不匹

配输出无定值B)输出项与格式描述符个数

不符,输出为零值或不定值

C)a,97,12k=12 D)a,97,k=12

(17)已知字母A的ASCII代码值为65,若变

量kk为char型,以下不能正确判断出kk中的

值为大写字母的表达式是

A)kk>=′A′&& kk<=′Z′

B)!(kk>=′A′||kk<=′Z′) C)(kk+32)>=′a′

&&(kk+32)<=′Z′

D)isalpha(kk)&&(kk<91)

(18)当变量c的值不为2、4、6时,值也为"

真"的表达式是

A)(c==2)||(c==4)||(c==6)

B)(c>=2&& c<=6)||(c!=3)||(c!=5)

C)(c>=2&&c<=6)&&!(c%2)

D)(c>=2&& c<=6)&&(c%2!=1)

(19)若有条件表达式(exp)?a++:b--,则以

下表达式中能完全等价于表达式(exp)的是

A)(exp==0) B)(exp!=0)

C)(exp==1) D)(exp!=1)

(20)以下不正确的定义语句是

A)double x[5]={2.0,4.0,6.0,8.0,10.0};

B)int y[5]={0,1,3,5,7,9}; C)char c1[]={′1′,′2′,′

3′,′4′,′5′}; D)char c2[]={′\x10′, ′xa′, ′\x8′};

(21)下列程序执行后的输出结果是

main()

{ int a[3][3], *p,i;

p=&a[0][0];

for(i=1; i<9; i++)p[i]=i+1;

printf("%d\n",a[1][2];)

A)3 B)6 C)9 D)随

机数

(22)设有以下程序段

int x=0,s=0;

while(!x!=0)s+=++x;

printf("%d",s);

A)运行程序段后输出0 B)运行程序段

后输出1 C)程序段中的控制表达式是非法

的D)程序段执行无限次

(23)(23)下面程序段的运行结果是

char *s="abcde";

s+=2;printf("%d",s);

A)cde B)字符′c′C)字符′c′

的地址D)无确定的输出结果

(24)阅读下列程序,则执行后的结果为

#include "stdio.h"

main()

{ int

c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,3

4,56};

printf("%x,%x\n",c[2][2],*(*(c+1)+1));}

A)3e,6 B)62,5 C)56,5

D)3E,6

(25)下面判断正确的是

A)char *a="china";等价于char

*a;*a="china"; B)char str[5]={"china"};

等价于char str[]={"china"};

C)char *s="china";等价于char

*s;s="china"; D)char

c[4]="abc",d[4]="abc";等价于char

c[4]=d[4]="abc";

(26)若有定义:int a[2][3];,以下选项中对a

数组元素正确引用的是

A)a[2][!1] B)a[2][3] C)a[0][3]

D)a[1>2][!1]

(27)有定义语句:char s[10];,若要从终端给

s输入5个字符,错误的输入语句是

A)gets(&s[0]); B)scanf("%s",s+1);

C)gets(s); D)scanf("%s",s[1]);

(28)有以下程序

#include

#define N 5

#define M N+1

#define f(x) (x*M)

main()

{ int i1,i2;

i1=f(2);

i2=f(1+1);

printf("%d %d\n",i1,i2);

}

程序的运行结果是

A)12 12 B)11 7 C)11 11

D)12 7

(29)若有以下说明和定义

union dt

{ int a; char b; double c;}data;

以下叙述中错误的是

A)data的每个成员起始地址都相同

B)变量data所占内存字节数与成员c所占字

节数相等

C)程序

段:data.a=5;printf("%f\n",data.c);输出结果

为5.000000 D)data可以作为函数的实参

(30)有以下程序

#include

main()

{FILE *fp;int k,n,a[6]={1,2,3,4,5,6};

fp=fopen("d2.dat","w");

fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]); fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]); fclose(fp);

fp=fopen("d2.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n ",k,n);

fclose(fp);

}

程序运行后的输出结果是

A)1 2 B)1 4

C)123 4 D)123 456

(31)若已定义

int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;

其中则对a数组元素不正确的引用是

A)a[p-a] B)*(&a[i]) C)p[i] D)a[10]

(32)有以下程序

#include

void fun(int *s,int n1,int n2)

{ int i,j,t;

i=n1; j=n2;

while(i

main()

{ int a[10]={1,2,3,4,5,6,7,8,9,0},k;

fun(a,0,3); fun(a,4,9); fun(a,0,9);

for(k=0;k

printf("\n");

}

程序的运行结果是

A)0987654321 B)4321098765 C)5678901234 D)0987651234

(33)阅读下列程序,当运行函数时,输入asd af aa z67,则输出为

#include

#include

#include

int fun (char *str)

{ int i,j=0;

for(i=0;str[i]!=′\0′;i++)

if(str[i]!=′′)str[j++]=str[i];

str[j]= ′\0′;

}

main()

{

char str[81];

int n;

printf("Input a string : ");

gets(str);

puts(str);

fun(str);

printf("%s\n",str);

}

A)asdafaaz67 B)asd af aa z67 C)asd D)z67

(34)有以下程序int fun(int n)

{if(n==1)return 1;

else

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

}

main()

{int x;

scanf("%d",&x);

x=fun(x);printf("%d\n",x)

}

执行程序时,给变量x输入10,程序的输出结果

A)55 B)54 C)65 D)45

(35)下面程序段中,输出*的个数是

char *s="\ta\018bc";

for(;*s!='\0';s++)printf("*");

A)9 B)5 C)6

D)7

(36)C语言结构体类型变量在程序运行期间

A)TC环境在内存中仅仅开辟一个存放结

构体变量地址的单元B)所有的成员一直

驻留在内存中

C)只有最开始的成员驻留在内存中

D)部分成员驻留在内存中

(37)已知函数的调用形式为

fread(buf,size,count,fp),参数buf的含义是

A)一个整型变量,代表要读入的数据项总

数B)一个文件指针,指向要读的文件

C)一个指针,指向要读入数据的存放地址

D)一个存储区,存放要读的数据项

(38)设有以下语句

char x=3,y=6,z;

z=x^y<<2;

则z的二进制值是

A)00010100 B)00011011

C)00011100 D)00011000

(39)在C语言中,只有在使用时才占用内存

单元的变量,其存储类型是

A)auto和register B)extern

和register C)auto和static

D)static和register

(40)设有定义语句int ( *f)(int);,则以下

叙述正确的是

A)f是基类型为int的指针变量B)f

是指向函数的指针变量,该函数具有一个int类

型的形参

C)f是指向int类型一维数组的指针变量

D)f是函数名,该函数的返回值是基类型为int

类型的地址

答案

(1)C (2)C (3)C (4)D (5)C (6)B (7)B

(8)A (9)A (10)C (11)D (12)B (13)B (14)A

(15)A (16)D (17)B (18)B (19)B (20)B

(21)B (22)B (23)C (24)A (25)C (26)D (27)D

(28)B (29)D (30)D (31)D (32)C (33)A

(34)A (35)C (36)B (37)C (38)B (39)A (40)B

第三套

在下列各题的A)、B)、C)、D)四个选项中,

只有一个选项是正确的。

(1)为了避免流程图在描述程序逻辑时的灵

活性,提出了用方框图来代替传统的程序流程

图,通常也把这种图称为

A)PAD图 B)N-S图C)结构图

D)数据流图

(2)结构化程序设计主要强调的是

A)程序的规模B)程序的效率C)

程序设计语言的先进性D)程序易

读性

(3)为了使模块尽可能独立,要求

A)模块的内聚程度要尽量高,且各模块

间的耦合程度要尽量强

B)模块的内聚程度要尽量高,且各模块

间的耦合程度要尽量弱

C)模块的内聚程度要尽量低,且各模块

间的耦合程度要尽量弱

D)模块的内聚程度要尽量低,且各模块间

的耦合程度要尽量强

(4)需求分析阶段的任务是确定

A)软件开发方法B)软件开发工具

C)软件开发费用D)软件系统功能

(5)算法的有穷性是指

A)算法程序的运行时间是有限的

B)算法程序所处理的数据量是有限的

C)算法程序的长度是有限的

D)算法只能被有限的用户使用

(6)对长度为n的线性表排序,在最坏情况下,

比较次数不是n(n-1)/2的排序方法是

A)快速排序B)冒泡排序C)

直接插入排序D)堆排序

(7)如果进栈序列为e1,e2,e3,e4,则可能的出

栈序列是

A)e3,e1,e4,e2 B)e2,e4,e3,e1

C)e3,e4,e1,e2 D) 任意顺序

(8)将E-R图转换到关系模式时,实体与联系

都可以表示成

A)属性B)关系C)键D)域

(9)有三个关系R、S和T如下:

R

B C D

a 0 k1

b 1 n1

S

B C D

f 3 h2

a 0 k1

n 2 x1

T

B C D

a 0 k1

由关系R和S通过运算得到关系T,则所使用的

运算为

A)并B)自然连接C)笛卡尔积

D)交

(10)下列有关数据库的描述,正确的是

A)数据处理是将信息转化为数据的过程

B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变

C)关系中的每一列称为元组,一个元组就是一个字段

D)如果一个关系中的属性或属性组并非

该关系的关键字,但它是另一个关系的关

键字,则称其为本关系的外关键字(11)以下叙述中正确的是

A)用C程序实现的算法必须要有输入和输出操作

B)用C程序实现的算法可以没有输出但必须要有输入

C)用C程序实现的算法可以没有输入但必须要有输出

D)用C程序实现的算法可以既没有输入也没有输出

(12)下列可用于C语言用户标识符的一组是

A)void, define, WORD

B)a3_3,_123,Car C)For, -abc, IF Case D)2a, DO, sizeof

(13)以下选项中可作为C语言合法常量的是

A)-80 B)-080 C)-8e1.0 D)-80.0e

(14)若有语句:char *line[5];,以下叙述中正确的是

A) 定义line是一个数组,每个数组元素是一个基类型为char为指针变量

B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

C) 定义line是一个指针数组,语句中的*号称为间址运算符

D) 定义line是一个指向字符型函数的指针

(15)以下定义语句中正确的是

A)int a=b=0; B)char

A=65+1,b=′b′; C)float a=1,*b=&a,*c=&b; D)double a=0 0;b=1.1;

(16)有以下程序段

char ch; int k;

ch=′a′;

k=12;

printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);

已知字符a的ASCII码值为97,则执行上述程序段后输出结果是

A)因变量类型与格式描述符的类型不匹配输出无定值

B)输出项与格式描述符个数不符,输出为零值或不定值

C)a,97,12k=12

D)a,97,k=12

(17)有以下程序

main()

{ int i,s=1; for (i=1;i<50;i++)

if(!(i%5)&&!(i%3)) s+=i;

printf("%d\n",s);}

程序的输出结果是

A)409 B)277

C)1 D)91

(18)当变量c的值不为2、4、6时,值也为"

真"的表达式是

A)(c==2)||(c==4)||(c==6)

B)(c>=2&& c<=6)||(c!=3)||(c!=5)

C)(c>=2&&c<=6)&&!(c%2)

D)(c>=2&& c<=6)&&(c%2!=1)

(19)若变量已正确定义,有以下程序段

int a=3,b=5,c=7;

if(a>b) a=b; c=a;

if(c!=a) c=b;

printf("%d,%d,%d\n",a,b,c);

其输出结果是

A)程序段有语法错B)3,5,3

C)3,5,5 D)3,5,7

(20)有以下程序

#include

main()

{ int x=1,y=0,a=0,b=0;

switch(x)

{ case 1:

switch(y)

{ case 0:a++; break;

case 1:b++; break;

}

case 2:a++; b++; break;

case 3:a++; b++;

}

printf("a=%d,b=%d\n",a,b);

}

程序的运行结果是

A)a=1,b=0 B)a=2,b=2

C)a=1,b=1 D)a=2,b=1

(21)下列程序的输出结果是

#include "stdio.h"

main()

{ int i,a=0,b=0;

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

{ if(i%2==0)

{a++;

continue;}

b++;}

printf("a=%d,b=%d",a,b); }

A)a=4,b=4 B)a=4,b=5

C)a=5,b=4 D)a=5,b=5

(22)已知

#int t=0;

while (t=1)

{...}

则以下叙述正确的是

A)循环控制表达式的值为0

B)循环控制表达式的值为1

C)循环控制表达式不合法

D)以上说法都不对

(23)下面程序的输出结果是

main()

{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

printf("%d\n",*(p+2));}

A)3 B)4 C)1

D)2

(24)以下错误的定义语句是

A)int x[][3]={{0},{1},{1,2,3}};

B)int

x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

C)int

x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

D)int x[][3]={1,2,3,4};

(25)有以下程序

void ss(char *s,char t)

{ while(*s)

{ if(*s==t)*s=t-′a′+′A′;

s++; } }

main()

{ char str1[100]="abcddfefdbd",c=′d′;

ss(str1,c); printf("%s\n",str1);}

程序运行后的输出结果是

A)ABCDDEFEDBD

B)abcDDfefDbD C)abcAAfefAbA

D)Abcddfefdbd

(26)有如下程序

main()

{ char ch[2][5]={"6937","8254"},*p[2];

int i,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

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

for(j=0;p[i][j]>′\0′;j+=2)

s=10*s+p[i][j]-′0′;

printf("%d\n",s);}

该程序的输出结果是

A)69825 B)63825 C)6385

D)693825

(27)有定义语句:char s[10];,若要从终端给

s输入5个字符,错误的输入语句是

A)gets(&s[0]); B)scanf("%s",s+1);

C)gets(s); D)scanf("%s",s[1]);

(28)以下叙述中错误的是

A)在程序中凡是以"#"开始的语句行都是

预处理命令行B)预处理命令行的最后不

能以分号表示结束C)#define

MAX 是合法的宏定义命令行D)C程序

对预处理命令行的处理是在程序执行的过程

中进行的

(29)设有以下说明语句

typedef struct

{ int n;

char ch[8];

} PER;

则下面叙述中正确的是

A)PER 是结构体变量名B)PER是结构

体类型名C)typedef struct 是结构体类

型D)struct 是结构体类型名

(30)以下叙述中错误的是

A)gets函数用于从终端读入字符串

B)getchar函数用于从磁盘文件读入字符

C)fputs函数用于把字符串输出到文件

D)fwrite函数用于以二进制形式输出数据到文件

(31)以下能正确定义一维数组的选项是

A)int a[5]={0,1,2,3,4,5}; B)char a[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′}; C)char a={′A′,′B′,′C′}; D)int a[5]="0123";

(32)有以下程序

#include

main()

{ char p[]={′a′, ′b′, ′c′},q[10]={ ′a′, ′b′, ′c′};

printf("%d%d\n",strlen(p),strlen(q));}

以下叙述中正确的是

A) 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B) 由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

C) 由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

D) 由于p和q数组中都没有字符串结束符,故长度都不能确定

(33)有以下程序

#include

#include

void fun(char *s[],int n)

{ char *t; int i,j;

for(i=0;i

for(j=i+1;j

if(strlen(s[i])>strlen(s[j]))

{t=s[i];s[i]:s[j];s[j]=t;}

}

main()

{ char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"}; fun(ss,5);

printf("%s,%s\n",ss[0],ss[4]);

}

程序的运行结果是

A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc

(34)有以下程序

#include

int f(int x)

{ int y;

if(x==0||x==1) return(3);

y=x *x-f(x-2);

return y;

}

main()

{ int z;

z=f(3); printf("%d\n",z);

} 程序的运行结果是

A)0 B)9 C)6 D)8

(35)下面程序段的运行结果是

char str[]="ABC",*p=str;

printf("%d\n",*(p+3));

A)67 B)0 C)字符′C′的地址D)

字符′C′

(36)若有以下定义:

struct link

{ int data;

struct link *next;

} a,b,c,*p,*q;

且变量a和b之间已有如下图所示的链表结构:

指针p指向变量a,q指向变量c。则能够把c

插入到a和b 之间并形成新的链表的语句组

是:

A)a.next=c; c.next=b; B)p.next=q;

q.next=p.next; C)p->next=&c;

q->next=p->next; D)(*p).next=q;

(*q).next=&b;

(37)对于下述程序,在方式串分别采用"wt"

和"wb"运行时,两次生成的文件TEST的长度

分别是

#include

void main()

{ FILE *fp=fopen("TEST",);

fputc(′A′,fp);fputc(′\n′,fp);

fputc(′B′,fp);fputc(′\n′,fp);

fputc(′C′,fp);

fclose(fp); }

A)7字节、7字节B)7字节、5字节

C)5字节、7字节D)5字节、5字节

(38)变量a中的数据用二进制表示的形式是

01011101,变量b中的数据用二进制表示的形

式是11110000。若要求将a的高4位取反,

低4位不变,所要执行的运算是

A)a^b B)a|b C)a&b

D)a<<4

(39)下面的程序段运行后,输出结果是

int i,j,x=0;

static int a[8][8];

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

for(j=0;j<3;j++)

a[i][j]=2*i+j;

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

x+=a[i][j];

printf("%d",x);

A)9 B)不确定值C)0 D)18

(40)下列程序执行后的输出结果是

void func(int *a,int b[])

{ b[0]=*a+6; }

main()

{ int a,b[5];

a=0; b[0]=3;

func(&a,b); printf("%d\n",b[0]);}

A)6 B)7 C)8 D)9

答案

(1)B (2)D (3)B (4)D (5)A (6)D

(7)B (8)B (9)D (10)D 11)C (12)B

(13)A (14)A (15)B (16)D (17)D

(18)B (19)B (20)D (21)B (22)B (23)A

(24)C (25)B (26)C (27)D (28)D

(29)B (30)B (31)B (32)A (33)A

(34)C (35)B (36)D (37)B (38)A

(39)C (40)A

第四套

在下列各题的A)、B)、C)、D)四个选项中,

只有一个选项是正确的。

(1)软件是指A)程序B)程序和

文档C)算法加数据结构D)程

序、数据与相关文档的完整集合

(2)检查软件产品是否符合需求定义的过程

称为

A)确认测试B)集成测试C)

验证测试D)验收测试

(3)以下不属于对象的基本特点的是

A)分类性B)多态性C)继承性

D)封装性

(4)在设计程序时,应采纳的原则之一是

A)不限制goto语句的使用B)减少

或取消注解行C)程序越短越好D)

程序结构应有助于读者理解

(5)下列叙述中正确的是

A)程序执行的效率与数据的存储结构密

切相关B)程序执行的效率只取决于程序

的控制结构

C)程序执行的效率只取决于所处理的数

据量D)以上三种说法都不对(6)数据结

构中,与所使用的计算机无关的是数据的

A)存储结构B)物理结构

C)逻辑结构D)物理和存

储结构

(7)线性表的顺序存储结构和线性表的链式

存储结构分别是

A)顺序存取的存储结构、顺序存取的存储

结构B)随机存取的存储结构、顺序存取的

存储结构

C)随机存取的存储结构、随机存取的存储

结构D)任意存取的存储结构、任意存取

的存储结构

(8)树是结点的集合,它的根结点数目是

A)有且只有1 B)1或多于1 C)0

或1 D)至少2

(9)下列有关数据库的描述,正确的是

A)数据库是一个DBF文件B)数据库

是一个关系C)数据库是一个结构化的数

据集合D)数据库是一组文件

(10)数据库、数据库系统和数据库管理系统

之间的关系是

A)数据库包括数据库系统和数据库管理

系统B)数据库系统包括数据库和数据库

管理系统C)数据

库管理系统包括数据库和数据库系统D)

三者没有明显的包含关系

(11)以下4个选项中,不能看作一条语句的是

A); B)a=5,b=2.5,c=3.6;

C)if(a<5); D)if(b!=5)x=2;y=6; (12)下面四个选项中,均是不合法的用户标识符的选项是

A)A P_0 do B)float la0_A C)b-a goto int D)_123 temp int

(13)以下选项中不属于字符常量的是

A)′C′B)′′C′′C)′\xCC′D) ′\072′

(14)设变量已正确定义并赋值,以下正确的表达式是

A)x=y*5=x+z B)int(15.8%5) C)x=y+z+5,++y D)x=25%5.0 (15)若变量已正确定义并赋值,以下符合C 语言语法的表达式是

A)a:=b+1 B)a=b=c+2

C)int 18.5%3 D)a=a+7=c+b

(16)以下程序的运行结果是

int k=0;

void fun(int m)

{m+=k;k+=m;printf("m=%d k=%d ",m,k++);}

main()

{int i=4;

fun(i++); printf("i=%d k=%d\n",i,k); }

A)m=4 k=5 i=5 k=5

B)m=4 k=4 i=5 k=5 C)m=4 k=4 i=4 k=5 D)m=4 k=5 i=4 k=5

(17)已有定义:char c;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是

A)isupper(c) B)′A′<=c<=′Z′C)′A′<=c&&c<=′Z′D)c<=(′z′-32)&&(′a′-32)<=c

(18)设有:

int a=1,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b)&&(n=c>d)后,n的值是

A)1 B)2 C)3 D)4

(19)若变量已正确定义,有以下程序段int a=3,b=5,c=7;

if(a>b) a=b; c=a;

if(c!=a) c=b;

printf("%d,%d,%d\n",a,b,c);

其输出结果是

A)程序段有语法错B)3,5,3 C)3,5,5 D)3,5,7

(20)若有定义:float x=1.5;int a=1,b=3,c=2;,则正确的switch语句是

A)switch(x)

{case 1.0:printf("*\n");

case 2.0:printf("**\n");}

B)switch((int)x);

{case 1:printf("*\n");

case 2:printf("**\n");}

C)switch(a+b)

{case 1:printf("*\n");

case 2+1:printf("**\n");}

D)switch(a+b)

{case1:printf(**\n);}

casec:printf(**\n);}

(21)有以下程序

#include

main0

{ int y=9;

for( ; y>0;y--)

if(y%3==0) printf("%d",--y);

}

程序的运行结果是

A)741 B)963 C)852

D)875421

(22)以下描述中正确的是

A)由于do-while循环中循环体语句只能

是一条可执行语句,所以循环体内不能使用复

合语句

B)do-while循环由do开始,用while结束,

在while(表达式)后面不能写分号

C)在do-while循环体中,是先执行一次循

环,再进行判断D)do-while循环中,根据

情况可以省略while

(23)有以下程序

#include

main()

{ int a[ ]={1,2,3,4},y, *p=&a[3];

--p; y= *p;printf("y=%d\n",y);

}

程序的运行结果是

A)y=0 B)y=1 C)y=2

D)y=3

(24)以下数组定义中错误的是

A)int x[][3]={0}; B)int

x[2][3]={{l,2},{3,4},{5,6}}; C)int

x[][3]={{l,2,3},{4,5,6}}; D)int

x[2][3]={l,2,3,4,5,6};

(25)下面说明不正确的是

A)char a[10]="china"; B)char

a[10],*p=a;p="china" C)char

*a;a="china" D)char

a[10],*p;p=a="china"

(26)若有定义:int a[2][3];,以下选项中对a

数组元素正确引用的是

A)a[2][!1] B)a[2][3] C)a[0][3]

D)a[1>2][!1]

(27)若要求从键盘读入含有空格字符的字符

串,应使用函数

A)getc() B)gets() C)getchar()

D)scanf()

(28)阅读下列程序段,则程序的输出结果为

#include "stdio.h"

#define M(X,Y)(X)*(Y)

#define N(X,Y)(X)/(Y)

main()

{ int a=5,b=6,c=8,k;

k=N(M(a,b),c);

printf("%d\n",k);

A)3 B)5 C)6

D)8

(29)在16位IBM-PC机上使用C语言,若有

如下定义

struct data

{ int i;

char ch;

double f;

} b;

则结构变量b占用内存的字节数是

A)1 B)2 C)7

D)11

(30)有以下程序#include

main()

{FILE *fp; int i,a[6]={l,2,3,4,5,6};

fp=fopen("d3.dat","w+b");

fwrite(a,sizeof(int),6,fp);

fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使

读文件的位置指针从文件头向后移动3个int

型数据*/

fread(a,sizeof(int),3,fp); fclose(fp);

for(i=0;i<6;i++)printf("%d,",a[i]);

}

程序运行后的输出结果是

A)4,5,6,4,5,6, B)1,2,3,4,5,6,

C)4,5,6,1,2,3, D)6,5,4,3,2,1,

(31)有以下程序

#include

main()

{ int

s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for(i=0;i<12;i++) c[s[i]]++;

for(i=1;i<5;i++) printf("%d",c[i]);

printf("\n");

}

程序的运行结果是

A)1 2 3 4 B)2 3 4 4 C)4 3 3 2

D)1 1 2 3

(32)有以下程序

#include

void fun(int *a,int n)/*fun函数的功能是

将a所指数组元素从大到小排序*/

{ int t,i,j;

for(i=0;i

for(j=i+1;j

if(a[i]

}

main()

{ int c[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

for(i=0;i<10;i++) printf("%d,",c[i]); printf("\n");

}

程序的运行结果是

A)1,2,3,4,5,6,7,8,9,0,

B)0,9,8,7,6,5,1,2,3,4,

C)0,9,8,7,6,5,4,3,2,1,

D)1,2,3,4,9,8,7,6,5,0,

(33)下面程序的输出结果是

#include

#include

main()

{ char *p1="abc",*p2="ABC",str[50]= "xyz";

strcpy(str+2,strcat(p1,p2));

printf("%s\n",str);}

A)xyzabcABC B)zabcABC C)xyabcABC

D)yzabcABC

(34)以下函数返回a所指数组中最小的值所在的下标值

fun(int *a, int n)

{ int i,j=0,p;

p=j;

for(i=j;i

if(a[i]

return(p);}

在横线处应填入的是

A)i=p B)a[p]=a[i] C)p=j D)p=i (35)下列程序的运行结果为

#include

void abc(char*str)

{ int a,b;

for(a=b=0;str[a]!='\0';a++)

if(str[a]!='c')

str[b++]=str[a];

str[b]='\0';}

void main()

{ char str[]="abcdef";

abc(str);

printf("str[]=%s",str); }

A)str[]=abdef B)str[]=abcdef C)str[]=a D)str[]=ab

(36)有以下程序

#include

#include

typedef struct{ char name[9]; char sex; float score[2]; }STU;

void f(STU a)

{ STU b={"Zhao",′m′,85 0,90 0}; int i;

strcpy(https://www.wendangku.net/doc/9a3699486.html,,https://www.wendangku.net/doc/9a3699486.html,);

a.sex=

b.sex;

for(i=0;i<2;i++) a.score[i]=b.score[i];

}

main()

{ STU c={"Qian",′f′,95.0,92.0};

f(c);

printf("%s,%c,%2.0f,%2.0f\n",https://www.wendangku.net/doc/9a3699486.html,,c.sex,c.score[0],c.score[1]);

}

程序的运行结果是

A)Qian,f,95,92

B)Qian,m,85,90 C)Zhao,f,95,92

D)Zhao,m,85,90

(37)有以下程序

#include

main()

{ FILE *fp; int a[10]={1,2,3},i,n;

fp=fopen("d1.dat","w");

for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);

fprintf(fp,"\n");

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d",&n);

fclose(fp);

printf("%d\n",n);

}

程序的运行结果是

A)12300 B)123 C)1

D)321

(38)已知int a=1,b=3则a^b的值为

A)3 B)1 C)2

D)4

(39)阅读下列程序,则运行结果为

#include "stdio.h"

fun()

{ static int x=5;

x++;

return x;}

main()

{ int i,x;

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

x=fun();

printf("%d\n",x);}

A)5 B)6 C)7

D)8

(40)有以下程序

#include

void fun(char *t,char *s)

{ while(*t!=0) t++;

while((*t++=*s++)!=0);

}

main()

{ char ss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa); printf("%s,%s\n",ss,aa);

}

程序的运行结果是

A)accxyy,bbxxyy

B)acc,bbxxyy C)accxxyy,bbxxyy

D)accbbxxyy,bbxxyy

答案

(1)D (2)A (3)C (4)D (5)A (6)C (7)B

(8)C (9)C (10)B (11)D (12)C (13)B (14)C

(15)B (16)B (17)B (18)B (19)B (20)C

(21)C (22)C (23)D (24)B (25)D (26)D (27)B

(28)A (29)D (30)A (31)C (32)D (33)C

(34)D (35)A (36)A (37)B (38)C (39)D

(40)D

第五套

在下列各题的A)、B)、C)、D)四个选项中,

只有一个选项是正确的。

(1)算法的空间复杂度是指

A)算法程序的长度B)算法程序中

的指令条数C)算法程序所占的存储空间

D)执行算法需要的内存空间

(2)在结构化程序设计中,模块划分的原则是

A)各模块应包括尽量多的功能B)各

模块的规模应尽量大C)各模块之间的联

系应尽量紧密

D)模块内具有高内聚度、模块间具有低耦

合度

(3)下列叙述中,不属于测试的特征的是

A)测试的挑剔性B)完全测试的不可

能性C)测试的可靠性D)测试的经济

(4)下面关于对象概念的描述中,错误的是

A)对象就是C语言中的结构体变量

B)对象代表着正在创建的系统中的一个实体

C)对象是一个状态和操作(或方法)的封装

体D)对象之间的信息传递是通过消息进

行的

(5)下列关于队列的叙述中正确的是

A)在队列中只能插入数据B)在队列

中只能删除数据C)队列是先进先出的线

性表D)队列是先进后出的线性表

(6)已知二叉树后序遍历序列是dabec,中序

遍历序列是debac,它的前序遍历序列是

A)acbed B)decab C)deabc

D)cedba

(7)某二叉树中有n个度为2的结点,则该二

叉树中的叶子结点数为

A)n+1 B)n-1 C)2n

D)n/2

(8)设有如下三个关系表

R S T

A B C A

B C

m 1 3 m

1 3

n n

1 3

下列操作中正确的是

A) T=R∩S B) T=R∪S C) T=R×S

D) T=R/S

(9)下列叙述中,正确的是

A)用E-R图能够表示实体集间一对一的联

系、一对多的联系和多对多的联系B)用

E-R图只能表示实体集之间一对一的联系

C)用E-R图只能表示实体集之间一对多的联系

D)用E-R图表示的概念数据模型只能转换为关系数据模型

(10)下列有关数据库的描述,正确的是

A)数据处理是将信息转化为数据的过程

B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变

C)关系中的每一列称为元组,一个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字(11)C语言规定,在一个源程序中,main函数的位置

A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后

(12)以下叙述中错误的是

A)计算机不能直接执行用C语言编写的源程序B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件

C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行(13)下列选项可以正确表示字符型常量的是

A)′\r′B)"a"

C)"\897" D)296

(14)以下叙述中正确的是

A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数

C)main()函数必须放在其他函数之前

D)C函数定义的格式是K&R格式

(15)设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)

A) 10□X□20□Y<回车> B) 10□X20□Y<回车>C) 10□X<回车>20□Y<回车> D) 10X<回车>

20Y<回车>

(16)若有说明:int *p,m=5,n;,以下正确的程序段是

A)p=&n;scanf("%d",&p);

B)p=&n;scanf("%d",*p)

C)scanf("%d",&n);*p=n;

D)p=&n;*p=m;

(17)在执行下述程序时,若从键盘输入6和8,则结果为

main()

{ int a,b,s;

scanf("%d%d",&a,&b);

s=a

if(a

s=b;

s*=s;

printf("%d",s); }

A)36 B)64 C)48

D)以上都不对

(18)若执行下面的程序时,从键盘输入5和2,则输出结果是

main()

{ int a,b,k;

scanf("%d,%d ",&a,&b);

k=a;

if(a

else k=b%a;

printf("%d\n",k);}

A)5 B)3 C)2

D)0

(19)在C语言中,函数返回值的类型最终取

决于

A)函数定义时在函数首部所说明的函数

类型B)return语句中表达式值的类型

C)调用函数时主调函数所传递的实参类型

D)函数定义时形参的类型

(20)已知大写字母A的ASCII码是65,小写

字母a的ASCII码是97。以下不能将变量c

中的大写字母转换为对应小写字母的语句是

A)c=(c-′A′)%26+′a′B)c=c+32

C)c=c-′A′+′a′D)c=(′A′+c)%26-′a′

(21)以下选项中,当x为大于l的奇数时,值为

0的表达式是

A)x%2==1 B)x/2

C)x%2!=0 D)x%2==0

(22)有以下程序

main()

{int k=5,n=0;

do

{switch(k)

{case 1: case 3:n+=1;k--;break;

default:n=0;k--;

case 2: case 4:n+=2;k--;break;

}

printf("%d",n);

}while(k>0 && n<5);

}

程序运行后的输出结果是

A)235 B)0235 C)02356

D)2356

(23)有如下程序

main()

{ int n=9;

while(n>6){n--; printf("%d",n);} }

该程序的输出结果是

A)987 B)876 C)8765

D)9876

(24)有以下程序

#include

main()

{ int c;

while((c=getchar())!=′\n)

{ switch(c-′2′)

{ case 0:

case 1:putchar(c+4);

case 2:putchar(c+4);break;

case 3:putchar(c+3);

case 4:putchar(c+3);break; } }

printf("\n")}

从第一列开始输入以下数据代表一个回

车符。

2743

程序的输出结果是

A)66877 B)668966

C)6677877 D)6688766

(25)有以下程序

main()

{ int x=0,y=0,i;

for (i=1;;++i)

{ if (i%2==0) {x++;continue;}

if (i%5==0) {y++;break;} }

printf (" %d,%d",x,y); }

程序的输出结果是

A)2,1 B)2,2 C)2,5

D)5,2

(26)有以下程序

main()

{int

a[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}}

,i,j,k,t;

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

for(j=0;j<3;j++)

for(k=j+1;k<4;k++)

if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][

i]=t;}/*按列排序*/

for(i=0;i<4;i++)printf("%d,",a[i][i]);

}

程序运行后的输出结果是

A)1,6,5,7, B)8,7,3,1, C)4,7,5,2,

D)1,6,2,1,

(27)有以下程序

int f(int n)

{ if(n==1)return 1;

else return f(n-1)+1;}

main()

{ int i,j=0;

for(i=1;i<3;i++)j+=f(i);

printf("%d\n",j);}

程序运行后的输出结果是

A)4 B)3 C)2 D)1

(28)当运行以下程序时,从键盘输入

AhaMA(空格)Aha,则下面程序的运行

结果是

#include

main()

{ char s[80],c=′a′;

int i=0;

scanf("%s",s);

while(s[i]!=′

{ if(s[i]==c)s[i]-32;

else if(s[i]==c-32)s[i]=s[i]+32;

i++; }

puts(s); }

A)ahaMa B)AbAMa

C)AhAMa[空格]ahA D)ahAMa[空

格]ahA

(29)下面程序输出的结果是

main()

{ int i;

int a[3][3]={1,2,3,4,5,6,7,8,9};

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

printf("%d ",a[2-i][i]); }

A)1 5 9 B)7 5 3 C)3 5 7 D)5 9 1

(30)现有如下程序段

#include "stdio.h"

main()

{ int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76, 8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};

int i=0,j=5;

printf("%d\n",*(&a[0][0]+2*i+j-2));}

则程序的输出结果为

A)21 B)78 C)23

D)28

(31)请选出正确的程序段

A)int *p;

scanf("%d",p);

B)int *s, k;

*s=100;

C)int *s, k;

char *p, c;

s=&k;

p=&c;

*p=′a′;

D)int *s, k;

char *p, e;

s=&k;

p=&c;

s=p;

*s=1;

(32)下面程序段的运行结果是

char a[]="lanuage",*p;

p=a;

while(*p!=′u′){printf("%c",*p-32);p++;}

A)LANGUAGE B)language C)LAN D)langUAGE

(33)以下程序的输出结果是

#include

int a[3][3]={1,2,3,4,5,6,7,8,9,},*p;

main()

{ p=(int*)malloc(sizeof(int));

f(p,a);

printf("%d\n",*p);

free(p); }

f(int *s, int p[][3])

{ *s=p[1][1];}

A)1 B)4 C)7 D)5 (34)有以下程序

void f(int *q)

{int i=0;

for(;i<5; i++) (*q)++;

}

main()

{int a[5] ={1,2,3,4,5}, i;

f(a);

for(i=0;i<5; i++) printf("%d,", a[i]);

}

程序运行后的输出结果是

A)2,2,3,4,5, B)6,2,3,4,5,

C)1,2,3,4,5, D) 2,3,4,5,6,

(35)以下合法的字符型常量是

A)′\x13′B) ′\081′

C) ′65′D)"\n"

(36)有以下语句,则对a数组元素的引用不正

确的是

int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;

A)a[p-a] B)*(&a[i]) C)p[i]

D)*(*(a+i))

(37)有以下程序

# include

main()

{char p[20]={′a′, ′b′, ′c′, ′d′}, q[]="abc",

r[]="abcde";

strcat(p, r); strcpy(p+strlen(q), q);

printf("%d\n",strlen(p));

}

程序运行后的输出结果是

A)9 B)6 C)11

D)7

(38)在C语言中,变量的隐含存储类别是

A)auto B)static

C)extern D)无存储类别

(39)以下程序的输出结果是

main()

{ int c=35; printf("%d\n",c&c);}

A)0 B)70 C)35

D)1

(40)有以下程序

#include

main()

{ FILE *fp; int i=20,j=30,k,n;

fp=fopen("d1.dat","w");

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",&k,&n);

printf("%d %d\n",k,n);

fclose(fp); }

程序运行后的输出结果是

A)20 30 B)20 50 C)30 50

D)30 20

选择题

(1)D (2)D (3)C (4)A (5)C (6)D (7)A (8)C

(9)A (10)D (11)C (12)D (13)A (14)A

(15)D (16)D (17)B (19)A (20)D

(21)D (22)A (23)B (24)A (25)A (26)A

(27)B (28)A (29)B (30)A (31)C

(32)C (33)D (34)B (35)A (36)D (37)B

(38)A (39)C (40)A

第六套

在下列各题的A)、B)、C)、D)四个选项中,

只有一个选项是正确的。

(1)程序流程图中带有箭头的线段表示的是

A)图元关系B)数据流

C)控制流D)调用关系

(2)结构化程序设计的基本原则不包括

A)多态性B)自顶向下

C)模块化D)逐步求精

(3)软件设计中模块划分应遵循的准则是

A)低内聚低耦合B)高内聚低

耦合C)低内聚高耦合D)高内

聚高耦合

(4)在软件开发中,需求分析阶段产生的主要

文档是

A)可行性分析报告B)软件需

求规格说明书C)概要设计说明书

D)集成测试计划

(5)算法的有穷性是指

A)算法程序的运行时间是有限的B)

算法程序所处理的数据量是有限的C)算

法程序的长度是有限的

D)算法只能被有限的用户使用

(6)对长度为n的线性表排序,在最坏情况下,

比较次数不是n(n-1)/2的排序方法是

A)快速排序B)冒泡排

序C)直接插入排序D)堆排序

(7)下列关于栈的叙述正确的是

A)栈按"先进先出"组织数据B)

栈按"先进后出"组织数据C)只能在栈底

插入数据D)不能删除数据

(8)在数据库设计中,将E-R图转换成关系数

据模型的过程属于

A)需求分析阶段B)概念设计

阶段C)逻辑设计阶段D)物理

设计阶段

(9)有三个关系R、S和T如下:

R

B C D

a 0 k1

b 1 n1

S

B C D

f 3 h2

a 0 k1

n 2 x1

T

B C D

a 0 k1

由关系R和S通过运算得到关系T,则所使用的运算为A)并B)自然连接C)笛卡尔积D)交

(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为A)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩

(11)以下叙述中正确的是

A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句

C)C程序书写格式自由,一个语句可以写在多行上

D)用C语言编写的程序只能放在一个程序文件中

(12)以下选项中不合法的标识符是A)print B)FOR C)&a D)_00

(13)以下选项中不属于字符常量的是

A)′C′B)"C" C)′\xCC′D) ′\072′

(14)设变量已正确定义并赋值,以下正确的表达式是

A)x=y*5=x+z B)int(15.8%5) C)x=y+z+5,++y D)x=25%5.0 (15)以下定义语句中正确的是

A)int a=b=0; B)char A=65+1,b=′b′; C)float a=1, *b=&a, *c=&b; D)double a=0.0;b=1.1;

(16)有以下程序段

char ch; int k;

ch=′a′; k=12;

printf("%c,%d,",ch,ch,k);

printf("k=%d\n",k);

已知字符a的ASCII码值为97,则执行上述程序段后输出结果是

A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值

C)a,97,12k=12 D)a,97,k=12 (17)已知字母A的ASCII码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是

A)kk>=′A′&& kk<=′Z′B)!(kk>=′A′||kk<=′Z′) C)(kk+32)>=′a′&&(kk+32)<=′Z′D)isalpha(kk)&&(kk<91)

(18)当变量c的值不为2、4、6时,值也为"真"的表达式是

A)(c==2)||(c==4)||(c==6)

B)(c>=2&& c<=6)||(c!=3)||(c!=5)

C)(c>=2&&c<=6)&&!(c%2)

D)(c>=2&& c<=6)&&(c%2!=1)

(19)若变量已正确定义,有以下程序段

int a=3,b=5,c=7;

if(a>b) a=b; c=a;

if(c!=a) c=b;

printf("%d,%d,%d\n",a,b,c);

其输出结果是

A)程序段有语法错B)3,5,3

C)3,5,5 D)3,5,7

(20)有以下程序

#include

main()

{ int x=1,y=0,a=0,b=0;

switch(x)

{ case 1:

switch(y)

{ case 0:a++; break;

case 1: b++; break;

}

case 2:a++; b++; break;

case 3:a++; b++;

}

printf("a=%d,b=%d\n",a,b);

}

程序的运行结果是

A)a=1,b=0 B)a=2,b=2

C)a=1,b=1 D)a=2,b=1

(21)有以下程序

#include

main()

{ int x=8;

for( ; x>0; x--)

{ if(x%3) {printf("%d,",x--); continue;}

printf("%d,",--x);

}

}

程序的运行结果是

A)7,4,2, B)8,7,5,2,

C)9,7,6,4, D)8,5,4,2,

(22)以下不构成无限循环的语句或语句组是

A) n=0; do{++n;}while(n<=0);B)

n=0; while(1){n++;}

C) n=10; while(n);{n--;} D)

for(n=0,i=1; ;i++)n+=i;

(23)有以下程序

#include

main()

{ int a[ ]={1,2,3,4},y, *p=&a[3];

--P; y= *p;printf("y=%d\n",y);

}

程序的运行结果是

A)y=0 B)y=1

C)y=2 D)y=3

(24)以下错误的定义语句是

A)int x[][3]={{0},{1},{1,2,3}}; B)int

x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

C)int

x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

D)int x[][3]={1,2,3,4};

(25)设有如下程序段

char s[20]="Beijing", *p;

p=s;

则执行p=s;语句后,以下叙述正确的是

A)可以用*p表示s[0] B)s数组

中元素的个数和p所指字符串长度相等

C)s和p都是指针变量D)数组

s中的内容和指针变量p中的内容相同

(26)若有定义:int a[2][3];,以下选项中对a

数组元素正确引用的是

A)a[2][!1] B)a[2][3]

C)a[0][3] D)a[1>2][!1]

(27)有定义语句:char s[10];,若要从终端给

s输入5个字符,错误的输入语句是

A)gets(&s[0]);

B)scanf("%s",s+1); C)gets(s);

D)scanf("%s",s[1]);

(28)以下叙述中错误的是

A)在程序中凡是以"#"开始的语句行都是

预处理命令行B)预处理命令行的最后不

能以分号表示结束C)#define MAX是合

法的宏定义命令行D)C程序对预处理命

令行的处理是在程序执行的过程中进行的

(29)以下结构体类型说明和变量定义中正确

的是

A)tupedef strct

{int n; char c;}REC;

REC t1,t2;

B)tupedef strct

{int n; char c;};

REC t1,t2;

C)tupedef strct REC;

{int n=0; char c='A';}t1,t2;

D)strct

{int n; char c;}REC;

REC t1,t2;

(30)以下叙述中错误的是

A)gets函数用于从终端读入字符串

B)getchar函数用于从磁盘文件读入字符

C)fputs函数用于把字符串输出到文件

D)fwrite函数用于以二进制形式输出数据到文

(31)有以下程序

#include

main()

{ int

s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for(i=0;i<12;i++) c[s[i]]++;

for(i=1;i<5;i++) printf("%d",c[i]);

printf("\n");

}

程序的运行结果是

A)1 2 3 4 B)2 3 4 4

C)4 3 3 2 D)1 1 2 3

(32)有以下程序

#include

void fun(int *s,int n1,int n2)

{ int i,j,t;

i=n1; j=n2;

while(i

main()

{ int a[10]={1,2,3,4,5,6,7,8,9,0},k;

fun(a,0,3); fun(a,4,9); fun(a,0,9);

for(k=0;k

printf("\n");

}

程序的运行结果是

A)0987654321

B)4321098765 C)5678901234 D)0987651234

(33)有以下程序

#include

#include

void fun(char *s[],int n)

{ char *t; int i,j;

for(i=0;i

for(j=i+1;j

if(strlen(s[i])>strlen(s[j]))

{t=s[i];s[i]:s[j];s[j]=t;}

}

main()

{ char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"}; fun(ss,5);

printf("%s,%s\n",ss[0],ss[4]);

}

程序的运行结果是

A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc (34)有以下程序

#include

int f(int x)

{ int y;

if(x==0||x==1) return(3);

y=x*x-f(x-2);

return y;

}

main()

{ int z;

z=f(3); printf("%d\n",z);

}

程序的运行结果是

A)0 B)9 C)6 D)8

(35)有以下程序

#include

void fun(char *a,char *b)

{ while(*a==′*′)a++;

while( *b=*a){b++;a++;}

}

main()

{ char *s="*****a*b****",t[80];

fun(s,t); puts(t);

}

程序的运行结果是

A)*****a*b B)a*b C)a*b**** D)ab

(36)有以下程序

#include

#include

typedef struct{ char name[9]; char

sex; float score[2]; }STU;

void f(STU a)

{ STU b={"Zhao",′m′,85.0,90.0}; int

i;

strcpy(https://www.wendangku.net/doc/9a3699486.html,,https://www.wendangku.net/doc/9a3699486.html,);

a.sex=

b.sex;

for(i=0;i<2;i++) a.score[i]=b.score[i];

}

main()

{ STU c={"Qian",′f′,95.0,92.0};

f(c); printf("%s,%c,%2.0f,%2.0f\n",

https://www.wendangku.net/doc/9a3699486.html,,c.sex,c.score[0],c.score[1]);

}

程序的运行结果是

A)Qian,f,95,92

B)Qian,m,85,90

C)Zhao,f,95,92

D)Zhao,m,85,90

(37)有以下程序

#include

main()

{ FILE *fp; int a[10]={1,2,3},i,n;

fp=fopen("d1.dat","w");

for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);

fprintf(fp,"\n");

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d",&n);

fclose(fp);

printf("%d\n",n);

}

程序的运行结果是

A)12300 B)123

C)1 D)321

(38)变量a中的数据用二进制表示的形式是

01011101,变量b中的数据用二进制表示的形

式是11110000。若要求将a的高4位取反,

低4位不变,所要执行的运算是

A)a^b B)a|b

C)a&b D)a<<4

(39)在C语言中,只有在使用时才占用内存

单元的变量,其存储类型是

A)auto和register B)extern

和register C)auto和static

D)static和register

(40)设有定义语句int ( *f)(int);,则以下

叙述正确的是

A)f是基类型为int的指针变量B)f是

指向函数的指针变量,该函数具有一个int类型

的形参

C)f是指向int类型一维数组的指针变量

D)f是函数名,该函数的返回值是基类型为int

类型的地址

选择题

(1)C (2)A (3)B (4)B (5)A (6)D (7)B

(8)C (9)D (10)C (11)C (12)C (13)B

(14)C (15)B (16)D (17)B (18)B (19)B

(20)D (21)D (22)A (23)D (24)C (25)A

(26)D (27)D (28)D (29)A (30)B (31)C

(32)C (33)A (34)C (35)C (36)A (37)B

(38)A (39)A (40)B

上机题库

第一套

1.程序填空

程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。函数fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

第一处struct student t;

第二处for(i=0;i

第三处if(strcmp(a[i].name,a[j].name)>0) 2程序修改

给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。

/**found**/

q=p+i;

/**found**/

while(q>p)

3程序设计

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。

int fun(STREC *a,STREC *b,int l,int h) {int i,j=0;

for(i=0;i

if((a[i].s>=1&&a[i].s<=h)

b[j++]=a[i];

return j;

}

第二套

1.程序填空

给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。

第一处free(q);

第二处q=p->next;

第三处q=q->next;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。

/**found**/

p=j;

/**found**/

p=i;

3. 程序设计

请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。void fun(int m,int *a,int *n)

{

int i;

*n=0;

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

if((i%7==0)||(i%11==0))

a[(*n)++]=i;

}

第三套

1. 程序填空

函数fun的功能是:逆置数组元素是的值。例

如:若a所指数组中的数据依次为:1、2、3、

4、5、6、7、8、9,则逆置后依次为:9、8、

7、6、5、4、3、2、1。形参n给出数组中数

组中数据的个数。

第一处for(i=0;i

第二处a[i]=a[n-1-i];

第三处a[n-i-1]=t;

2程序修改

给定程序MODI1.C中函数fun的功能是:将

一个由八进制数字字符串组成的字符串转换

为与其面值相等的十进制整数。规定输入的字

符串最多只能包含5位八进制数字字符。

/**found**/

n=*p-‘0’;

/**found**/

n=n*8+*p-‘0’;

3. 程序设计

学生的记录由学号和成绩组成,N名学生的数

据已在主函数中放入结构体数组s中,请编写

了函数fun,它的功能是:函数返回指定学号

的学生数据,指定的学生号在主函数中输入,

若没有找到指定学号,在结构体变量中给学号

置空串,给成绩置-1,作为函数值返回。(用

于字符串比较的函数是strcmp)。

STREC fun(STREC*a,char *b)

{

STREC c;

Int i;

c.num[0]=’\0’;

c.s=-1;

for(i=0;i

if(strcmp(a[i].num,b)==0)

{strcpy(c.num,a[i].num);

c.s=a[i].s;break;}

return c;

}

第四套

1.程序填空

给定程序中,函数fun的功能是:在带有头结

点的单向链表中,查找数据域中值为ch的结

点。找到后通过函数值返回该结点在链表中所

处的顺序号:若不存在值为ch的结点,函数

值返回0.

第一处while(p!=0)

第二处if(p->data==ch)return n;

第三处k=fun(head,ch);

2. 程序修改

给定程序MODI1.C中函数fun的功能是:删

除p所指字符串的所有空白字符(包括制表符、

回车符及换行符)。输入字符串时用‘#’结束

输入。

/**found**/

for(i=0,t=0;p[i];i++)

/**found**/

c[t]=’\0’;

3. 程序设计

请编写一个函数fun,将ss所指字符串中所有

下标为奇数位置上的字母转换为大写(若该位

置上不是字母,则不转换)。

void fun(char *ss)

{

int i;

for(i=1;i

{if(ss[i]>=’a’&&ss[i]<=’z’)

ss[i]-=32;

}

}

第五套

1. 程序填空

给定程序中,函数fun的功能是:计算下式前

n项的和作为函数值返回。例如:当形参n的

值为10 的时,函数返回:9.6125588。

第一处s=0;

第二处for(i=1;i<=n;i++)

第三处s=s+(2.0*i-1)*(2.0*i+1)/(t*t);

2. 程序修改

给定程序MODI1.C中函数fun的功能是:统

计substr所指字符串在str所指字符串中出现

伯次数。

/**found**/

for(i=0;str[i];i++)

/**found**/

if(substr[k+1]==’\0’)

3. 程序设计

请编写一个函数fun,它的功能是:根据以下

公式求JI的值(要求满足精度0.0005,即某

项小于0.0005时停止送代):程序运行后,如

果输入精度为0.0005,则程序输出为3.14…。

double fun(double eps)

{ double s=1,t=1./3;

int n=1;

while(t>=eps)

{s+=t;n++;t=t*n/(2.0*n+1)

;}

return(s*2.0);

}

第六套

1. 程序填空

给定程序中,函数fun的功能是:将形参s所

指定字符串中所有的字母字符顺序前移,其他

字母顺序后移,处理后字符串的首地址作为函

数值返回。

第一处t[j]=s[i];j++;

第二处for(i=0;i

t[j+i]=p[i];

第三处t[j+k]=0;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指定字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。

/**found**/

while(*w)

/**found**/

if(*r==*p)

3. 程序设计

函数fun的功能是:将s所指字符串中ASCII 值为奇数的字符删除,串中剩余字符形成一个新串放在t所指定的数组中。

void fun(char *s,char t[])

{ int i,j=0;

for(i=0;i

if(s[i]%2==0)t[j++]=s[i];

t[j]=0;

}

第七套

1.程序填空

程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。函数fun的功能是将形参a所指结构体变量s中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。

第一处struct student *

fun(struct student*a)

第二处for(i=0;i<3;i++)

a->score[i]+=1;

第三处return a;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放在一个字符串数组中。

/**found**/

char *fun(char (*sq)[M])

/**found**/

return sp;

3. 程序设计

函数fun的功能是:将a、b中的两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。

#include

void fun(int a,int b,long *c)

{ *c=(b%10)*1000+(a/10)*100+(b/10)*10 +a%10;

}

第八套1. 程序填空

函数fun的功能是:将形参观者工所指数组中

的前半部分元素中的值和后半部分元素中的

值对换。形参n中存放数组中数据的个数,若

n为奇书,则中间元素不动。

第一处p=(n%2==0)?n/2:n/2+1;

第二处a[i]=a[p+i];

第三处a[p+i]=t;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:把

主函数中输入的三个数,最大的放在a中,最

小的放在c中,中间的放在b中。

/**found**/

float k;

/**found**/

if(*a<*c)

3. 程序设计

学生的记录由学号和成绩组成,N名

学生的数据已在主函数中放入结构体数组s

中,请编写了函数fun,它的功能是:把分数

最高的学生数据放在b所指的数组中,注意:

分数最高的学生可能不止一个,函数返回分数

最高的学生的人数。

int fun(STREC *a,STREC *b)

{

int i,max=a[0].s,n=0;

for(i=1;i

if(max

for(i=0;i

if(max==a[i].s)b[n++]=a[i];

return n;

}

第九套

1. 程序填空

给定程序中,函数fun的功能是:计算形参x

所指数组中N个数的平均值,(规定所有数均

为正数),将所指数组中小于平均值的数据移

至数据的前部,大于等于平均数的移至x所指

数组的后部,平均值作为函数值返回,在主函

数中输出平均值和移动后的数据。

第一处for(i=0;i

av+=x[i]/N

第二处y[j]=x[i];

x[i]=-1;j++;}

第三处i++;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:统

计字符串各元音字母(即:A、E、I、O、U)

的个数。注意字母不分大小写。

/**found**/

num[k]=0;

/**found**/

switch(*s)

3. 程序设计

请编写函数fun,函数的功能是:求出二级数

组周边元素之和,作为函数值返回。二维数组

中的值在主函数中赋予。

int fun(int a [M][N])

{

int tot=0,i,j;

for(i=0;i

{

tot +=a[0][i];

tot +=a[M-1][i];

}

for(i=1;i

tot +=a[i][0];

tot +=a[i][N-1];

}

return tot;

}

第十套

1.程序填空

程序通过定义学生结构体变量,存储了学生的

学号、姓名和三门课的成绩。函数fun的功能

是将形参a中的数据进行修改,把修改后的数

据作为函数值返回主函数进行输出。

第一处struct student

fun(struct student a)

第二处strcpy(https://www.wendangku.net/doc/9a3699486.html,,”LiSi”);

第三处a.score[i]+=1;

2程序修改

假定整数数列中的数不重复,并存放在数组

中。给定程序MODI1.C中函数fun的功能是:

删除数列中值为x的元素。N中存放的是数列

中元素的个数。

/**found**/

if(p==n) return-1’

/**found**/

a[i]=a[i+1];

3. 程序设计

学生的记录由学号和成绩组成,N名

学生的数据已在主函数中放入结构体数组s

中,请编写了函数fun,它的功能是:把分数

最低的学生数据放在b所指的数组中,注意:

分数最低的学生可能不止一个,函数返回分数

最低的学生的人数。

int fun(STREC *a,STREC *b)

{

int i,j=0,min=a[0].s;

for(i=0;i

{ if(min>a[i].s){

j=0;

b[j++]=a[i];min=a[i].s;

}

else if(min==a[i].s)

b[j++]=a[i];

}

return j;

}

第十一套

1. 程序填空

给定程序中,函数fun的功能是:计算形参x

所指数组中N个数的平均值,(规定所有数均

为正数),将所指数组中大于平均值的数据移

至数据的前部,小于等于平均数的移至x所指

数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。

第一处av=s/N;

第二处y[j++]=x[i];x[i]=-1;}

第三处if(x[i]!=-1)

y[j++]=x[i];

2. 程序修改

给定程序MODI1.C中函数fun的功能是:读入一行英文文本行,将其中每个单词的第一个字母改成大写,然后输出次文本行(这里的“单词”是指由空格隔开的字符串)。

/**found**/

#include

/**found**/

upfst (char *p)

3. 程序设计

程序定义了N×N的二级数组,并在主函数中赋值,请编写函数fun,函数的功能是:求出数组周边元素的平均值并作出函数值饭给主函数中的s。

double fun(int w[][N])

{ int i,j,n=0;

double sum=0;

for(i=0;i

{ sum+=w[0][i]+w[N-1][i];

n+=2;}

for(i=1;i

{ sum+=w[i][0]+w[i][N-1];

n+=2;

}

return sum/n;

}

第十二套

1. 程序填空

给定程序中,函数fun的功能是:将自然数1—10以及它们的平方根写到名为myfile3.txt 的文本文件中,然后再顺序读出显示在屏幕上。

第一处

fprintf(fp,”%d%f\n”,i,sqrt((double)i));

第二处fclose(fp);

第三处if((fp=fopen(fname,”r”))==NULL) 2. 程序修改

给定程序MODI1.C中函数fun的功能是:将n个无序整数从小到大排序。

/**found**/

for(i=j+1;i

/**found**/

p=i;

3. 程序设计

函数fun的功能是:将a、b中的两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位依次放在变量c的个位和百位上,b中的十位和个位数依次放在变量c的十位和千位上。

#include

void fun(int a,int b,long *c)

{ *c=(b%10)*1000+(a%10)*100+(b/10)*10

+(a/10);}

第十三套

1. 程序填空

给定程序中,函数fun的功能是:找出N*N

矩阵中每列元素中的最大值,并按顺序一次存

放于形参b所指的一维数组中。

第一处b[i]=a[0][i];

第二处if (b[i]

b[i]=a[j][i];

第三处fun(x,y);

2. 程序修改

给定程序MODI1.C中函数fun的功能是:交

换主函数中的两个变量的值。

/**found**/

int fun(int *x,int *y)

/**found**/

t=*x;*x=*y;*y=t;

3. 程序设计

编写函数fun,函数的功能是求出小于或等于

lim的所有素数并放在aa数组中,函数返回所

求出的素数的个数。函数fun中给出的语句仅

供参考。

#include

#define MAX100

int fun(int lim,int aa[MAX])

{int i,j,k=0;

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

{

for(j=2;j<=(i/2);j++)

if(i%j==0)break;

if(j>(i/2))aa[k++]=i;

} return k;}

第十四套

1. 程序填空

函数fun的功能是进行字母转换。若形参ch

中小写英文字母,则转换成相应的大写英文字

母;若形参ch中是大写英文字母,则转换成

相应的小写英文字母;并将转换的结果作为函

数值返回。

第一处if((ch>=’a’)&&(ch<=’z’))

第二处return

ch+’a’-‘A’

第三处return ch;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:给

一维数组a输入任意四个整数并按下列的规律

输出。例如输出1、2、3、4,程序输出一下

方阵。

a) 1 2 3

3 4 1 2

2 3 4 1

1 2 3 4

/**found**/

void fun(int *a)

/**found**/

a[j]=a[j-1];

3. 程序设计

请编写函数fun,函数的功能是:计算并输出

给定整数n的所有因子(不包过1和n本身)

之和。规定n的值不大于1000.

int fun(int n)

{

int s=0,i;

for(i=2;i

if(n%i==0)s+=i;

return s;

}

第十五套

1. 程序填空

给定程序中,函数的功能是:把形参s所指字

符串下标为奇数的字符右移到下一个奇书位

置,最右边呗移出字符串的字符绕回放到第一

个奇数位置,下标为偶数的字符不动(注:字

符串的长度大于等于2)。例如,形参s所指的

字符串为:abcdefgh,执行结果为:ahcbedg。

第一处if(n%2==0) k=n-1;

第二处c=s[k];

第三处s[1]=c;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:求

s=aa…aa—…—aaa—aa—a(此处aa…aa表

示n个a,a和n的值在1至9之间)。

/**found**/

long s=0,t=0;

/**found**/

t=t/10;

3. 程序设计

请编写一个函数void fun(char*tt,int pp[ ]),

统计在tt所指字符串中‘a’至‘z’26个小

写字母各自出现在的次数,并依次放在pp数

组中。

void fun(char*tt, int pp[ ])

{

char *p=tt;

int i;

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

pp[i]=0;

while(*p)

{if(*p>=’a’&&*p<=’z’)

pp[*p-‘a’]+=1;

p++;

}

}

第十六套

1. 程序填空

人员的记录由编号和出生年、月、日组成,N

名人员的数据已在主函数中存入结构体数组

std中,且编号唯一。函数fun的功能是:找

出指定编号人员数据,作为函数值返回,由主

函数输出,若指定编号不存在,返回数据中编

号为空串。

第1处STU fun(STU *std, char *num)

第2处if(strcmp (std[i].num, num)

= =0)

第3处return (std[i]);

2. 程序修改

给定程序MODI1.C中函数fun的功能是:从s所指字符串中,找出与t所指字符串相同的子串的个数作为函数值返回。

/**found**/

r++; p++;

/**found**/

if(*r= =0)

3. 程序设计

函数fun的功能是:将s所指字符串中ASCII 值为偶数的字符删除,串中剩余字符形成一个新串放在t所指数组中。

#include

#include

void fun (char*s, char t[])

{

int i, j=0;

for(i=0;i

if(s[i]%2) t[j++]=s[i];

t[j]=0;

}

第十七套

1. 程序填空

给定程序中,函数fun的功能是:统计形参s 所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。例如,形参s所指的字符串为:abcdef35adgh3kjsdf7。输出结果为:4。

第1处for(i=0;s[i]!=NULL;i++)

第2处if(s[i]>=’0’&&s[i]<=’9’)

n++;

第3处*t=n;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:通过某种方式实现两个变量的交换,规定不允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中值为3,b 中的值为8.

/**found**/

t=*x;*x=y;

/**found**/

return(t);

3. 程序设计

请编写函数fun,函数的功能是:求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。

#include

viod fun (int *a,int *n)

{int i;

*n=0;

for(i=7;i<1000;i++)

if(((i%7)= =0││(i%11)= =0

&&(i%77)!=0) a[(*n)++]=i;

}

第十八套

1. 程序填空

给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=n)值,将每行元素

中的值均右移m个位置,左边值为0.

第1处for(i=0;i

第2处t[i][j+m]=t[i][j];

第3处for(j=0;j

2. 程序修改

给定程序MODI1.C中函数fun的功能是:计

算并输出high以内最大的10个素数之和。

high的值由主函数传给fun函数。

/**found**/

while((2<=high)&&(n<10))

/**found**/

yes=0;break;

3. 程序设计

请编写函数fun,函数的功能是:利用一下所

示的简单迭代方法求方程求方程:cos(x)-x=0

的一个实根。x n+1=cos(x n)迭代步骤如下:

(1)取x1的初值为0.0;(2)x0=x1,把x1

的值赋给x0;(3)x1=cos(x0),求出一个新

的x1;(4)若x0-x1的绝对值小于0.000001

执行步骤(5)否则执行步骤(2);(5)所求

x1就是方程cos(x)-x=0的一个实根作为函

数值返回。程序将输出结果为:

Root=0.739058。

float fun()

{

float x0,x1=0.0;

do{

x0=x1;

x1=cos(x0);

}while(fabs(x0-x1)>0.000001);

return x1;

}

第十九套

1. 程序填空

给定程序中,函数fun的功能是:将a所指的

3×5矩阵中第k列的元素左移到第0列,第k

列以后的每列元素行依次左移,原来左边的各

列依次绕到右边。

第1处for(p=1;p<=k;p++)

第2处for(j=0;j

a[i][j]=a[i][j+1];

第3处a[i][N-1]=temp;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:根

据形参m的值(2<=m<=9),在m行m列

的二维数组中存放如下所示规律的数据,由

main函数输出。例如,若输入2则输出:

1 2

2 4

/**found**/

fun(int a[][M],int m)

/**found**/

a[j][k]=(k+1)*(j+1);

3. 程序设计

函数fun的功能是:将a、b中的两位正整数

合并形成一个新的整数放在c中。合并的方式

是:将a中的十位和个位依次放在变量c的十

位和千位上,b中的十位和个位数依次放在变

量c的个位和百位上。

void fun(int a,int b,int*c)

{

*c=(a%10)*1000+(b%10)*100

+(a/10)*10+(b/10);

}

第二十套

1. 程序填空

给定程序中,函数fun的功能是:对形参s所

指字符串中下标为奇数的字符ASCII码大小递

增排序,并将排序后的下标为奇数的字符取

出,形成一个新串。

第1处t=i;

第2处for(j=i+2;j

第3处p[j]=0;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:用

下面的公式求π的近似值,知道最后一项的近

似值小于指定数(参数num)为止:例如程序

0.0001,则程序输出3.1414。

/**found**/

while((fabs(t))>=num)

/**found**/

t=s/n

3. 程序设计

请编写一个函数void fun(char a[ ],char

b[ ],int n),其功能是:删除一个字符串指定

下标的字符。其中,a指向原字符串,删除指

定字符后的字符串放在b所指的n中存入指定

的下标。

viod fun (char a[ ],char

b[],int n)

{

strncpy (b,a,n);

b[n]=0;

strcat(b,a+n+1);

}

第二十一套

1. 程序填空

给定程序中,函数fun的功能是:在形参ss

所指字符串数组中,将所有串长超过k的字符

串右边的字符删去,只保留左边的k个字符。

ss所指字符串数组中共有N个字符串,且串

小于M。

第一处void fun(char (*ss)[M], int k)

第二处while (i

第三处ss[i][k]=0;i++;}

2. 程序修改

给定程序MODI1.C中函数fun的功能是:根

据以下公式求π值,并作为函数值返回。例如,

给指定精度的变量eps输入0.0005时,应当

输出Pi=30140578.。

/**found**/

t=1;

/**found**/

return(2*s);

3. 程序设计

假定输入字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。函数fun中给出的语句仅供参考。

void fun(char*a,int n)

{

int i=0,k=0;

while(a[k]= =’*’)k++;

if(k>n)

{

i=n;j=k;

for(;a[j]!=0;j++)

a[i++]=a[j];

a[i]=0;

}}

第二十二套

1. 程序填空

给定程序中,函数fun的功能是:a所指4×3矩阵中第k行的元素与第0行元素交换。例如:有下列矩阵

1 2 3

4 5 6

7 8 9

10 11 12

若k为2,程序执行结果为

7 8 9

4 5 6

1 2 3

10 11 12

第一处void fun(int (*a)[N],int k)

第二处for(i=0;i

第三处a[0][i]=a[k][i];

2. 程序修改

给定程序MODI1.C中函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符串按ASCII码升序排序后输出。例如,若输入edcba,则应输出:abcde。

/**found**/

for(i=strlen(t)-1;i;i--)

/**found**/

if(t[j]>t[j+1])

3. 程序设计

请编写函数fun,函数的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。void fun(char *ss)

{

char *p=ss;

inr i=0;

while(*p){

if((i%2)&&(*p>=’a’&&*p<=’z’))

*p-=32;

p++;

i++;

}

} 第二十三套

1. 程序填空

给定程序的功能是:调用函数fun将指定源文

件中的内容复制到指定的目标文件中,复制成

功时函数的返回值是1,失败是返回值是0.在

复制的过程中,把复制的内容输出到终端屏

幕。主函数源文件名放在变量sfname中,目

标文件放在变量tfname中。

第一处

if((fs=fopen(source,”r”))==NULL)

第二处while(!feof(fs))

第三处fputc(ch,ft);

2. 程序修改

给定程序MODI1.C中函数fun的功能是:将

长整型中每一位上为偶数的数依次取出,构成

一个新数放在t中。高位仍在高位,低位仍在

低位。

/**found**/

if(d%2==0)

/**found**/

s/=10;

3. 程序设计

函数fun的功能是:将两位正整数a、b合并

形成一个新的整数放在c中。合并的方式是:

将a中的十位和个位依次放在变量c的十位和

千位上,b中的十位和个位数依次放在变量c

的百位和个位上。

void fun(int a,int b,long*c)

{

*c=(a%10)*1000+(b/10)*100+(a/10)*10+(

b%10);

第二十四套

1.程序填空

程序通过定义学生结构体变量,存储了学生的

学号、姓名和三门课的成绩。函数fun的功能

是将形参a所指结构体变量中的数据赋给函数

中的结构体变量b,并修改b中的学号和姓名,

最后输出修改后的数据。

第一处b=a;

第二处strcpy(https://www.wendangku.net/doc/9a3699486.html,,”LiSi”)

第三处for (i=0;i<3;i++)

printf(“%6.2f”,b.score[i]);

2. 程序修改

给定程序MODI1.C中函数fun的功能是:从

s所指字符串中删除所有小写字母c。请改正程

序中的错误,使它能计算出正确的结果。

/**found**/

s[j++]=s[i];

/**found**/

s[j]=’\0’;

3. 程序设计

假定输入的字符串中只包含字母和*号。请编写

函数fun,它的功能是:将字符串的前导*号全

部移到字符串的尾部。函数fun中给出的函数

仅供参考。

void fun(char *a)

{ char *p,*q;

int n=0;

p=a;

while(*p==’*’)

{n++;p++;}

q=a;

while(*p){

*q=*p;

p++;q++;

}

for(;n>0;n--)

*q++=’*’;

*q=’\0’;

}

第二十五套

1. 程序填空

用筛选法可得到2—n(n<10000)之

间的所有素数,方法是:首先从素数2开始,

将所有2的倍数的数从数表中删去(把数表中

相应位置的值置成0);接着从数表中找下一个

非0数,并从数表中删去该数的所有倍数,依

此类推,直到所找的下一个数等于n为止。这

样会得到一个序列:2、3、5、7、11、13、

17、19、23……函数fun用筛选法找出所有小

于等于n的素数,并统计素数的个数作为函数

值返回。

第一处for(j=a[i]*2;j<=n;j+=a[i])

第二处while(a[i]= =0)

第三处if(a[i]!=0)

2. 程序修改

给定程序MODI1.C中函数fun的功能是:为

一个偶数寻找两个素数,这两个素数之和等于

该偶数,并将这两个素数通过形参指针传回主

函数。

/**found**/

y=1;

/**foune**/

d=a-i;

3. 程序设计

请编写函数fun,它的功能是:计算并输出n

(包括n)以内能被5或9整除的所有自然数

的倒数之和。

double fun(int n)

{

int i;

double sum=0.0;

for(i=1;i

if(i%5= =0||i%9==0)

sum+=1.0/i;

return sum;

}

第二十六套

1. 程序填空

给定程序中,函数fun的功能是建立一个N×

N的矩阵。矩阵元素的构成规律是:最外层元

素的值全部是1;从外向内第二层元素的值全

部为2;第三层元素的值全部是3,…依此类

推。

第一处void fun(int(*a)[N])

第二处for(j=i;j

第二处a[k][i]=a[k][N-i-1]=i+1;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:将十进制正整数m转换成k(2<=k

<=9)进制数,并按高位到低位顺序输出。/**found**/

aa[i]=m%k;

/**found**/

printf(“%d”,aa[i-1]);

3. 程序设计

编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:主函数中用****作为结束输入的标志,函数fun中给出的语句仅供参考)。fun(char (*a)[81],int num,char **max) {

int i,k=0,maxlen;

maxlen=strlen(a[k]);

for(i=1;i

{

if(strlen(a[i])>maxlen)

{maxlen=strlen(a[i]);

k=i;

}

}

*max=a[k];

}

第二十七套

1. 程序填空

函数fun的功能是计算f(x)=1+x-2/2!+3/3!-4/4!+……的前n项和。若x=2.5,n=15时,函数值为1.917914。

第一处f=1;

第二处t*=(-1)*x/i;

第三处f+=t;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:从三个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在没组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15.程序中i 的值代表红球数,j代表白球数,k代表黑球数。/**found**/

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

/**found**/

if(k>=0&&k<=6)

3. 程序设计

请编写函数fun,它的功能是:计算并输出下列多项式的值:s n=1+1/1!+1/2!+1/3!+1/4!+……1/n!。例如:在主函数中从键盘给n输入15,则输出为:s=2.718282。注意:要求n的值大于1但不大于100。

double fun(int n)

{

double s=1’

long t=1;

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

t=t*i;

s+=1.0/t;}

return s;

}

第二十八套

1. 程序填空

给定程序中,函数fun的功能是:计算N*N

矩阵的主对角线元素和方向对角线元素之和,

并作为函数值返回。注意:要求先累加主对角

线元素中的值,然后累加反响对角线元素的

值。

第一处sum=0;

第二处sum+=t[i][i];

第三处sum+=t[i][n-i-1];

2. 程序修改

给定程序MODI1.C中函数fun和funx的功

能是:用二分法求方程2x3-4x2+3x-6=0的一

个根,并要求绝对误差不超过0.001。

/**found**/

double r;

/**found**/

while(fabs(n-m)>0.001)

3. 程序设计

假定输入的字符串中只包含字母和*号。请编写

函数fun,它的功能是:除了字符串前导和尾

部的*号之外,将串中其他*号全部删除。形参

h已指向字符串中的第一个字母,形参p已指

向字符串中最后一个字母。在编写函数时,不

得使用c语言提供的字符串函数。

void fun(char *a,char *h,char *p)

{

int j=0;

char *q=a;

while(*q&&q

while(*h&&*p&&h

{

if(*h!=’*’)a[j++]=*h;

h++;

}

while(*p)a[j++]=*p++;

a[j]=0;

}

第二十九套

1. 程序填空

给定程序中,函数fun的功能是:有N*N矩

阵,将矩阵的外围元素顺时针旋转。操作的顺

序是:首先将第一行元素的值存入临时数组r,

然后使第一列成为第一行,最后一行成为第一

列,最后一列成为第一行,临时数组中和元素

成为最后一列。

第一处t[0][N-j-1]=t[j][0];

第二处for(j=N-1;j>=0;j--)

第三处t[j][N-1]=r[j];

2. 程序修改

给定程序MODI1.C中函数fun的功能是:计

算s=f(-n)+f(-n+1)+……+f(0)+f(1)

+f(2)+……f(n)的值。例如,当n为5时,

函数值应该是:10.407143。

/**found**/

double f(double x)

/**found**/

return s;

3. 程序设计

编写一个函数fun,它的功能是计算:s=根号

下(ln(1)+ln(2)+ln(3)+……ln(m))

S作为函数返回,在C语言中可以调用log(n)

求ln(n)。log函数引用说明是:Double log

(double x)例如,若m的值为:20,fun

函数值为:60506583。

double fun(int m)

{

double s=0.0;

int i;

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

s+=log(1.0*i);

s=sqrt(s);

return s;

}

第三十套

1. 程序填空

函数fun的功能是:反形参a所指数组中的奇

数按原顺序依次存放到a[0]、a[1]、a

[2]……中,把偶数从数组中删除,奇数个数通

过函数值返回。例如:若a所指数组中的数据

最初排列为:9、1、4、2、3、6、5、8、7,

删除偶数后a所指数组中的数据为:9、1、3、

5、7,返回值为5。

第一处if(a[i]%2==1)

第二处j++;

第三处return j;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:求

出两个非零正整数的最大公约数,并作为函数

值返回。

/**found**/

t=a;a=b;b=t;

/**found**/

return (b);

3. 程序设计

假定输入的字符串中只包含字母和*号。请编写

函数fun,它的功能是:删除字符串中所有的*

号。在编写函数时,不得使用C语言提供的字

符串函数。

void fun(char *a)

{

int j=0;

char *p=a;

while(*p){

if(*p!=’*’)

a[j++]=*p;

p++;

}

a[j]=0;

}

第三十一套

1. 程序填空

给定程序中,函数fun的功能是:在形参ss 所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。Ss所指字符串数组中共有N个字符串,且串长小于M。第一处for(i=0;i

第二处if(len<=k)

第三处strcpy(ss[j++],ss[i]);

2. 程序修改

给定程序MODI1.C中函数fun的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCII值或相等的字符依次存放在c所指数组中,形成一个新的字符串。

/**found**/

int k=0;

/**found**/

while(*p||*q)

3. 程序设计

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun 中给出的语句仅供参考。

void fun(char *a)

{

int i=0,k;

while(a[i]!==’*’)i++;

k=i;

while(a[i]!=’\0’)

{

if(a[i]!=’*’)

a[k++]=a[i];

i++;

}

a[k]=’\0’;

}

第三十二套

1. 程序填空

给定程序中已建立一个带头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。

第一处s->data=x;

第二处q=p;

第三处q->next=s;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。

/**found**/

long k=1;

/**found**/

num/=10

3. 程序设计

请编写函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数返回。

float fun(float *a,int n)

{ int i;

float ave=0.0;

for(i=0;i

ave=ave+a[i];

ave=ave/n;

return ave;

}

第三十三套

1. 程序填空

给定程序中,函数fun的功能是:在形参ss

所指字符串数组中,查找含有形参substr所指

子串的所有字符串并输出,若没找到输出相应

信息。Ss所指字符串数组中共有N个字符,

且串长小于M。程序中库函数strstr(s1、s2)

的功能是早s1串中查找s2子串,若没有,函

数值为0,若有,为非0。

第一处for(i=0;i

第二处if(strstr(ss[i],substr)!=NULL)

第三处if(find==0)

2. 程序修改

给定程序MODI1.C中函数fun的功能是:求

三个数的最小公倍数。

/**found**/

fun(int x,int y,int z)

/**found**/

return j;

3. 程序设计

假定输入的字符串中只包含字母和*号。请编写

函数fun,它的功能是:只删除字符串前导和

尾部的*号,串中字母之间的*号都不删除。形

参n给出了字符串的长度,形参h给出了字符

串中前导*号的个数。在编写函数时,不得使用

C语言提供的字符串函数。

void fun(char *a,int n,int h,int e)

{

char *p=a;

int j=0,len=0;

while(*p){p++;len++;}

while(j

a[j]=a[h+j];

j++;

}

a[j]=0;

}

第三十四套

1. 程序填空

给定程序中,函数fun的功能是:在形参ss

所指字符串数组中查找与形参t所指字符串相

同的串,找到后返回该串在字符串中的位置

(下标值),未找到则返回-1。ss所指字符串

数组中共有N个内容不同的字符串,且串长小

于M。

第一处for(i=0;i

第二处

if(strcmp ss[i],t)==0

return i;

第三处if(n==-1)

printf(“\nDon’t found!\n”);

2. 程序修改

给定程序MODI1.C中函数fun的功能是:从

整数1到55之间,选出能被3整除、且有一

位上的数是5的那些事,并且把这些数放在b

所指的数组中,这些数作为函数值返回。规定,

函数中a1放个位数,a2放十位数。

/**found**/

a2=k/10;

/**found**/

return i;

3. 程序设计

假定输入的字符串中只包含字母和*号。请编写

函数fun,它的功能是:将字符串尾部的*号全

部删除,前面和中间的*号不删除。

void fun(char *a)

{

char *p=a;

while(*p)p++;p--;

while(*p==’*’)p--;

p++;

*p=0;

}

第三十五套

1. 程序填空

给定程序中,函数fun的功能是:统计出带有

头结点的单向链表中结点的个数,存放在形参

n所指的存储单元中。

第一处*n=0;

第二处p=p->next;

第三处fun(head,&num);

2. 程序修改

给定程序MODI1.C中函数fun的功能是:求

出s所指字符串最后一次出现的t所指字符串

的地址,通过函数值返回,在主函数中输出从

此地址开始的字符串;若未找到,则函数值

NULL。

/**found**/

a=NULL;

/**found**/

if(*r==*p)

3. 程序设计

函数fun的功能是:将s所指字符串中除了下

标为偶数,同时ASCII指也为偶数的字符外,

其余的全部都删除:串中剩余字符所形成的一

个新串放在t所指的数组中。

void fun(char *s,char t[ ])

{

int i,j=0;

for(i=0;i

if(s[i]%2==0)t[j++]=s[i];

t[j]=0;

}

第三十六套

1. 程序填空

函数fun的功能是:进行数字字符转换。若形

参ch中是数字字符‘0’—‘9’,则‘0’转

换成‘9’,‘1’转换成‘8’,‘2’转换成‘7’,……

‘9’转换成‘0’;若是其他字符则保持不变,并将转换后的结果做函数值返回。

第一处char fun(char ch)

第二处if(ch>=’0’&&ch<=’9’)

第三处return ‘9’-(ch-‘0’);

2. 程序修改

给定程序MODI1.C中函数fun的功能是:将p所指字符串中所有字符复制到b中,要求复制第三个字符之后插入一个空格。

/**found**/

b[k]=*p;

/**found**/

b[k++]=’‘;

3. 程序设计

N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,它的功能是:求出平均分,有函数值返回。

double fun(STREC *h)

{

STREC *p=h->next;

double av=0.0;

int n=o;

while(p!=NULL)

{

av=av+p->s;

p=p->next;

n++;

}

av/=n;

return av;

}

第三十七套

1. 程序填空

函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放a[0]、a[1]、a[2]……中,把奇数从数组中删除,偶数个数通过函数值返回。

第一处if(a[i]%2==0){

第二处a[j]=a[i];j++;

第三处return j;

2. 程序修改

给定程序MODI1.C中函数fun的功能是:按以下递推公式求函数值。例如,当给n输出5时,函数值为18;当给n输入3时,函数值为14.

/**found**/

fun(int n)

/**found**/

if(n==1)

3. 程序设计

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。

void fun(char *a,int n)

{ char *p=a;

int j=0;

while(*p)p++;p--;

while(*p==’*’)p--;

p++;

while(j

p++;

j++;

}

*p=0;

}

第三十八套

1. 程序填空

给定程序中,函数fun的功能是:利用指针数

组对形参ss所指字符串数组中的字符串按由

长到短的顺序排列,并输入排序结果。ss所指

定字符串数组中共有N个字符串,且串长小于

M。

第一处k=i

第二

if(strlen(ps[k])

ps[j]))k=j;

第三处tp=ps[i];ps[i]=ps[k];ps[k]=tp;

2. 程序修改

已知一个数列从第0项开始的前三项分别是

0、0、1以后的各项都是它相邻的前三项之和。

给定程序MODI1.C中函数fun的功能是:计

算并输出该数列前n项的平方根之和。n的值

通过形参传入。

/**found**/

double fun(int n)

/**found**/

return sum;

3. 程序设计

请编写函数fun,它的功能是:计算下列级数

和,和值由函数值返回。例如,当n=10,x=0.3

时,函数值为1.349859。

double fun(double x,int n)

{double s=1.0,y=x;

int i;

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

{

s+=y/(double)jc(i);

y*=x;

}

return s;

}

第三十九套

1. 程序填空

给定程序中,函数fun的功能是:计算x所指

数组中N个数的平均值(规定所有数均为正

数),平均值通过形参返回主函数,将小于平

均值且最接近平均值的数作为函数值返回,在

主函数中输出。

第一处*av=s/N;

第二处d=*av-x[i];j=i;}

第三处return x[j];

2. 程序修改

给定程序MODI1.C中函数fun的功能是:根

据整型形参n计算如下公式的值。例如:若

n=10,则应输出:0.617977.

/**found**/

float fun(int n)

/**found**/

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

3. 程序设计

程序定义了N×N的二维数组,并在主函数中

自动赋值,请编写函数fun,它的功能是:使

数组右上三角元素中的值乘以m。

int fun(int a[][N],int m)

{

int i,j;

for(i=0;i

for(j=i;j

a[i][j]*=m;

}

第四十套

1. 程序填空

给定程序中,函数fun的功能是:将s所指字

符串所有数字字符移到所有非数字字符之后,

并保持数字字符串和非数字字符串原有的先

后次序。

第一处j++;

第二处s[i]=t1[i];

第三处for(i=0;i

2. 程序修改

给定程序MODI1.C中函数fun的功能是:用

冒泡法对6个字符串按由小到大的顺序排列。

/**found**/

for(j=i+1;j<6;j++)

/**found**/

*(pstr+i)=*(pstr+j);

3. 程序设计

请编写函数fun,它的功能是:求出ss所指字

符串中指定字符个数,并返回次值。

int fun(char *ss,char c)

{

int cnt=0;

char *p=ss;

while(*p){

if(*p==c)cnt++;

p++;

}

return cnt;

}

第四十一套

1. 程序填空

给定程序中,函数fun的功能是:将形参s所

指定字符串中的数字字符转换成对应的数值,

计算出这些数值的累加和作为函数值返回。

第1处

if(isdigit(*s))sum+=*s-48;

第2处s++;

第3处return sum;

2. 程序修改

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

全国计算机二级C语言操作题题库

1.程序Cmody021.c输出如下所示图形: * *** ***** ******* ********* #include void main() { int i,j;for(i=1;i<=5;i++) { for(j=1;j<=5-i;j++)printf(" "); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); } } 2.程序Cmody032.c的功能是:输出201-300之间的所有素数,统计总个数。#include #include void main() { int num; printf("\n"); num=fun(); printf("\nThe total of prime is %d",num); getch(); } int fun() { int m,i,k,n=0; for(m=201;m<=300;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) /**/if(m/i==0)/**/ break; /**/if(i==k)/**/ { printf("%-4d",m); n++;

if(n%10==0)printf("\n"); } } return n; } 3. 程序Cmody041.c,其功能是统计输入字符串中小写英文字母的个数。如输入:abcdEFGHIJK123 输出:4 #include #include main() { char str1[128]; /**/int i,len,sum=0;/**/ gets(str1); len=strlen(str1); for(i=0;i='a'&&str1[i]<='z')/**/ sum++; } printf("%d\n",sum); getch(); } 4.程序Cmody051.c,其功能是统计输入字符串中大写英文字母的个数。如输入:abcDEFGH123 输出:5 #include #include main() { /**/char str1[128]/**/ int i,len,sum=0; printf("Please input a string:\n"); scanf("%s",str1); len=strlen(str1); for(i=0;i='A'&&str1[i]<='Z') /**/sum++;/**/

计算机二级c语言历年真题及答案

计算机二级c语言历年真题及答案【篇一:国家计算机二级c语言历年真题及答案】 class=txt>c语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) (1)下列数据结构中,属于非线性结构的是 a)循环队列 b) 带链队列 c) 二叉树 d)带链栈 (2)下列数据结果中,能够按照“先进后出”原则存取数据的是 a) 循环队列 b) 栈 c)队列 d)二叉树 (3)对于循环队列,下列叙述中正确的是 a)队头指针是固定不变的 b)队头指针一定大于队尾指针 c)队头指针一定小于队尾指针 d)队头指针可以大于队尾指针,也可以小于队尾指针 (4)算法的空间复杂度是指 a)算法在执行过程中所需要的计算机存储空间 b)算法所处理的数据量 c)算法程序中的语句或指令条数 d)算法在执行过程中所需要的临时工作单元数 (5)软件设计中划分模块的一个准则是 a) 低内聚低耦合 b) 高内聚低耦合 c) 低内聚高耦合 d) 高内聚高耦合 (6)下列选项中不属于结构化程序设计原则的是 a) 可封装 d) 自顶向下

c) 模块化 d) 逐步求精 (7)软件详细设计产生的图如下: 该图是 a) n-s图 b) pad图 c) 程序流程图 d) e-r图 (8)数据库管理系统是 a)操作系统的一部分 b) 在操作系统支持下的系统软件 c) 一种编译系统 d) 一种操作系统 (9)在e-r图中,用来表示实体联系的图形是 a) 椭圆图 b) 矩形 c) 菱形 d) 三角形 (10)有三个关系r,s和t如下: 其中关系t由关系r和s通过某种操作得到,该操作为 a) 选择 b) 投影 c) 交 d) 并 (11)以下叙述中正确的是 a)程序设计的任务就是编写程序代码并上机调试 b)程序设计的任务就是确定所用数据结构 c)程序设计的任务就是确定所用算法 d)以上三种说法都不完整 (12)以下选项中,能用作用户标识符的是 a)void b)8_8 c)_0_ d)unsigned (13)阅读以下程序

历年全国计算机二级C语言试题库完整

. . . . 参考 50道C 语言知识题 1.以下叙述中正确的是 A)用C 程序实现的算法必须要有输入和输出操作 B)用C 程序实现的算法可以没有输出但必须要有输入 C)用C 程序实现的算法可以没有输入但必须要有输出 D)用C 程序实现的算法可以既没有输入也没有输出 2.下列可用于C 语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C 语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line 是一个数组,每个数组元素是一个基类型为char 为指针变量 B)定义line 是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line 是一个指针数组,语句中的*号称为间址运算符 D)定义line 是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a 的ASCII 码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c 的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段

新版计算机二级C语言测试题及答案解析

计算机二级C语言测试题及答案解析计算机二级C语言测试题及答案解析 C语言的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,下面给大家整理了计算机二级C语言测试题及答案,欢迎阅读! 计算机二级C语言测试题及答案解析 1.(A )是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C 开始执行。 A、程序中第一条可执行语句 B、程序中第一个函数 C、程序中的main函数 D、包含文件中的第一个函数 3、以下说法中正确的是( C )。

A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B ) 。 A、 C程序的工作过程是编辑、编译、连接、运行 B、 C语言不区分大小写。 C、 C程序的三种基本结构是顺序、选择、循环 D、C程序从main函数开始执行 5.下列正确的标识符是(C )。 A、-a1 B、a[i] C、a2_i D、int t 5~8题为相同类型题 考点:标识符的命名规则 只能由字母、数字、下划线构成

数字不能作为标识符的开头 关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int 为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B )。 A、3ax B、x C、case D、-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是( C )。 A、 %x B、a+b C、a123 D、123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

全国计算机等级考试二级C语言真题2013年3月

全国计算机等级考试二级C语言真题2013年3月 (总分40, 做题时间90分钟) 一、选择题 1. 程序流程图中带有箭头的线段表示的是______。 A 图元关系 B 数据流 C 控制流 D 调用关系 答案:C [解析] 在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。 2. 结构化程序设计的基本原则不包括______。 A 多态性 B 自顶向下 C 模块化 D 逐步求精 答案:A [解析] 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。 3. 软件设计中模块划分应遵循的准则是______。 A 低内聚低耦合 B 高内聚低耦合

C 低内聚高耦合 D 高内聚高耦合 答案:B [解析] 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。 4. 在软件开发中,需求分析阶段产生的主要文档是______。 A 可行性分析报告 B 软件需求规格说明书 C 概要设计说明书 D 集成测试计划 答案:B [解析] A错误,可行性分析阶段产生可行性分析报告。C错误,概要设计说明书是总体设计阶段产生的文档。D错误,集成测试计划是在概要设计阶段编写的文档。B正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。 5. 算法的有穷性是指______。 A 算法程序的运行时间是有限的 B 算法程序所处理的数据量是有限的 C 算法程序的长度是有限的 D 算法只能被有限的用户使用

计算机二级C语言考试编程题题库

计算机c语言编程题库 1、求100之内自然数中最大的能被17整除的数。 void main() { int i; for(i=100;i>0;i--) if(i%17==0)break; printf("%d\n",i); } 2、已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。 void main() { int a,b,c; for(a=1;a<=9;a++) { for(b=0;b<=9;b++) { for(c=1;c<=9;c++) if(a*100+b*10+c+c*100+b*10+a==1333) printf("%d,%d,%d\n",a,b,c); } } } 3、计算并输出200-400之间不能被3整除的整数的和。 void main() { int i,sum=0; for(i=200;i<=400;i++) if(i%3!=0) sum=sum+i; printf("%d\n",sum); } 4、从键盘输入10个数,统计非负数的个数,并计算非负数的和。 void main() { int i,n=0,sum=0; int a[10]; printf(“请输入10个数:”);

for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<10;i++) if(a[i]>=0) { sum=sum+a[i]; n++;} printf("非负个数是%d,sum=%d\n",n,sum); } 5、求100之内自然数中偶数之和。 void main() { int i,sum=0; for(i=0;i<=100;i++) if(i%2==0) sum=sum+i; printf("sum=%d\n",sum); } 6、输入5个数,求和并输出。要求编写求和的函数。 void main() { int b(int x[],int n); int sum=0; int a[5]; int i; printf("请输入5个数:"); for(i=0;i<5;i++) scanf("%d",&a[i]); sum=b(a,5); printf("sum=%d\n",sum); } int b(int x[],int n) { int i,sum=0; for(i=0;i<5;i++) sum=sum+x[i]; return sum; } 7、编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。 void main() { int i,sum=0; for(i=1;i<=99;i=i+2) sum=sum+i*(i+1)*(i+2); printf("%d\n",sum); } 8、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。void main()

计算机二级c语言题库

一、选择题 (1) 下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中,不属于面向对象方法的是(D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B) A. 可行性分析 B. 需求分析 C. 详细设计 D. 程序编码 (7) 在软件开发中,下面任务不属于设计阶段的是(D) A. 数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统 C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法执行过程中所需要的基本运算次数 D. 算法程序中的指令条数 (12) 算法的空间复杂度是指(D) A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 算法执行过程中所需要的存储空间 (13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出 A. 349 B. 350 C. 255 D. 351 (14) 结构化程序设计主要强调的是(B) A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性 (15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 (D) 注:即第一个阶段 A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析 (16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A) 注:P67

计算机二级考试C语言试题及答案第一套

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。) (1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为 A)PAD图 B)N-S图 C)结构图 D)数据流图 (2)结构化程序设计主要强调的是 A)程序的规模 B)程序的效率 C)程序设计语言的先进性 D)程序易读性 (3)为了使模块尽可能独立,要求 A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 (4)需求分析阶段的任务是确定 A)软件开发方法 B)软件开发工具 C)软件开发费用 D)软件系统功能 (5)算法的有穷性是指

A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限的用户使用 (6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是 A)快速排序 B)冒泡排序 C)直接插入排序 D)堆排序 (7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是 A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D) 任意顺序 (8)将E-R图转换到关系模式时,实体与联系都可以表示成 A)属性 B)关系 C)键 D)域 (9)有三个关系R、S和T如下: R B C D a 0 k1 b 1 n1 S B C D f 3 h2 a 0 k1

2016年计算机二级c语言题库及答案

2016年计算机二级c语言题库及答案 一、选择题(每小题1分,共40小题,共40分) 1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为( )。 A.20 B.0或35 C.15 D.16 2.下列关于栈的叙述中,正确的是( )。 A.栈底元素一定是最后入栈的元素 B.栈操作遵循先进后出的原则 C.栈顶元素一定是最先入栈的元素 D.以上三种说法都不对 3.下列链表中,其逻辑结构属于非线性结构的是( )0、 A.双向链表 B.带链的栈 C.二叉链表 D.循环链表 4.在关系数据库中,用来表示实体间联系的是( )。 A.网状结构 B.树状结构 C.属性 D.二维表 5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是( )。 A.1:m联系 B.m:n联系 C.1:1联系 D.m:l联系

6.右两个关系R和S如下: 则由关系R得到关系S的操作是( )。 A.自然连接 B.并 C.选择 D.投影 7.数据字典(DD)所定义的对象都包含于( )。 A.软件结构图 B.方框图 C.数据流图(DFD图) D.程序流程图 8.软件需求规格说明书的作用不包括( )。 A.软件设计的依据 B.软件可行性研究的依据 C.软件验收的依据 D.用户与开发人员对软件要做什么的共同理解 9.下面属于黑盒测试方法的是( )。 A.边界值分析 B.路径覆盖 C.语句覆盖 D.逻辑覆盖 10.下面不属于软件设计阶段任务的是( )。 A.制订软件确认测试计划 B.数据库设计 C.软件总体设计 D.算法设计 11.以下叙述中正确的是( )。 A.在C语言程序中,main函数必须放在其他函数的最前面 B.每个后缀为C的C语言源程序都可以单独进行编译 C.在C语言程序中,只有main函数才可单独进行编译

(完整版)历年全国计算机二级C语言题库

50道C语言知识题 1.以下叙述中正确的是 A)用C程序实现的算法必须要有输入和输出操作 B)用C程序实现的算法可以没有输出但必须要有输入 C)用C程序实现的算法可以没有输入但必须要有输出 D)用C程序实现的算法可以既没有输入也没有输出 2.下列可用于C语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line是一个数组,每个数组元素是一个基类型为char为指针变量 B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line是一个指针数组,语句中的*号称为间址运算符 D)定义line是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; C)floata=1,*b=&a,*c=&b;D)doublea=00;b=1.1; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a的ASCII码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段 inta=3,b=5,c=7;

全国计算机二级C选择题试题库第34套

全国计算机二级C选择题题库第34套 1、下列叙述中错误的是 A) 数据结构中的数据元素不能是另一数据结构 B) 数据结构中的数据元素可以是另一数据结构 C) 空数据结构可以是线性结构也可以是非线性结构 D) 非空数据结构可以没有根结点 参考答案:A 数据元素是一个含义很广泛的概念,它是数据的"基本单位",在计算机中通常作为一个整体进行考虑和处理。数据元素可以是一个数据也可以是被抽象出的具有一定结构数据集合,所以数据结构中的数据元素可以是另一数据结构。 满足有且只有一个根结点并且每一个结点最多有一个前件,也最多有一个后件的非空的数据结构认为是线性结构,不满足条件的结构为非线性结构。 空数据结构可以是线性结构也可以是非线性结构。非空数据结构可以没有根结点,如非性线结构"图"就没有根结点。 故选A选项。 2、为了降低算法的空间复杂度,要求算法尽量采用原地工作(in place)。所谓原地工作是指 A) 执行算法时所使用的额外空间固定(即不随算法所处理的数据空间大小的变化而变化) B) 执行算法时所使用的额外空间随算法所处理的数据空间大小的变化而变化 C) 执行算法时不使用额外空间 D) 执行算法时不使用任何存储空间 参考答案:A 算法的空间复杂度是指执行这个算法所需要的内存空间,包括输入数据所占的存储空

间、程序本身所占的存储空间、算法执行过程中所需要的额外空间。 如果额外空间量相对于问题规模(即输入数据所占的存储空间)来说是常数,即额外空间量不随问题规模的变化而变化,则称该算法是原地工作的。 故选A选项 3、某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。现经过一系列的入队操作和退队操作后,front=m,rear=m-1,则该循环队列中的元素个数为 A) m-1 B) m C) 1 D) 0 参考答案:A 循环队列长度为m,由初始状态为front=rear=m,可知此时循环队列为空。入队运算时,首先队尾指针进1(即rear+1),然后在rear指针指向的位置插入新元素。特别的,当队尾指针rear=m+1时,置rear=1。退队运算时,排头指针进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=m+1时,置front=1。 从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列 中的元素。如果rear-front>0,则队列中的元素个数为rear-front个;如果rear-front<0,则队列中的元素个数为rear-front+m 。该题中m-1

计算机二级C语言测试题(含答案)

(第一章) 1. 以下关于算法的描述不正确的是__________。 A. 任何一个问题,它的实现算法是唯一的 B. 描述算法常用的表达工具有流程图、N-S图、PAD图、伪码等 C. 算法的最终实现是计算机程序 D. 正确性和清晰易懂性是一个好算法的基本条件 2.下面是一个加法程序,指出存在的逻辑错误和语法错误。 /* 求整数a和b的和*/ main( ) { int a,b; a=8; b=2000; print("%d\n",a-b); } 3.在每个C程序中都必须包含有这样一个函数,该函数的函数名为__________。 A.main B. MAIN C. name D. function 4.以下叙述不正确的是__________。 A.C程序书写格式规定,一行内只能写一个语句 B.main()函数后面有一对花括号,花括号内的部分称为函数体 C.一个C程序必须有main()函数 D.C规定函数内的每个语句以分号结束 5.以下各标识符中,合法的用户标识符为_________。 A.A#C B.mystery C.main D.ab* 6.已知求解某问题的算法如下: ⑴输入a、b、c三个数。 ⑵将a和b比较,较大者放在a中,小者放在b中。 ⑶将a和c比较,较大者放在a中,小者放在c中。 ⑷将b和c比较,较大者放在b中,小者放在c中。 ⑸依次输出a、b、c。 请根据上述算法描述,把算法的功能表达出来。 【答案】把任意输入的三个数a、b、c按降序排列的顺序输出。 7.一个C语言程序可以包括多个函数,程序总是按照如下_________所描述的方式执行当前的程序。 A.从本程序的main()函数开始,到本程序文件的最后一个函数结束。 B.从本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C.从main()函数开始,到main()函数结束。 D.从本程序文件的第一个函数开始,到本程序main()函数结束。 8.以下叙述正确的是_________。 A.在C程序中,main()函数必须位于程序的最前面。 B.C程序的每行中只能写一条语句。 C.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 D.C语言本身没有输入输出语句。 答案: 1. A 2.语法错误是print, 应该为printf;逻辑错误是a-b,应该为a+b。 3.A 4.A 5.B 6.把任意输入的三个数a、b、c按降序排列的顺序输出。 7.C 8.D

计算机二级c语言1-3章先择题(带答案)

1.第一章第二章 1.C语言的函数体由()括起来。 A)<> B){} C)[] D)() 2.下面叙述错误的是() A)一个C源程序可由一个或多个函数组成 B)构成C语言源程序的基本单位是语句 C)C源程序中大、小写字母是有区别的 D)若一条语句较长,可分写在下一行或多行上 3.下面叙述正确的是() A)每行最多只能写两条语句 B)main()函数必须位于源程序文件的开头C)所有语句都必须以分号;结束 D)程序中必须含有自定义函数 4.C源程序中main()函数的位置()。 A)必须位于程序的最前面 B)必须在自定义函数前面C)必须在系统库函数后面 D)可以在自定义函数后面 5.结构化程序设计不包括()。 A)最优化 B)自顶而下,逐步细化C)模块化设计 D)结构化编码 6.下面叙述中,()不是结构化程序设计中的三种基本结构之一。 A)数据结构B)选择结构C)循环结构D)顺序结构

2.第三章数据类型、运算符和表达式 1.(B )为非法的字符串常量 A)“056”B)‘123’C)““D)“case” 2.( B )为正确的用户标识符。 A)min-5 B)max_at C)3_row D)union 3.以下(D )是正确的变量名。 A) a.bee B) -p11 C) int D) p_11 4.以下(D )是正确的变量名。 A)5f B)if C) f.5 D)_f5 5.以下(D )是正确的常量。 A)E-5 B)1E5.1 C)'a12' D)32766L 6.以下(A )是不正确的字符串常量。 A)'abc' B)"12'12" C)"0" D)" " 7.以下(BC )是正确的字符常量。 A)"c" B)'\\' C)'W' D)"\32a" 8.char型变量存放的是(A)。 A)ASCII代码值 B)字符本身C)十进制代码值 D)内码值 9.( B)为合法的常量。 A)5,236 B) 1.23E+8 C)‘b_k’D) 3.21E-6.5 10.(D)为正确的字符常量 A)‘\084’B)‘bcd’C)‘165’D)‘@’ 11.若有定义:int b=-15;则(D)为正确的赋值表达式。 A)*b=6 B)b=*5 C)b+10=-5 D)b+=b*3 12.若有定义:int x=2;则正确的赋值表达式是(A )。 A)a-=(a*3) B)double(-a) C)a*3 D)a*4=3 13.若有定义:float x=2,y;int a=3 ;语句y=1*(x+a)/3;运行后,y的值为(B)。 A)2.0 B)1.666667 C)1.0 D)0 14.若有定义:int a,b=5;语句a=(b/2)+b%2;运行后,a的值为(A ) A) 3 B) 4 C)0 D)2 15.下面叙述正确的是(B) A)2/3与2%3等价 B)5/(int)4.0与5/4等价C)++2与--3等价 D)++2与3等价 16.若有定义:int a,b=6;语句a=--b;运行后,a、b的值分别是(C)。 A) 6 6 B) 5 6 C) 5 5 D) 6 5 17.若有定义:int i=3,j=6;则表达式(--i)*(j++)的值为( D)。

2020计算机二级C语言考试真题汇总

模拟卷1 1 [填空题] 下列给定程序中,函数fun的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。 例如,若s所指字符串为“baacda”,c中的字符为a,执行后S所指字符串为“baaaacdaa”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: 参考解析: 【参考答案】 【解题思路】 填空1:for语句循环条件是判断是否到达字符串结尾,即当前字符是否为‘\0’。 填空2:while语句用以确定字符串的长度,所以变量n赋初值为0。 填空3:题目要求如果找到与参数c相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题目给出参数为c。 二、程序修改题 2 [简答题] 下列给定程序中函数fun的功能是:逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII 值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。 例如,若主函数中a字符串为“aBCDeFgH”,b字符串为"Abcd",则c中的字符串应为“aBcdeFgH”。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件MODl1.C中,不得增行或删行,也不得更改程序的结构!

参考解析: 【参考答案】 (1)int k=0; (2)while(*p||*q) 【考点分析】 本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。 【解题思路】 (1)变量k存放数组e的下标,因此应初始化为0。 (2)while循环语句的循环条件是判断两个字符串是否到达结尾。 三. 程序设计题 3 [简答题] 规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。 例如,字符串中的内容为:“****A*BC*DEF*G*******”.删除后,字符串中的内容应当是: “****A*BC*DEF*G”。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 参考解析: 【参考答案】 【考点分析】 本题考查:删除字符串尾部+号;删除的主要思想是把不删除的字符保留起来。 【解题思路】 对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号‘\0’。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非*号字符为止,最后在该字符后面加上结束符号‘\0’。

全国计算机等级考试二级C语言真题库之选择题(15)

全国计算机等级考试等级考试真题库之选择题(15) 1.下列链表中,其逻辑结构属于非线性结构的是 A) 二叉链表 B) 循环链表 C) 双向链表 D) 带链的栈 参考答案:A 【解析】在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。 2.设循环队列的存储空间为Q(1: 35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为 A) 15 B) 16 C) 20 D) 0或35 参考答案:D 【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为D选项。 3.下列关于栈的叙述中,正确的是 A) 栈底元素一定是最后入栈的元素 B) 栈顶元素一定是最先入栈的元素 C) 栈操作遵循先进后出的原则 D) 以上说法均错误 参考答案:C 【解析】栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或"后进先出"表,所以选择C。 4.在关系数据库中,用来表示实体间联系的是 A) 属性 B) 二维表 C) 网状结构 D) 树状结构 参考答案:B

历年全国计算机等级考试-二级C语言上机考试题库及答案

1.填空 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.c中 不得增行或删行,也不得更改程序的结构! void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i

二级C语言考试题

1.程序设计语言的语言处理程序是一种___A___。(1分) A 、系统软件 B 、应用软件 C 、办公软件 D 、工具软件 2. 计算机只能直接运行__C____。(1分) A 、高级语言源程序 B 、汇编语言源程序 C 、机器语言程序 D 、任何源程序 3.为解决某一特定问题而设计的指令序列称为___C___。(1分) A 、文档 B 、语言 C 、程序 D 、系统 4. 程序设计中,若用数组名作为函数调用的实参,传递给形参的是___D___。(1分) A 、数组第一个元素的值 B 、数组中全部元素的值 C 、数组元素的个数 D 、数组的首地址 5. 编制一个好的程序首先要确保它的正确性和可靠性,除此以外,通常更注重源程序的______。(1分) A 、易使用性、易维护性和效率 B 、易使用性、易维护性和易移植性 C 、易理解性、易测试性和易修改性 D 、易理解性、安全性和效率 6. 程序设计中,下列结论只有一个是正确的,它是__A____。(1分) A 、递归函数中的形式参数是自动变量 B 、递归函数中的形式参数是外部变量 C 、递归函数中的形式参数是静态变量 D 、递归函数中的形式参数可以根据需要自己定义存储类型 7.__A____是面向对象程序设计语言不同于其它语言的主要特点。 (1分) A 、继承性 B 、消息传递 C 、多态性 D 、静态联编 8. 从软件工程的观点,软件是___B___。(1分) A 、程序的集合 B 、程序、数据和文档的集合 C 、算法的集合 D 、算法和程序的集合 9. 存储器管理主要是对__A____的管理。(1分) A 、内存 B 、外存 C 、内存和外存 D 、文件 10. 设W 为二维数组,其中每个数据元素占用6个字节,行下标i 从0到8 ,列下标j 从2到5,W 中第6行的元素和第4列的元素共占用___A___个字节。(1分) A 、78 B 、72 C 、66 D 、84 11. 函数的形参和实参结合是__C____(1分) A 、传值 B 、传地址 C 、根据情况而定 D 、传名字 12. 下面关于变量的生存周期的说法错误的是_A_____(1分) A 、全局变量的生存周期从程序运行开始到程序结束 B 、局部变量的生存周期从块或函数的开始到块或函数的结束 C 、静态局部变量的生存周期与全局变量相同 D 、静态全局变量的作用域是整个程序 13. 对计算机进行程序控制的最小单位是__C____。(1分) A 、语句 B 、字节 C 、指令 D 、程序 14. 通常面向对象程序设计的英文缩写用__C____。(1分) A 、OOA B 、OOD C 、OOP D 、OOT 15. 在软件设计和编码时,采取___B____等措施都有利于提高软件的可测试性。(1分) A 、不使用标准文本以外的语句,书写详细正确的文档 B 、不使用标准文本以外的语句,采用良好的程序结构 C 、书写详细正确的文档,信息隐蔽 D 、书写详细正确的文档,采用良好的程序结构 16. 程序段和数据段的地址信息在__D____中保存。(1分) A 、进程标识符 B 、处理机状态 C 、进程调度信息 D 、进程控制信息

相关文档
相关文档 最新文档