养殖技术资料大学计算机基础及c语言程序设计补学分复习资料.docx

上传人:b****7 文档编号:10638804 上传时间:2023-02-22 格式:DOCX 页数:101 大小:93.62KB
下载 相关 举报
养殖技术资料大学计算机基础及c语言程序设计补学分复习资料.docx_第1页
第1页 / 共101页
养殖技术资料大学计算机基础及c语言程序设计补学分复习资料.docx_第2页
第2页 / 共101页
养殖技术资料大学计算机基础及c语言程序设计补学分复习资料.docx_第3页
第3页 / 共101页
养殖技术资料大学计算机基础及c语言程序设计补学分复习资料.docx_第4页
第4页 / 共101页
养殖技术资料大学计算机基础及c语言程序设计补学分复习资料.docx_第5页
第5页 / 共101页
点击查看更多>>
下载资源
资源描述

养殖技术资料大学计算机基础及c语言程序设计补学分复习资料.docx

《养殖技术资料大学计算机基础及c语言程序设计补学分复习资料.docx》由会员分享,可在线阅读,更多相关《养殖技术资料大学计算机基础及c语言程序设计补学分复习资料.docx(101页珍藏版)》请在冰豆网上搜索。

养殖技术资料大学计算机基础及c语言程序设计补学分复习资料.docx

养殖技术资料大学计算机基础及c语言程序设计补学分复习资料

大学计算机基础及C语言程序设计补学分复习资料

复习题1

1.选择题

(1)一个栈的初始状态为空。

现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是

A)12345ABCDEB)EDCBA54321C)ABCDE12345D)54321EDCBA

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

A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构

B)在循环队列中,只需要队头指针就能反应队列中元素的动态变化情况

C)在循环队列中,只需要队尾指针就能反应队列中元素的动态变化情况

D)循环队列中元素的个数是由队头和队尾指针共同决定

(3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是

A)O(N)B)O(n2)C)O(log2n)D)O(nlog2n)

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

A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的

B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

C)顺序存储结构能存储有序表,链式存储结构不能存储有序表

D)链式存储结构比顺序存储结构节省存储空间

(5)数据流图中带有箭头的线段表示的是

A)控制流B)事件驱动C)模块调用D)数据流

(6)在软件开发中,需求分析阶段可以使用的工具是

A)N-S图B)DFD图C)PAD图D)程序流程图

(7)在面向对象方法中,不属于“对象”基本特点的是

A)一致性B)分类性C)多态性D)标识唯一性

(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是

A)一对一B)一对多C)多对一D)多对多

(9)在数据管理技术发展的三个阶段中,数据共享最好的是

A)人工管理阶段B)文件系统阶段C)数据库系统阶段D)三个阶段相同

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

RST

A

B

B

C

A

B

C

m

1

1

3

m

1

3

n

2

3

5

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

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

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

A)C程序的基本组成单位是语句B)C程序中每一行只能写一条语句

C)简单C语句必须以分号结束D)C语句必须在一行内写完

(12)计算机能直接执行的程序是

A)源程序B)目标程序C)汇编程序D)可执行程序

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

A)′cd′B)0.1e+6C)″\a″D)″\011″

(14)以下选项中正确的定义语句是

A)doublea;b;B)doublea=b=7;

C)doublea=7,b=7;D)double,a,b;

(15)以下不能正确表示代数式

的C语言表达式是______。

A)2*a*b/c/dB)a*b/c/d*2C)a/c/d*b*2D)2*a*b/c*d

(16)C源程序中不能表示的数制是

A)二进制B)八进制C)十进制D)十六进制

(17)若有表达式(w)?

(--x):

(++y),则其中与w等价的表达式是

A)w==1B)w==0C)w!

=1D)w!

=0

(18)执行以下程序段后,w的值为

intw=′A′,x=14,y=15;

w=((x||y)&&(w<′a′));

A)-1B)NULLC)1D)0

(19)若变量已正确定义为int型,要通过语句scanf(“%d,%d,%d”,&a,&b,&c);给a赋值1,给b赋值2,给c赋值3,以下输入形式中错误的是(u代表一个空格符)

A)uuu1,2,3<回车>B)1u2u3<回车>

C)1,uuu2,uuu3<回车>D)1,2,3<回车>

(20)有以下程序段

inta,b,c;

a=10;b=50;c=30;

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

printf(″a=%db=%dc=%d\n″,a,b,c);

程序的输出结果是

A)a=10b=50c=10B)a=10b=50c=30

C)a=10b=30c=10D)a=50b=30c=50

(21)若有定义语句:

intm[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是

A)m[--i]B)m[2*2]C)m[m[0]]D)m[m[i]]

(22)下面的函数调用语句中func函数的实参个数是

func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));

A)3B)4C)5D)8

(23)若有定义语句:

doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是

A)*pB)x[5]C)*(p+1)D)*x

(24)若有定义语句:

chars[10]=″1234567\0\0″;,则strlen(s)的值是

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

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

A)用户定义的函数中可以没有return语句

B)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值

C)用户定义的函数中若没有return语句,则应当定义函数为void类型

D)函数的return语句中可以没有表达式

(26)以下关于宏的叙述中正确的是

A)宏名必须用大写字母表示B)宏定义必须位于源程序中所有语句之前

C)宏替换没有数据类型限制D)宏调用比函数调用耗费时间

(27)有以下程序

#include

main()

{inti,j;

for(i=3;i>=1;i--)

{for(j=1;j<=2;j++)printf("%d",i+j);

printf("\n");

}

}

程序的运行结果是

A)234B)432C)23D)45

3455433434

4523

(28)有以下程序

#include

main()

{intx=1,y=2,z=3;

if(x>y)

if(y

elseprintf("%d",++y);

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

}

程序的运行结果是

A)331B)41C)2D)1

(29)有以下程序

#include

main()

{inti=5;

do

{if(i%3==1)

if(i%5==2){printf(“*%d”,i);break;}

i++;

}while(i!

=0);

printf(“\n”);

}

程序的运行结果是

A)*7B)*3*5C)*5D)*2*6

(30)有以下程序

#include

intfun(inta,intb)

{if(b==0)returna;

elsereturn(fun(--a,--b));

}

main()

{printf("%d\n",fun(4,2));}

程序的运行结果是

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

(31)有以下程序

#include

#include

intfun(intn)

{int*p;

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

*p=n;return*p;

}

main()

{inta;

a=fun(10);printf("%d\n",a+fun(10));

}

程序的运行结果是

A)0B)10C)20D)出错

(32)有以下程序

#include

voidfun(inta,intb)

{intt;

t=a;a=b;b=t;

}

main()

{intc[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");

}

程序的运行结果是

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

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

(33)有以下程序

#include

structst

{intx,y;}data[2]={1,10,2,20};

main()

{structst*p=data;

printf("%d,",p->y);printf("%d\n",(++p)->x);

}

程序的运行结果是

A)10,1B)20,1C)10,2D)20,2

(34)有以下程序

#include

voidfun(inta[],intn)

{inti,t;

for(i=0;i

}

main()

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

fun(k,5);

for(i=2;i<8;i++)printf("%d",k[i]);

printf("\n");

}

程序的运行结果是

A)345678B)876543C)1098765D)321678

(35)有以下程序

#include

#defineN4

voidfun(inta[][N],intb[])

{inti;

for(i=0;i

}

main()

{intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;

fun(x,y);

for(i=0;i

printf("\n");

}

程序的运行结果是

A)1,2,3,4,B)1,0,7,0,C)1,4,5,9,D)3,4,8,10,

(36)有以下程序

#include

intfun(int(*s)[4],intn,intk)

{intm,i;

m=s[0][k];

for(i=1;im)m=s[i][k];

returnm;

}

main()

{inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};

printf("%d\n",fun(a,4,0));

}

程序的运行结果是

A)4B)34C)31D)32

(37)有以下程序

#include

main()

{structSTU{charname[9];charsex;doublescore[2];};

structSTUa={"Zhao",'m',85.0,90.0},b={"Qian",'f',95.0,92.0};

b=a;

printf("%s,%c,%2.0f,%2.0f\n",b.name,b.sex,b.score[0],b.score[1]);

}

程序的运行结果是

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

(38)假定已建立以下链表结构,且指针p和q已指向如图所示的结点:

datanext

head

a

b

c

 

pq

则以下选项中可将q所指向结点从链表中删除并释放该结点的语句组是

A)(*p).next=(*q).next;free(p);B)p=q->next;free(q);

C)p=q;free(q);D)p->next=q->next;free(q);

(39)有以下程序

#include

main()

{chara=4;

printf(″%d\n″,a=a<<1);

}

程序的运行结果是

A)40B)16C)8D)4

(40)有以下程序

#include

main()

{FILE*pf;

char*s1="China",*s2="Beijing";

pf=fopen("abc.dat","wb+");

fwrite(s2,7,1,pf);

rewind(pf);/*文件位置指针回到文件开头*/

fwrite(s1,5,1,pf);

fclose(pf);

}

以上程序执行后abc.dat文件的内容是

A)ChinaB)ChinangC)ChinaBeijingD)BeijingChina

题号

1

2

3

4

5

6

7

8

9

10

答案

B

D

C

A

D

B

A

B

C

D

题号

11

12

13

14

15

16

17

18

19

20

答案

C

D

A

C

D

A

D

C

B

A

题号

21

22

23

24

25

26

27

28

29

30

答案

C

A

B

A

B

C

D

D

A

B

题号

31

32

33

34

35

36

37

38

39

40

答案

C

A

C

D

B

C

D

D

C

B

2.填空题

(1)请编写函数fun,该函数的功能是:

将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

例如,若二维数组中的数据为

WWWW

SSSS

HHHH

则字符串中的内容应是:

WSHWSHWSHWSH。

注意:

部分源程序在文件PROG1.C中。

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include

#defineM3

#defineN4

voidfun(char(*s)[N],char*b)

{inti,j,k=0;

for(i=0;i

for(j=0;j

b[k++]=s[j][i];

b[k]='\0';

for(j=0;j

for(i=0;i

b[k++]=s[i][j];

b[k]='\0';

}

voidmain()

{FILE*wf;

chara[100],w[M][N]={{′W′,′W′,′W′,′W′},{′S′,′S′,′S′,′S′},{′H′,′H′,′H′,′H′}};

inti,j;

printf("Thematrix:

\n");

for(i=0;i

{for(j=0;j

printf("%3c",w[i][j]);

printf("\n");

}

fun(w,a);

printf("TheAstring:

\n");

puts(a);

printf("\n\n");

/******************************/

wf=fopen("out.dat","w");

fprintf(wf,"%s",a);

fclose(wf);

/*****************************/

}

(2)程序定义了N×N的二维数组,并在主函数中自动赋值。

请编写函数fun(inta[][N],intn),该函数的功能是:

使数组左下半三角元素中的值乘以n。

例如,若n的值为3,a数组中的值为:

则返回主程序后a数组中的值应为:

注意:

部分源程序在文件PROG1.C中。

请勿改动函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

试题程序:

#include

#include

#include

#defineN5

voidfun(inta[][N],intn)

{inti,j;

for(i=0;i

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

a[i][j]=a[i][j]*n;

}

main()

{inta[N][N],n,i,j;

FILE*out;

printf("*****Thearray*****\n");

for(i=0;i

{for(j=0;j

{a[i][j]=rand()%10;

printf("%4d",a[i][j]);

}

printf("\n");

}

n=rand()%4;

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

fun(a,n);

printf("*****THERESULT*****\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

out=fopen("out.dat","w");

for(i=0;i

for(j=0;j

fun(a,9);

for(i=0;i

{for(j=0;j

fprintf(out,"%4d",a[i][j]);

fprintf(out,"\n");

}

fclose(out);

}

(3)请编写函数fun,该函数的功能是:

统计各年龄段的人数。

N个年龄通过调用随机函数获得,并放入主函数的age数组中。

要求函数把0~9岁年龄段的人数放在d[0]中,把10~19岁年龄段的人数放在d[1]中,把20~29岁年龄段的人数放在d[2]中,依此类推,把100岁(含100岁)以上年龄的人数都放在d[10]中。

结果在主函数中输出。

试题程序:

#include

#defineN50

#defineM11

voidfun(int*a,int*b)

{inti,j;

for(j=0;j

b[j]=0;/*数组b初始化为0*/

for(i=0;i

if(a[i]>=100)

b[10]++;/*如果年龄大于等于100,b[10]自增1*/

else

b[a[i]/10]++;/*如果年龄小于100,则将其分别统计到b[a[i]/10]中*/

}

doublernd()

{statict=29,c=217,m=1024,r=0;

r=(r*t+c)%m;

return((double)r/m);

}

voidmain()

{FILE*wf;

intage[N],i,d[M];

intb[N]={32,45,15,12,86,49,97,3,44,52,17,95,63};

for(i=0;i

age[i]=(int)(115*rnd());/*产生一个随机的年龄数组*/

printf("Theoriginaldata:

\n");

for(i=0;i

printf((i+1)%10==0?

"%4d\n":

"%4d",age[i]);/*每行输出10个数*/

printf("\n\n");

fun(age,d);

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

printf("%4d---%4d:

%4d\n",i*10,i*10+9,d[i]);

printf("Over100:

%4d\n",d[10]);

wf=fopen("out.dat","w");

fun(b,d);

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

fprintf(wf,"%4d---%4d:

%4d\n",i*10,i*10+9,d[i]);

fprintf(wf,"Over100:

%4d",d[10]);

fclose(wf);

(4)给定程序中,函数fun的功能是:

将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。

例如,有下列矩阵:

1  2  3  4  534512

1  2  3  4  5

1  2  3  4  5

若k为2,程序执行结果为

3  4  5  1  2

3  4  5  1  2

3  4  5  1  2

注意:

部分源程序在文件BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

试题程序:

#include

#defineM3

#defineN5

voidfun(int(*a)[N],intk)

{inti,j,p,temp;

/**********found**********/

for(p=1;p<= k ;p++)

for(i=0;i

{temp=a[i][0];

for(j=0;j< N-1  ;j++)a[i][j]=a[i][j+1];

a[i][N-1]= temp  ;

}

}

main()

{intx[M][N]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}},i,j;

printf("Thearraybeforemoving:

\n\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

fun(x,2);

printf("Thearrayaftermoving:

\n\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

}

(5)下列给定程序中,函数fun的功能是:

计算N×N矩阵的主对角

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1