模拟试卷(一)
笔试部分(120分钟)
第一部分 计算机基础知识一、选择题(每题1分,共20分)
1、下列字符中,其ASCII编码值最大的是_________。
A、9 B、D C、a D、空格
2、符合国际标准且采用先进的小波分析算法的一种新的图像文件格式是________。
A、BMP B、GIF C、JPEG D、JP2
3、评价图像压缩编码方法的优劣主要看_______。(1)压缩倍数(2)压缩时间(3)算法的复杂度(4)重建图像的质量
A、(1)(2)(3) B、(1)(3)(4) C、(2)(3)(4) D、(1)(2)(3)(4)
4、下列软件中不属于网络应用软件的是________。
A、Photoshop B、Telnet C、FTP D、E-mail
5、下面关于目前最常用的无线通信信道的说法中,错误的是________。
A、无线电波可用于广播、电视和手机,也可以用于传输计算机数据
B、利用微波可将信息集中向某个方向进行定向信息传输,以防止他人截取信号
C、红外线通信一般局限于一个小区域,并要求发送器直接指向接收器
D、激光能在长距离内保持聚焦并能穿透物体,因而可以传输很远距离
6、关于电子邮件服务,下列叙述错误的是________。
A、网络上必须有一台邮件服务器用来运行邮件服务器软件
B、用户发出的邮件会暂时存放在邮件服务器中
C、用户上网时可以向邮件服务器发出收邮件的请求
D、发邮件者和收邮件者如果同时在线,可以不使用邮件服务器
7、一般信息系统分为四个层次,其最外层向用户提供应用操作界面,即________。
A、操作系统和网络层 B、数据管理层 C、用户接口层 D、应用层
8、PC机的标准输入设备是__________,缺少该设备计算机就难于正常工作。
A、键盘 B、鼠标器 C、扫描仪 D、数字化仪
9、下面关于决策支持系统的叙述中,错误的是________。
A、决策支持系统提供分析问题、建立模型、模拟决策过程和方案的环境
B、决策支持系统所需数据源仅来自于单位内部操作层和管理层的信息,它的使用者是操作和管理人员
C、决策支持系统进行辅助决策的技术有模型库、方法库、数据库、数据仓库、联机分析及规则挖掘等
D、决策支持系统中所处理的数据一般是半结构化的或非结构化的
10、按照交易双方分类,电子商务有四种类型,其中不包含________的电子商务。
A、企业内部 B、企业与客户之间 C、企业间 D、政府间
11、计算机有很多分类方法,下面___________是按其内部逻辑结构进行分类的。
A、服务器/工作站 B、16位/32位/64位计算机
B、小型机/大型机/巨型机 D、专用机/通用机
12、下列描述中,错误的是________。
A、按网络覆盖的地域范围可分为LAN、WAN和MAN
B、按网络使用性质,可分为公用网与专用网
C、按网络使用范围及对象可分为企业网、校园网等
D、按网络用途分,可分为物理网及资源共享网
13、下面的程序设计语言中,主要用于科学计算的是________。
A、FORTRAN B、PASCAL C、JAVA D、C++
14、下列关于打印机的叙述中,错误的是________。
A、激光打印机使用PS/2接口和计算机相连
B、喷墨打印机的打印头是整个打印机的关键
C、喷墨打印机属于非击打式打印机,它的优点是能输出彩色图像,经济,低噪音,打印效果好
D、针式打印机虽已逐渐退出市场,但其独特的平推式进纸技术,在打印存折和票据方面具有不可替代的优势
15、计算机对人类社会的进步与发展作用巨大,下面有关其作用的描述中错误的是________。 A、增添了人类发展科技的新手段
B、提供了人类创造文化的新工具
C、引起了人类工作与生活方式的变化
D、创造了人类改造自然的新物质资源
16、人们往往会用“我用的是10M宽带”来形容自己使用计算机网络的方式,这里的10M指的是数据通信中的________指标。
A、信道容量 B、数据传输速率 C、误码率 D、端到端延迟
17、路由器用于连接异构的网络,它收到一个IP数据报后要进行许多操作,这些操作不包含________。
A、地址解析 B、路由选择 C、帧格式转换 D、IP数据报的转发
18、计算机完成最基本操作任务的软件和协助用户完成某项特定任务的软件分别是________。
A、系统软件和系统软件 B、系统软件和应用软件
C、应用软件和系统软件 D、应用软件和应用软件
19、下列不属于计算机软件技术的是________。
A、数据库技术 B、系统软件技术 C、程序设计技术 D、单片机接口技术
20、CD-ROM光盘指的是________。
A、只读光盘 B、随机存取光盘 C、只写一次式光盘 D、可擦写型光盘第二部分 C程序设计一、选择题(每题1分,共10分)
21、以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是
A) if((a>B) &&(b>C) ) k=1; B) if((a>B) ||(b>C) ) k=1
else k=0;
C) if(a<=B) k=0; D) if(a>B) k=1;
 else if(b<=C) k=1; else if(b>C) k=1;
 else k=0;
22、有以下程序
main( )
{ char k; int I;
 for(i=1;i<3;i++)
 { scanf(“%c”,&k);
 switch(k)
 { case ‘0’,printf(“another\n”);
 case ‘1’,printf(“number\n”);
 }
 }
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是
A) another B) another C) another D) number
number number number number
 another number
23、有以下程序
main( )
{ int x=0,y=5,z=3;
 while(z-->0&&++x<5) y=y-1;
 printf(“%d,%d,%d\n”,x,y,z);
}
程序执行后的输出结果是
A) 3,2,0 B) 3,2,-1 C) 4,3,-1 D) 5,-2,-5
24、有以下程序
main( )
{ int i,s=0;
 for(i=1;i<10;i+=2) s+=i+1;
 printf(“%d\n”,s);
}
程序执行后的输出结果是
A) 自然数1~9的累加和 B) 自然数1~10的累加和
C) 自然数1~9中的奇数之和 D) 自然数1~10中的偶数之和
25、有以下程序 main( )
{ int i,n=0;
 for(i=2;i<5;i++)
 { do
 { if(i%3) continue;
 n++;
 } while(!i);
n++;
 }
 printf(“n=%d\n”,n);
}
程序执行后的输出结果是
A) n=5 B) n=2 C) n=3 D) n=4
26、若程序中定义了以下函数
 double myadd(double a,double B)
 { return (a+B) ;}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是
A) double myadd(double a,B) ;
B) double myadd(double,double);
C) double myadd(double b,double A) ;
D) double myadd(double x,double y);
27、有以下程序
char fun(char x,char y)
{ if(x
 return y;
)
main( )
{ int a=’9’,b=’8’,c=’7’;
 printf(“%c\n”,fun(fun(a,B),fun(b,C) ));
}
程序的执行结果是
A} 函数调用出错 B}8 C}9 D}7
28、设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是
A) p=1; B) *q=2; C) q=p; D) *p=5;
29、有以下程序
void f(int v,int w)
{ int t;
 t=v;v=w;w=t;
}
main( )
{ int x=1,y=3,z=2;
 if(x>y) f(x,y);
 else if(y>z) f(y,z);
 else f(x,z);
 printf(“%d,%d,%d\n”,x,y,z);
}
执行后输出结果是
A) 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,1
30、有以下程序段
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是
A) 5 B) 6 C) 8 D) 9
二、填空题(每空1分,共30分)
请将每一个空的正确答案写在答题卡【31】至【60】序号的横线上,答在试卷上不得分.
(一)基本概念题(共5分)
(1)可在整型常数后添加一个"L"或"l"字母表示该数为________
(2)for循环的一般形式为,for(<初始化>;<条件表过式>;<增量>)
其中的"初始化"、"条件表达式"和"增量"都是选择项,即可以缺省,但________不能缺省。
(3)从定义的角度把函数分为________和用户定义函数。
(4)puts()函数只能输出________,不能输出数值或进行格式变换
(5)局部变量是在函数内作定义说明的。其作用域仅限于________
(二)阅读程序,写出运行结果(共10分)
(6) 已知字符A的ACSII码值为65,以下语句的输出结果是【6】
char ch=’B’;
printf(“%c %d\n”,ch,ch);
(7) 有以下语句段
int n1=10,n2=20;
printf(,【7】,,n1.n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10
n2=20
(8) 有以下程序
main( )
{ int t=1,i=5;
 for(;i>=0;i--) t*=i;
 printf(“%d\n”,t);
}
执行后输出结果是【8】 。
(9) 有以下程序
main( )
{ int n=0,m=1,x=2;
 if(!n) x-=1;
 if(m) x-=2;
 if(x) x-=3;
 printf(“%d\n”,x);
}
执行后输出结果是【9】 。
(10) 有以下程序
#include
main( )
{ char ch1,ch2; int n1,n2;
 ch1=getchar(); ch2=getchar();
 n1=ch1-‘0’; n2=n1*10+(ch2-‘0’);
 printf(“%d\n”,n2);
}
程序运行时输入:12<回车>,执行后输出结果是【10】 。
(11) 有以下程序
void f( int y,int *x)
{y=y+*x; *x=*x+y;}
main( )
{ int x=2,y=4;
 f(y,&x);
 printf(“%d %d\n”,x,y);
}
执行后输出的结果是【11】 。
(12) 函数fun的功能是计算xn
double fun(double x,int n)
{ int i; double y=1;
 for(i=1;i<=n;i++) y=y*x;
 return y;
}
主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:m=a4+b4-(a+B) 3。实现这一计算的函数调用语句为【12】 。
(13) 下面rotate函数的功能是:将n行n列的矩阵A转置为A’
请填空
#define N 4
void rotate(int a[][N])
{ int i,j,t;
 for(i=0;i<N;I++)
 for(j=0;【13】;j++)
 { t=a[i][j];
 【14】 ;
 a[j][i]=t;
 }
}
(14) 以下sstrcpy( )函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。
void sstrcpy(char *s,char *t)
{ while(*s++=【15】);}
main( )
{ char str1[100],str2[]=”abcdefgh”;
 sstrcpy(str1,str2);
 printf(“%s\n”,str1);
}
(15) 下列程序的运行结果是:【16】
#include
char *ss(char *s)
{ return s+strlen(s)/2;}
main( )
{ char *p,*str=”abcdefgh”;
 p=ss(str); printf(“%s\n”,p);
}
(三)完善程序(共15分)
1、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
程序源代码:
main()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++)
 for(j=1;j<5;j++) 
for ( 【17】 )
 {
if ( 【18】 )
printf("%d,%d,%d\n",i,j,k);
 }
}
2,一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
程序源代码:
#include "math.h"
main()
{
【19】;
for (【20】)
 { x=sqrt(i+100);
y=sqrt(i+268);
 if(【21】)
printf("\n%ld\n",i);
 }
}
3,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
程序源代码:
main()
{
int i,j,k,n;
printf("'water flower'number is:");
 for(n=100;n<1000;n++)
 {
【22】/*分解出百位*/
【23】/*分解出十位*/
【24】/*分解出个位*/
if(【25】)
 {
 printf("%-5d",n);
 }
 }
printf("\n");
}
4、求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。程序分析:关键是计算出每一项的值。
程序源代码:
main()
{
 int a,n,count=1;
 long int【26】;
 printf("please input a and n\n");
 scanf("%d,%d",【27】);
 printf("a=%d,n=%d\n",a,n);
 while(【28】)
 {
tn=tn+a;
【29】
a=a*10;
【30】
 }
printf("a+aa+...=%ld\n",sn);
} 上机部分(70分钟)
一、改错题(18分)
[程序功能]
给定程序MODI1.C中函数 fun 的功能是:将在字符串s中出现、而未在字符串t中出现的字符形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符。
例如:当s = "AABCDE",t = "BDFG"字符。
 u中的字符串为"AACE"。
请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
[含有错误的源程序]
Modi1.c
#include
#include
#include
void fun (char *s,char *t,char u)
{ int i,j,sl,tl;
 sl = strlen(s); tl = strlen(t);
 for (i=0; i
 { for (j=0; j
 if (s[i] == t[j]) break;
 if (j>tl)
 *u++ = s[i];
 )
 *u = '\0';
)

main()
{ char s[100],t[100],u[100];
 clrscr();
 printf("\nPlease enter string s:"); scanf("%s",s);
 printf("\nPlease enter string t:"); scanf("%s",t);
 fun(s,t,u);
 printf("the result is,%s\n",u);
}
[要求]
1.将上述程序录入到文件myfl.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。
3.改正后的源程序(文件名myfl.c)保存在考试软盘的根据目录中供阅卷使用,否则不予评分。
二、编程题(22分)
[程序功能]
有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。
[要求]
1.源程序文件名必须取为myf2.c,输出结果文件名为 myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
3.源程序文件和运行结果文件均需保存在考试盘根据目录中供阅卷使用。
4.不要复制扩展名为obj和exe的文件到考试盘上。
模拟试卷(一)参考答案笔试部分:
第一部分:计算机基础部分
1-10,CDBAD DDBBD
11-20,BCAAD AABDA
第二部分 C语言程序设计
21~30,ACBDD ADDCD
填空题, 1、长整型数
2、;
3、库函数
4、字符串
5、函数内
6、B 66
 7、n1=%d\nn2=%d
 8、0
9、-4
10、12
11、8 4
12、fun(a,4)+fun(b,4)-fun(a+b,3);
13、j<=i
14、a[i][j]=a[j][i]
15、*t++
16、6
17,k=1;k<5;k++
18,i!=k&&i!=j&&j!=k
19,long int i,x,y,z;
20,i=1;i<100000;i++
21,x*x==i+100&&y*y==i+268
22,i=n/100;
23,j=n/10%10;
24,k=n%10;
25,i*100+j*10+k==i*i*i+j*j*j+k*k*k
26,sn=0,tn=0
27,&a,&n
28,count<=n
29,sn=sn+tn;
30,++count;
上机部分:
一、改错题(18分)
Modi1.c
#include
#include
#include

/************found************/
void fun (char *s,char *t,char u) /*void fun (char *s,char *t,char *u)*/{ int i,j,sl,tl;
 sl = strlen(s); tl = strlen(t);
 for (i=0; i
 { for (j=0; j
 if (s[i] == t[j]) break;
/************found************/
 if (j>tl) /*if (j>=tl)*/
 *u++ = s[i];
 )
 *u = '\0';
)

main()
{ char s[100],t[100],u[100];
 clrscr();
 printf("\nPlease enter string s:"); scanf("%s",s);
 printf("\nPlease enter string t:"); scanf("%s",t);
 fun(s,t,u);
 printf("the result is,%s\n",u);
}
二、编程题(22分)
#include "stdio.h"
main()
{ FILE *fp;
int i,j,n,ni;
char c[160],t,ch;
if((fp=fopen("A","r"))==NULL)
{printf("file A cannot be opened\n");
exit(0);}
printf("\n A contents are,\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{c[i]=ch;
putchar(c[i]);
}
fclose(fp);
ni=i;
if((fp=fopen("B","r"))==NULL)
{printf("file B cannot be opened\n");
exit(0);}
printf("\n B contents are,\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{c[i]=ch;
putchar(c[i]);
}
fclose(fp);
n=i;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(c[i]>c[j])
{t=c[i];c[i]=c[j];c[j]=t;}
printf("\n C file is:\n");
fp=fopen("C","w");
for(i=0;i<n;i++)
{ putc(c[i],fp);
putchar(c[i]);
}
fclose(fp);
}
模拟试卷(二)
笔试部分(120分钟)
第一部分 计算机基础知识一、选择题(每题1分,共20分)
1、汉字的显示与打印,需要有相应的字形库支持,汉字的字形信息主要有两种描述方法:点阵字形和_______字形。
A、仿真 B、轮廓 C、矩形D、 模拟
2、关于数据的逻辑结构与存储结构之间的关系,下述说法中正确的是________。
A、两者没有任何关系
B、逻辑结构是指数据元素间的逻辑关系,它决定了数据在计算机中的存储方式
C、存储结构讨论在计算机中怎样存储数据,与逻辑结构无关
D、数据的存储结构是逻辑结构在计算机存储器中的实现
3、设关系模式R有50个元组,关系模式S有30个元组,则R与S作并运算后得到的新的关系模式中的元组个数一定为_____。
A、80个 B、50个 C、30个 D、≤80个
4、下列关于USB接口的说法错误的是________。
A、一般来说,1394接口的传输速度低于USB接口
B、一个USB接口通过USB集线器可以连接多个设备
C、USB的中文含义是通用串行总线
D、USB接口符合即插即用规范,即不需要关机或重启计算机,就可以插拔设备
5、与CPU执行的算术与逻辑运算操作相比,I/O操作有许多不同特点。下列关于I/O操作的描述错误的是________。
A、I/O操作速度慢于CPU
B、多个I/O设备能同时工作
C、多个I/O设备能同时工作
D、每个I/O设备都有自己专用的控制器
6、在PC机中负责各类I/O设备控制器与CPU、存储器之间相互交换信息、传输数据的一组公用信号线称为________。
A、I/O总线 B、CPU总线 C、存储器总线 D、前端总线
7、计算机开机启动时所执行的一组指令被永久存放在________中。
A、CPU B、硬盘 C、ROM D、RAM
8、在数据库设计中,组成E-R图的成分有________。
A、实体集、联系、属性
B、关系、联系、属性
C、实体集、记录、字段
D、文件、记录、字段
9、有一个关系模式:学生(学号,姓名,性别),规定其主键(学号)的值域是8个数字组成的字符串,这一规则属于________。
A、用户自定义完整性约束
B、实体完整性约束
C、参照完整性约束
D、主键完整性约束
10、在关系数据模式中,若属性A是关系R的主键,则A不能接受空值或重值,这是由关系数据模型_________规则保证的。
A、实体完整性
B、引用完整性
C、用户自定义完整性
D、默认
11、在信息系统的结构化生命周期开发方法中,绘制E-R图属于________阶段的工作。
A、系统规划 B、系统分析 C、系统设计 D、系统实施
12、包过滤器是能阻止IP包任意通过路由器的软件,关于包过滤器,下列叙述不正确的是________。
A、能检查包的源地址
B、能检查包的目的地地址
C、能检查包的应用层协议
D、能检查它所包含的文件格式与内容
13、CPU不能直接读取和执行存储在________中的指令。
A、cache B、RAM C、ROM D、硬盘
14、文本编辑的目的是使文本正确、清晰、美观,下列________操作不属于文本处理而属于文本编辑功能。
A、添加页眉和页脚
B、统计文本中字数
C、文本压缩
D、识别并提取文本中的关键词
15、为了保证对频谱很宽的音乐信号采样时不失真,其取样频率应在______以上。
A、40kHz B、8kHz C、12kHz D、16kHz
16、网络上可以共享的资源有________。
A、打印机,数据,软件等
B、调制解调器,内存,图像等
C、传真机,数据,显示器,网卡
D、调制解调器,打印机,缓存
17、下列关于Web动态文档的说法正确的是________。
A、它在浏览期间内容会自动持续更新
B、它在浏览期间内容不会自动持续更新
C、它就是主动Web 文档
D、它的内容不会随访问时间而发生变化
18、下列关于信息系统的叙述中错误的是_________。
A、电话是一种双向的、点对点的、以信息交互为主要目的的系统
B、网络聊天是一种双向的、以信息交互为目的的系统
C、广播是一种点到面的、双向信息交互系统
D、Internet是一种跨越全球的多功能信息系统
19、若十进制数"-57"在计算机内部表示为11000111,则其表示方式为___。
A、ASCII码 B、反码 C、原码 D、补码
20、某些鼠标器左右两按键的中间有一个滚轮,它的作用是________。
A、控制鼠标器在桌面的移动
B、控制屏幕内容进行上下移动,与窗口右边框滚动条的功能一样
C、分隔鼠标的左键和右键
D、调整鼠标的灵敏度第二部分 C程序设计一、选择题(每题1分,共10分)
21.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
 A)abs(x-y)<10 B)x-y>-10&& x-y<10
 C)@(x-y)<-10||!(y-x)>10 D)(x-y)*(x-y)<100
22.有以下程序
 main()
 {
 int a=3,b=4,c=5,d=2;
 if(a>b)
 if(b>c)
 printf("%d",d++ +1);
 else
 printf("%d",++d +1);
 printf("%d\n",d);
 }
 程序运行后的输出结果是
 A)2 B)3 C)43 D)44
23.下列条件语句中,功能与其他语句不同的是
 A) if(a) printf("%d\n",x); else printf("%d\n",y);
 B) if(a==0) printf("%d\n",y); else printf("%d\n",x);
 C) if (a!=0) printf("%d\n",x); else printf("%d\n",y);
 D) if(a==0) printf("%d\n",x); else printf("%d\n",y);
24.有以下程序
 main()
 { int i=0,x=0;
 for (;;)
 {
 if(i==3||i==5) continue;
 if (i==6) break;
 i++;
 s+=i;
 };
 printf("%d\n",s);
 }
 程序运行后的输出结果是
 A)10 B)13 C)21 D)程序进入死循环
25.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是B
 A)for(i=1,p=1;i<=5;i++) p*=i;
 B)for(i=1;i<=5;i++){ p=1; p*=i;}
 C)i=1;p=1;while(i<=5){p*=i; i++;}
 D)i=1;p=1;do{p*=i; i++; }while(i<=5);
26.有以下程序
 main()
 { char a,b,c,d;
 scanf("%c,%c,%d,%d",&a,&b,&c,&d);
 printf("c,%c,%c,%c\n",a,b,c,d);
 }
 若运行时从键盘上输入:6,5,65,66。则输出结果是
 A)6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,6
27)以下能正确定义二维数组的是
 A)int a[][3]; B)int a[][3]=2{2*3};
 C)int a[][3]={}; D)int a[2][3]={{1},{2},{3,4}};
28,有以下程序
 int f(int a)
 { return a%2; }
 main()
 { int s[8]={1,3,5,2,4,6},i,d=0;
 for (i=0;f(s);i++) d+=s;
 printf("%d\n",d);
 }
 程序运行后的输出结果是
 A)9 B)11 C)19 D)21
29.若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是
A)p+1 B)*(p+3)
C)*(p+1)+3 D)*(p[0]+2))
 30.有以下程序
 main()
 { int a=7,b=8,*p,*q,*r;
 p=&a;q=&b;
 r=p; p=q;q=r;
 printf("%d,%d,%d,%d\n",*p,"q,a,b);
 }
 程序运行后的输出结果是
 A)8,7,8,7 B)7,8,7,8 C)8,7,7,8 D)7,8,8,7
二、填空题(每空1分,共30分)
请将每一个空的正确答案写在答题卡【31】至【60】序号的横线上,答在试卷上不得分.
(一)基本概念题(共5分)
(1) 格式符%3d 表示输出3位整型数,不够3位时________对齐。
(2) 若用方括号中的整数n来表示数组元素的总数,则数组的第一个元素的下标为0,最后一个为________。
(3) 在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。总是以________作为串的结束符
(4) main()
{
int x,y;
x=50;
y=x>70?100:0;
}
本例中,y将被赋值0。如果x=80,y将被赋值________。
(5) 关系运算和逻辑运算表达式的结果只能是________。
(二)阅读程序,写出运行结果(共10分)
 6.以下程序段的输出结果是 _____
 int i=9;
 printf("%o\n",i);
 7.以下程序运行后的输出结果是 _______ 。
 main()
 { int a,b,c;
 a=25;
 b=025;
 c=0x25;
 printf("%d %d %d\n',a,b,c);
 }
 8.以下程序运行后的输出结果是 ______ 。
 main()
 { int p[7]={11,13,14,15,16,17,18};
 int i=0,j=0;
 while(i<7 && p%2==1) j+=p[i++];
 printf("%d\n",j);
 }
 9.以下程序运行后的输出结果是 _______ 。
 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;
 }
 printf("%d %d\n",a,b);
 }
 10.以下程序运行后的输出结果是 _______ 。
 main()
 { int a[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
 int i=0,j=0,s=0;
 while(i++<4)
 {
 if(i==2||i==4) continue;
 j=0;
 do{ s+= a[j]; j++; } while(j<4);
 }
 printf("%d\n",s);
 }
 11.以下程序运行后的输出结果是 _____ 。
 main ()
 { char a[]="Language",b[]="Programe";
 char *p1,*p2; int k;
 p1=a; p2=b;
 for(k=0;k<=7;k++)
 if(*p1+k)==*(p2+k)} printf("%c",*(p1+k));
 }
 12.以下程序运行后的输出结果是 _______ 。
 main()
 { char a[]="123456789",*p; int i=0;
 p=a;
 while(*p)
 { if(i%2==0) *p='*";
 p++;i++;
 }
 puts(a);
 }
 13.以下程序中,for循环体执行的次数是 _____ 。
 #define N 2
 #define M N+1
 #define K M+1*M/2
 main()
 { int i;
 for(i=1;i<K;I++)
 {,.,}
,..
 }
14、以下程序的输出结果为 。
#define PI 3.14
#define S(x) PI*x*x
main()
{ int a=2;
printf("%4.1f\n",6.28/S(a)); }
15,以下程序运行时输出结果为 。
#include<stdio.h>
int func(int a)
{ static int c=1;
c*=a; return c;
}
void main()
{ int b=1,i;
for(i=2;i<4;i++)
b=b+func(i);
printf("\n%d",b);
}
(三)完善程序(共15分)
1.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
 第10次落地时,共经过多少米?第10次反弹多高?
程序分析:见下面注释程序源代码:
main()
{
float sn=100.0,hn=sn/2;
int n;
for(【16】)
 {
【17】/*第n次落地时共经过的米数*/
【18】/*第n次反跳高度*/
 }
printf("the total of road is %f\n",sn);
printf("the tenth is %f meter\n",hn);
}
2,对10个数进行排序(从小到大)
程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
程序源代码:
#define N 10
main()
{int i,j,min,tem,a[N];
/*input data*/
printf("please input ten num:\n");
for(i=0;i<N;i++)
{
printf("a[%d]=",i);
scanf("%d",【19】);}
printf("\n");
for(i=0;i<N;i++)
printf("%5d",【20】);
printf("\n");
/*sort ten num*/
for(i=0;i<N-1;i++)
{min=i;
for(【21】)
if(a[min]>a[j])【22】
tem=a[i];
a[i]=a[min];
a[min]=tem;
}
/*output data*/
printf("After sorted \n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
}
3,有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后, 此元素之后的数,依次后移一个位置。
程序源代码:
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int【23】;
printf("original array is:\n");
for(i=0;i<10;i++)
 printf("%5d",a[i]);
printf("\n");
printf("insert a new number:");
scanf("%d",【24】);
end=a[9];
if(【25】)
 a[10]=number;
else
 {for(i=0;i<10;i++)
{ if(【26】)
 {temp1=a[i];
a[i]=number;
 for(j=i+1;j<11;j++)
 {temp2=a[j];
a[j]=temp1;
temp1=temp2;
 }
 【27】
 }
}
}
for(i=0;i<11;i++)
 printf("%6d",a[i]);
}
4,输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
程序源代码:
main()
{int number[10];
input(number);
max_min(number);
output(number);
}
input(number)
int number[10];
{int i;
for(i=0;i<9;i++)
 scanf("%d,",&number[i]);
 scanf("%d",&number[9]);
}
max_min(array)
int array[10];
{int *max,*min,k,l;
int *p,*arr_end;
arr_end=array+10;
【28】
for(【29】)
 if(【30】) max=p;
 else if(*p<*min) min=p;
 k=*max;
 l=*min;
 *p=array[0];array[0]=l;l=*p;
 *p=array[9];array[9]=k;k=*p;
 return;
}
output(array)
int array[10];
{ int *p;
for(p=array;p<array+9;p++)
 printf("%d,",*p);
printf("%d\n",array[9]);
}
上机部分(70分钟)
一、改错题(18分)
[程序功能]
给定程序MODI1.C中函数 fun 的功能是:把在字符串s中出现的每个字符,紧随其后重复出现一次,形成一个新串放在t中,t中字符按原字符串中字符顺序排列。
 例如:当s中的字符串为:"ABAABBCCDDEE"。
 则t中的字符串应为:"AABBCCDDEE"。
 请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
[含有错误的源程序]
Modi1.c
#include
#include
#include
void fun (char s,char t)
{ int i,sl;
 sl = strlen(s);
 for (i=0; i
 { t[2*i] = s[i];
 t[2*i+1] = s[i];
 }
t[2*sl] = '0';
)
main()
{ char s[100],t[100];
 clrscr();
 printf("\nPlease enter string s:"); scanf("%s",s);
 fun(s,t);
 printf("The result is,%s\n",t);
}
[要求]
1.将上述程序录入到文件myfl.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。
3.改正后的源程序(文件名myfl.c)保存在考试软盘的根据目录中供阅卷使用,否则不予评分。
二、编程题(22分)
[程序功能]
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
[要求]
1.源程序文件名必须取为myf2.c,输出结果文件名为 myf2.out。
2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
3.源程序文件和运行结果文件均需保存在考试盘根据目录中供阅卷使用。
4.不要复制扩展名为obj和exe的文件到考试盘上。
模拟试卷(二)参考答案笔试部分:
第一部分:计算机基础部分
1-10,BDDAC ACBAA
11-20,BDDAA AACDB
第二部分 C语言程序设计
21-25,CADDB6-30:ACADC
填空题: 1,右
2,n-1
3,\0
4,100
5,1或0
6,11
 7,25 21 37
8,24
9,21
10,92
11,gae
12,1*3*5*7*9
13,4
14,8.0
15,9
 16,n=2;n<=10;n++
17,sn=sn+2*hn;
18,hn=hn/2;
19,&a[i]
20,a[i]
21,j=i+1;j<N;j++
22,min=j;
23,temp1,temp2,number,end,i,j
24,&number
25,number>end
26,a[i]>number
27,break;
28,max=min=array;
29,p=array+1;p<arr_end;p++
30,*p>*max 上机部分:
一、改错题(18分)
Modi1.c
#include
#include
#include
/************found************/
void fun (char s,char t) /参考答案:void fun (char *s,char *t)/
{ int i,sl;
 sl = strlen(s);
 for (i=0; i
 { t[2*i] = s[i];
 t[2*i+1] = s[i];
 }
/************found************/
t[2*sl] = '0'; /参考答案:t[2*sl] = '\0';/
)
main()
{ char s[100],t[100];
 clrscr();
 printf("\nPlease enter string s:"); scanf("%s",s);
 fun(s,t);
 printf("The result is,%s\n",t);
}
二、编程题(22分)
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
 *(p+i)=i+1;
 i=0;
 k=0;
 m=0;
 while(m<n-1)
 {
 if(*(p+i)!=0) k++;
 if(k==3)
 { *(p+i)=0;
 k=0;
 m++;
 }
i++;
if(i==n) i=0;
}
while(*p==0) p++;
printf("%d is left\n",*p); }
模拟试卷(三)
笔试部分(120分钟)
第一部分 计算机基础知识
1、采用定长分组交换技术的广域网是________。
A、综合业务数字网
B、ISDN
C、帧中继网FR
D、ATM网 X.25网
2、在TCP/IP协议中,关于IP数据报叙述错误的是________。
A、IP数据报头部信息中只包含目的地IP地址
B、IP数据报的长度可长可短
C、IP数据报包含IP协议的版本号
D、IP数据报包含服务类型
3、IP地址是因特网中使用的重要标识信息,如果IP地址的主机号部分每一位均为0,是指________。
A、因特网的主服务器
B、因特网某一子网的服务器地址
C、该主机所在物理网络本身
D、备用的主机地址
4、若网络中很多用户都需要安装使用同一软件时,则应购买该软件的________。
A、许可证 B、专利 C、著作权 D、多个拷贝
5、FDDI网是光纤分布式数字接口网的简称,就计算机网络的拓扑结构来说,FDDI网属于________结构。
A、星型网 B、环型网 C、树型网 D、总线网
6、①Windows ME ②Windows XP ③Windows NT ④Frontpage ⑤Access97 ⑥Unix ⑦Linux ⑧MS-DOS 对于以上列出的8个软件,________均为操作系统软件
A、①②③④ B、①②③⑤⑦ C、①③⑤⑥⑧ D、①②③⑥⑦⑧
7、银行使用计算机实现通存通兑,属于计算机在______方面的应用。
A、辅助设计 B、数值计算 C、数据处理 D、自动控制
8、下面关于程序设计语言的说法错误的是________。
A、FORTRAN语言是一种用于数值计算的面向过程的程序设计语言
B、Java是面向对象用于网络环境的程序设计语言
C、C语言与运行支撑环境分离,可移植性好
D、C++是面向过程的语言,VC++是面向对象的语言
9、一个程序中的算术表达式,如X+Y-Z,属于高级程序语言中的________成分。
A、数据 B、运算 C、控制 D、传输
10、下列关于专家系统的叙述中,错误的是________。
A、专家系统是一种知识信息的加工处理系统
B、专家系统已在各个领域得到全面广泛应用
C、专家系统通常包括特定领域问题知识库及称为推理机的程序模块
D、专家系统可模仿人类专家的思维活动,通过推理与判断来求解问题
11、按照信息系统的分类,以下不属于计算机辅助技术系统的是________。
A、CAD B、CAM C、CAPP D、OA
12、在城市建设、土地规划、房地产管理等应用领域中使用的信息系统通称为________。
A、办公自动化系统 B、决策系统 C、遥感系统 D,地理信息系统
13、磁盘的平均访问时间指的是________。
A、数据所在的扇区转到磁头下的时间
B、磁头移动到数据所在的磁道所需要的平均时间
C、平均寻道时间与平均等待时间之和
D、磁盘转动一周所需要的时间
14、PC机所使用的硬盘大多使用________接口与主板相连接。
A、SCSI B、FAT C、PS/2 D、IDE
15、目前计算机中用于描述音乐乐曲并由声卡合成出音乐来的语言(规范)为____________。 A、MP3 B、JPEG2000 C、MIDI D、XML
16、目前市场上有一种称为“手写笔”的设备,用户使用笔在基板上书写或绘画,计算机就可获得相应的信息。“手写笔”是一种________。
A、随机存储器 B、输入设备 C、输出设备 D、通信设备
17、关系是一种规范化二维表中行的集合,下列有关关系的叙述中,错误的是________。
A、每个属性对应一个值域,不同的属性不能有相同的值域
B、关系中所有的域都应是原子数据
C、关系中不允许出现相同的元组
D、表中元组的次序可以交换
18、计算机的层次式存储器系统是指________。
A、RAM和ROM
B、软盘、硬盘和光盘
C、软盘、硬盘和磁带
D、cache,主存储器、外存储器和后备存储器
19、下面是有关DRAM和SRAM存储器芯片的叙述:① SRAM比DRAM存储电路简单 ② SRAM比DRAM成本高③ SRAM比DRAM速度快 ④ SRAM需要刷新,DRAM不需要刷新;其中正确的是________。
A、①和② B、②和③ C、③和④ D、①和④
20、PC机的机箱外常有很多接口用来与外围设备进行连接,但________接口不在机箱外面。 A、RS-232E B、PS/2 C、IDE D、USB
第二部分 C语言程序设计一、选择题
21.以下选项中,不能正确赋值的是 21 。
(A)char s1[10];s1="Ctest"; (B)char s2[]={‘C’,‘t’,’e’,‘s’,‘t’};
(C)char s3[20]="Crest"; (D)char *s4="Ctest\n"
22.以下程序的输出结果是 22 。
amovep (int*p,int a[3][3],int n)
{int,j;
for(i=0;i<n;i++)
for(i=0;j<n;j++){*p=a[i][j];p++;}
}
main()
{int*p,a[3][3]={{10,30,50},{20,40,60}};
p=(int*)malloc(100);
amovep(p,a,3);
{printf(“%d %d\n”,p[2],p[2],p[5]);free(p)
}
(A)50 60 (B)20 50 (C)30 40 (D)程序错误
23.下列程序段的输出结果是 (23) 。
void fun(int*x,int*y)
{printf(“%d %d”,*x*y);*x=3;*y=4;}
main()
{ int x=l,y=2;
fun(&y,&x);
print f (“%d %d”,x,y);
(A)1 2 3 4 (B)1 2 1 2 (C) 2 1 4 3 (D)2 1 1 2
24.下列程序的输出结果是 (24) 。
main()
{char a [10]={9,8,7,6,5,0,1,2,3,4},*p=a+5;
printf(“%d”,*--p)
}
(A) a[4]的地址 (B)非法 (C)3 (D)5
25.设有以下说明语句
struct st
{ int x ;float y; char z;}stu;
则下面的叙述中不正确的是 (25),
(A) x,y,z都是结构体成员名 (B) struct st是结构体类型
(C) struct结构体类型的关键字 (D) stu是结构体类型名
26.以下程序的输出结果是 (26)
long fun(int n)
{long s;
if(n= =1‖n= =2) s=2;
else s=n+fun(n-1);
return s;
}
main ()
{printf ("%1d\n",fun(3));}
(A)1 (B)3 (C)5 (D)6
27.已知A盘根目录下的一个文本数据文件data.dat中存储了10个int型数据,若需要修改该文件中已经存在的若干个数据的值,只能调用一次fopen函数,已有声明语句 FILE*fp;,则fopen函数的正确调用形式是 (27) 。
(A) fp=fopen(“a:\\data.dar”,”r+”); (B) fp=fopen(“a:\\data.dat”,”w+”);
(C) fp=fopen(“a:\\data.dar”,”a+”); (D) fp=fopen(“a:\\data.dar”,”w+”);
28.在以下程序中,需要在fun函数中声明一个int型的变量,以下选项中 (28) 不能用作该变量的名字。
#include<math.h>
int y;
main ()
{int a=l;
fun(a)
}
int fun(int x)
{int ;/*int型变量声明语句位置*/
…… /* 若干执行语句*/
)。
(A) x (B) y (C)fabs (D)fun
29.设有定义如下;
typedef stuct{int x,y;}POINT:
typedef enum{RED,YELLOW,BLUE,GREEN}COLOR;
struct
{POINT xy;COLOR c;}pixel,*p=& pixel;
以下对变量pixel的赋值操作中正确的是 (29) 。
(A)pixel={l,2,BLUE};
(B)p->xy.x=10;p->xy· y=20,p->c=BLUE
(C)scan{(“%d%d%d”,p->xy.x,p->xy·y,&pixel.c);
(D) )scan{(“%d%d”,&pixel.c);pixel.color=2:
30.执行了以下程序段后x,w的值为 (30) 。
int x=0,y=2,z=3,w;
if(x++)w=x;
else if(x++&&y>=1)w=y:
else if(x++&&z>1)w=z;
(A)0,1 (B)1,2 (C)3,2 (D)2,2
二、填空题(请将答案填写在答题纸的相应答题号内,每个答案:只占一行)
● 基本概念题,共5分
1.在C语言中,如果不对函数作类型说明,则函数的隐含类型为 (1) 。
2.在程序中需要调用库函数abs时必须包含头文件 (2) 。
3.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。
st=(char) (3) ;
4.当调用函数时,实参是一个数组名,则向函数传送的是 (4) 。
5.将字符串常量“New Year”存储于内存中时,占用 (5) 个字节。
●阅读程序段写出运行结果题(共10分)
6.以下程序的输出结果是 (6) 。
void fun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf(”%d%d”,a,b);
}
7.以下程序的输出结果是 (7)
int a,b;
void fun()
{a=100;b=200;}
main()
{int a=5,b=7;
fun();
printf(“%d%d\n”,a,b);
}
8.以下程序的输出结果是 (87) 。
#defin MAX(x,y)(x)>(y)?(x):(y)
main()
{int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
ptintf(“%d\n”,t);
}
9.以下程序的输出结果是 (9) 。
void fun()
{static int a=0;
a+=3;printf(“%d”,a);
}
main()
{int c;
for(c=1;c<4;c++)
prinft(“\n”);
}
10.以下程序运行时输出第一行为 (10) 第二行为 (11) 。
[程序]
-int m=10,n=5,a[10]={10,15,20};
void f1(void);
void f2(int m);
main()
{ int i;
for(i=0;i<7;i++)f1()
f2(1);printf(“\n%d”,%d,a[m],a[n]) ;
void fl (void)
{ static int n=3;
a[n]=a[n-1]+a[n-2]+a[n-3];n++;
}
void f2(int m)
{ for(;m<3;m+=2)
{ int m;
for(m=1;m<4;m++)
printf(“%d,”,a[m++]);
}
}
11.以下程序运行后输出第一行为 (12),第二行为 (13) 。
[程序]
extern int m1,m2;
void fun(int n,int*p1,int*p2)
{int i;
*p1=1;*p2=l;
for(I=1;i<=n;i++){*p1+=3;*p2*=3;}
m1+=*p1;m2+=*p2;
}
int ml,m2;
main()
{ int i,k1[4],k2[4];
for(i=0;i<4;i++)
fun(i,&k1[i],&k2[I]);
for(i=0;i<4;i++) printf(“%d,”,k1[i]);
printf(”%d\n”,m1);
for(i=0;i<4;i++)printf(”%d,”,k2[i]);
printf(”%d”,m2);
第二行为——iUl—。
}
12.[程序]
main()
{int a[3][3],i,j;
numlist(&a[0][0],9);
for(i=0;i<3;i++)
{for(j=0;i<3 i++)printf(“%d,”,a[i][j]);
printf(“\n”);
}
}
numlist (int*p,int n)
{int i;
for (i=0;i<n;i++)p[i]=num(i);
}
num(int n)
{if(n= =0)return l;
return num(n-1)+1;
}
程序执行时输出的第一行是 (14) 第二行是 (15) 。
● 完善程序题(共15分)
13.以下程序用来输出结构体变量stu所占存储单元的字节数,请填空
struct st
{char name[20];double score;);
main()
{struct st stu;
printf(“stu size:%d\n”,sizeof( (16) ));
}
14.以下程序中函数code完成一个字符串的解密功能,将密文s1字符串中的字符经过变;换后保存到s2指向的字符数组中。二维数组mi保存了一个明码密码对照表,第一行是明码字符,第二行是对应的密码字符。解密方法:从密文s1字符串中每取一个字符,均在mi表第二;行中查找有无该字符,若找到则将对应的第一行明文中的字符放入s2中,否则将s1中原来的字符放入32中。
[程序]
#include<string.h>
#include<stdio.h>
char mi[2][10]={“abcdefjhi”,”123456789"}
void code(char*s1,char*s2)
{ int n,i,j;
for(n=0;sl[n]!=‘\0’;n++)
{ for(i=0;i<10&&s1[n]!= (17) ;i++);
if(i<10)s2[n]
else s2[n]=s1[n];
}
s2[n] (19) ;
}
main()
{ char sl[80]=”85llo,6r95n4!”,s2[80];
code(s1,s2);
puts(s2);
}
15.以下程序段打开文件test.dat后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。
FILE*my f; long len;
f1= (20) (“test.dat”,”r+”);
fseek(f1,0,SEEK_END);len=ftell(f1);
fclose(f1);
printf(“%1d\n”,len);
16.以下程序先建立一个带有头节点的单向链表然后输出链表,链表结点中的数据通过键盘输入,当输入数据为小于0时结束(链表头结点的data域不放数据,表空的条件是ph->next= =NULL)。
#include<stdio.h>
struct 1ist
{int data;struct 1ist*next;};
struct list*creat list()
{
struct list*p,*q,*temp;
int a;
temp=(struct list*)mallof(sizeof(struct list);
p=q=temp;
print f(“输入一列整数,以0结束:\n”);
scanf(“%d”,&a);
while(a>0)
{
p=(Struct list*)malloc(sizeof(struct list));
p->data=a;
q->next=p;
(21) ;
scanf(“%d”,&a);
}
(22) =NULL
return(temp);
}
main()
{
struct list*head,*p;
head=creat list();
p=head;
printf(“\n”);
while( (23) !=NULL)
{
p=p->next;
printf("%5d--",p->data);
}
printf (“\n”);
}
17.完整以下程序,该程序功能为;(1)读入5个字符串(每串不多于9个字符),依次存放在a数组中,指针数组str中的每个元素依次指向每个字符串的开始位置;(2)从这些字符串中选出最大的那个串输出。
#include<stdio.h>
#include<string.h>
main()
{char a(100),*str[5],*sp;
int i,k;
(24);
for(i=0;i<5;i++)
{scanf(“%s”,sp);
str[i]=sp;
k= (25) ;
sp+=k+1
}
for(i=0;i<5;i++)
if( (26) )>0)k=i
printf(“%s\n”,str[k]);
}
18.程序功能:在一行文本中查找给定的单词,输出其位置和出现的次数。一行文本由号母和分隔符组成,分隔符包括若干空格、逗号、句号和换行符。一个单词由若干个连续字母经成。
程序说明:main函数中word数组存放欲查找的单词。Find函数完成在t字符串中查找s指向的字母字符串的功能,找到后输出所在字串中的位置,函数返回s串在t串中出现的次数。
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int find(char*,char*);
main()
{ char source[80]="I will pass the examination in the summer holiday.",word[20];
int t;
puts(“enter a word to be found:”);
gets(word);
t= (27) ;
if(t>0)
printf("Find word’%s’in text.It appears %d times \n"word,t)
else printf("not find”);
}
int find(char*t,char*s)
{char w[20];
int i j,k=0;
for(i=0; (28) !=\0’;I++),
{if(isalpha(t[i]))
{for(j=0;isalpha(t[i+j]);j++)
w[j]=t[i+j];
w[j] =’\0’;
puts(w);
if(strcmp(s,w)= =0)
{k++;
printf(“Find word’%s’in text.It locate in text [%d]\n",s,i);
}
i= (29) ;
}
}
(30
}
上机部分(70分钟)
一、改错题(18分)
【题目】
函数void sort(struct T items[],int low,int high)的功能是:对items结构数组中从下标low开始到high为止的所有数组元素按成员name以字典顺序排序,并输出排序后的结果。
含有错误的源程序如下:
#include <stdio.h>
#include <string.h>
struct T
{ char name[20],num[20];
};
void sort (struct T items[],int low,int high)
{ struct T temp;
int k,j;
for(k=low;k<high;k++)
for(j=low;j<high-k-1;j++)
if(items[j].name>items[j+1].name)
{temp= items[j];items[j]=items[j+1];items[j+1]=temp; }
}
void main(void)
{ struct T stu[4]={“Wang”,”6723”,”Cai”,”2106”,”Zhang”,”5129”,”Chang”,”4512,,”An”,”6868”};
int k;
sort(stu,0,4);
printf(“the sorted array:\n”);
for(k=0;k<5;k++)
printf(“name:%s,num:%s\n”,stu[k]->name,stu[k]->num);
}
【要求】
1、将上述程序录入到文件myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。
2、改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3、改正后的源程序myf1.c必须放在考试盘的根目录下,供阅卷用,否则不予评分。
二、编程题(22分)
【题目】
1、编写函数void count(char a[],char w[][10],int n,int b[])。其功能是:统计w指向的数组中n个单词在a指向的字符串中各自出现的次数(将非字母字符看做单词分隔符),并将统计结果依次保存在b指向的数组中。
2、编写main函数。采用数组初始化方式将以下测试数据(原数列)保存在数组中,调用count函数做统计,将统计结果(所有单词以及各自出现的次数)保存到结果文件myf2.out中。最后将考生本人的准考证号字符串也保存到结果文件myf2.out中。
例如:测试数据为:
a中字符串:“this is a book,that is an apple”
w中的单词:“this”,“that”,“is”,“a”,“an”,”book”
则输出结果为:
this,1,that:1,is:2,a:1,an:1,book:1
my exam number is,9112006003(本人准考证号)
【要求】
将源程序文件取名为myf2.c,输出结果文件取名为myf2.out。
数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
源程序文件和运行结果文件均须保存在考试盘的根目录下,供阅卷用。
不要复制扩展名为OBJ和EXE的文件到考试盘上。
模拟试卷(三)参考答案笔试部分:
第一部分:计算机基础部分
1-10:CACAA DCDBB
11-20:DDCDC CADBC
第二部分 C语言程序设计一、选择题
21.A 22.A 23.C 24.D 25.D
26.C 27.A 28.D 29.B 30.D
二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)
(1)外部函数 (2)<math.h>
(3)malloc(11) (4)实参数组的首地址
(5) 9 (6) 3 6
(7) 5 7 (8) 70
(9) 3 6 9 (10) 15,45,
(11)10,145 (12) 1,4,7,10,22
(13)1,3,9,27,40 (14) 1,2,3,
(15)4,5,6,(16) struct st
(17)mi[1][i] (18)mi[0][i]
(19)’\0’ (20)fopen
(21)q=p (22)p->next
(23)p->next (24)sp=a
(25)strlen(sp) (26)strcmp(str[i],str[k])
(27)nnd(SOUI'Ce,WOrd)(29)ili (28)t[i]
(29)i+j (30) return k
上机部分:
一、改错题(18分)
#include <stdio.h>
#include <string.h>
struct T
{ char name[20],num[20];
};
void sort (struct T items[],int low,int high)
{ struct T temp;
int k,j;
for(k=low;k<high;k++)
for(j=low;j<high-k-1;j++) /* j<high-k */
if(items[j].name>items[j+1].name)
/* if(strcmp(items[j].name,items[j+1].name)>0)*/
{temp= items[j];items[j]=items[j+1];items[j+1]=temp; }
}
void main(void)
{ struct T stu[4]={“Wang”,”6723”,”Cai”,”2106”,”Zhang”,”5129”,
”Chang”,”4512,,”An”,”6868”};/* stu[5] */
int k;
sort(stu,0,4);
printf(“the sorted array:\n”);
for(k=0;k<5;k++)
printf(“name:%s,num:%s\n”,);/* stu[k].name,stu[k].num */
}
二、编程题
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void count((char a[],char w[][10],int n,int b[]) )
{ int i=0,j,k=0;
char s[10];
for(i=0;a[i]!=0;i++)
{ if(isalpha(a[i]))s[k++]=a[i];
else
{ s[k]=0;
for(j=0;j<n;j++)
if(strcmp(s,w[j])==0){b[j]++;break;}
k=0;
}
}
}
main()
{ FILE *fp;
char line[80]=”this is a book,that is an apple”;
char word[6][10]={,this”,“that”,“is”,“a”,“an”,”book”};
int c[6]={0},m;
count(line,word,6,c);fp=fopen(“myf2.out”,”w”);
if(fp==NULL){printf(“Cannot open file”);exit(1);}
for(m=0;m<6;m++)fprintf(fp,“%s:%d,”,word[m],c[m]);
fprintf(fp,“\nmy exam mumber is,%s”,”9112006003”);
fclose(fp);
}
模拟试卷(四)
笔试部分(120分钟)
第一部分 计算机基础知识
1、数据库系统的主要作用是________。
A、实现数据的统一管理
B、收集数据
C、进行数据库的规划、设计和维护等工作
D、提供数据查询界面
2、主板是PC机的核心部件,在自己组装PC机时可以单独选购。下面关于PC机主板的叙述中,错误的是________。
A、主板上通常包含微处理器插座(或插槽)和芯片组
B、主板上通常包含存储器(内存条)插座和ROM BIOS
C、主板上通常包含PCI和AGP插槽
D、主板上通常包含IDE插座及与之相连的光驱
3、在系统分析中,常用的两种描述数据的工具是数据字典和________。
A、系统结构图
B、数据流程图
C、判定表
D、模块IPO表
4、Microsoft SQL Server 数据库管理系统采用___________数据模型。
A、层次 B、关系 C、网状 D、面向对象
5、在生命周期法开发信息系统的过程中,特别强调________的原则。
A、结构化的分析和设计
B、程序的分析设计
C、程序分析和程序设计工具应用
D、面向对象的分析和设计
6、如果发现磁盘中已染有病毒,则一定能将病毒清除的方法是________。
A、将磁盘格式化
B、删除磁盘中所有文件
C、使用杀毒软件
D、将磁盘中文件复制到另外一张无毒磁盘中
7、下列说法中错误的是________
A、现实世界中很多景物如树木、花草、烟火等很难用几何模型描述
B、计算机图形学主要是研究使用计算机描述景物并生成其图像的原理、方法和技术
C、用于描述景物的模型可分为线框模型、曲面模型和实体模型等许多种
D、利用扫描仪输入计算机的机械零件图属于计算机图形
8、以太网中联网计算机之间传输数据时,它们是以_______________为单位进行数据传输的。
A、文件 B、信元 C、记录 D、帧
9、PC机上运行的Windows98操作系统属于________。
A、单用户单任务系统 B、单用户多任务系统 C、多用户多任务系统 D、实时系统
10、与信息技术中的感测、存储、通信等技术相比,计算技术主要用于扩展人的________器官的功能。
A、感觉 B、神经网络 C、思维 D、效应
11、有关ISDN(综合业务数字网),以下叙述错误的是________。
A、能将计算机接入广域网
B、其数据传输速率不高、价格也不便宜
C、采用光纤作为传输介质
D、能提供语音、图像等综合性业务
12、通常把分布在一座办公大楼或某一大院中的计算机网络称为________。
A、广域网 B、专用网 C、公用网 D、局域网
13、在各类程序设计语言中,相比较而言,________程序的执行效率最高。
A、机器语言 B、汇编语言 C、面向过程的语言 D、面向对象的语言
14、Web浏览器由许多程序模块组成,__________一般不包含在内。
A、控制程序和用户界面
B、HTML解释程序
C、检索程序
D、DBMS
15、数字图像的获取步骤大体分为四步:扫描、取样、分色、量化,其中量化的本质是对每个样本的分量进行_____转换。
A、A/D B、A/A C、D/A D、D/D
16、下列汉字输入方法中,不属于人工输入的是________。
A、汉字OCR(光学字符识别)输入
B、键盘输入
C、语音输入
D、联机手写输入
17、针式打印机最突出的优点是________。
A、耗材成本不高
B、打印噪音低
C、能多层套打
D、打印分辨率大约180dpi
18、________不属于我们常用的打印机。
A、针式打印机 B、激光打印机 C、喷墨打印机 D、热升华打印机
19、下列选项中,最新的、速度最快的扫描仪接口是________。
A、SCSI接口 B、PS/2接口 C、USB接口 D、Firewire 接口
20、现代通信是指使用电波或光波传递信息的技术,故使用________传输信息不属于现代通信范畴。
A、电报 B、电话 C、传真 D、磁带第二部分 C语言程序设计一、选择题
21.当需要定义—个函数时,以下标识符中 (21)不能用作函数名。
(A)max (B)while (C)_sum (D)F2
22.已有声明语句char ch;与表达式ch=‘C’的值不相同的表达式是(22)。(字符A
的ASCII码以十进制表示为65)
(A)ch=0x43 (B)ch=0103 (C)ch='\103’ (D)ch=067
23.若要对a进行++运算,则a应具有以下说明(23)。
(A)int a[5][4]; (B)char*a[]={“12”,“ab”}
(C)int b[8],*a=b; (D)char(*a)(char);
24.若有声明语句int x=10,y=8,z=6,*p=&x;则下列的(24)表达式语句是正确的。
(A)(*p)++=z;
(B)*(*p)++;
(C)printf(x%4= =0?”%3d\n”:”%3d”,*p):
(D)x>20?return*p-20:return*p-1;
25.设int x=2,y=3,z=(++x<=y--)?(-y= =1)? y--:--y):y--;则x,y-z的值为 (25)。 (A)3,1,l (B)3,0,1 (C)2,0,0 (D)2,2,1
26.设有函数f的定义如下,若在main函数中欲调用f函数,则正确的调用语句是 (26) 。
void f(int x,int*y)
{*y=x*x*x;}
main()
{ int i,c[4]={1,2,3,4},s[4]={0}
for(i=0;i<4;i++)
{ / 调用f函数。 /
(A)f(c,s); (B)f(c[i],s[i];
(C)f(*(c+i),&s[i]); (D)f(c+i,s+i);
27.如有语句:int x=l,y=2,z=3,*p[3]; p[0]=&x; p[1]=&y;p[2]二&z;,以下表达式中有语法错误的是 (27) 。
(A)y++ (B)(*p[0])++ (C)*++p[0] (D)p++
28.设有声明语句:int a[3][3]={1,2,3,4,5,6,7,8,9};以下语句中除 (28) 外均能输出a[1][2]的值。
(A)printf(“%d”,*(*(a+1)+2)); (B)printf(“%d”,*(&a[2][0]-1”));
(C)print((“%d”,*(a)[1]+2)) ; (D)printf(“%d”,*(a+1)[2]);
29.若定义了以下函数:
void f(……)
{……
*p=(double*)malloc(10*sizeof(double));
……
}
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是 (29) 。
(A)double*p (B)float**p (C)double*p (D)float*p
30.以下程序的输出是 (30) 。
struct st
{int x;int*y;}*p;
int dt[4]={1,3,13,23 };
struct st arr[4]={6,&dt[0],8,&dt[1],10,&dt[2],12,&dt[3]};
main()
{p=arr;
printf(“%d\n”,*++(p->y));
}
(A)l (B)13 (C)2 (D)3
二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)
● 基本概念题,共5分
1.将一维数组x的第i个元素的地址赋给指针变量p的语句是 (1) 。
2.表示“整数x绝对值大于0小于100”时值为“真”的C语言表达式是 (2) 。
3.若有定义:int a=lO,b=9,c=8;接着顺序执行下列语句后,变量c中的值是 (3) 。
c=(a-=(b-5));
c=(a%2)+(b=5);
4.指针变量的值是 (4) 。
5.若有定义:int k=O;执行语句while(k++<=7);后k的值为 (5) 。
● 阅读程序写出运行结果题(共10分)
6.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 (6) 。
struct stud
{ char num[10];
in s[10];
double f;
}a;
7.[程序]
int x=lO;
main()
{int y,k;
y=f(3);printf(“%d\n%d”,x,y);
}
int f(int x)
{if(x= =3)
{int x=20:
return x;
}
else return x;
}
该程序运行后,输出x的值是 (7),y的值 8 。
8.以下程序输出的最后一个值是 (9) 。
int fun(int n)
{static int f=l;
f=f*n;
return f
}
main()
{int i;
for(i=l;i<5;i++)printf(“%d\n”,fun(i));
}
9.设有以下程序:
main()
{int a,b,k=2,m=3,*p1=&m;
a=p1==&m;
b=(*p1)%d\n”,a);
printf(a=%d\n”,a);
printf(b=%d\n”,b);
}
1.执行该程序后,a的值为 (10),b的值为 (11) 。
10.执行下面的程序,共输出 (12) 行,最后一行有 (13) 个数。
Void prnnt(int n,int aa[ ])
{ int i;
for(i=0;i<=n;i++)
{ printf(“%6d”,aa[i]);
if(!(i%5))printf(“\n”);
}
printf(“\n”);
}
11.程序
#include<string.h>
int convert(char s1[ ],char s2[],int/n1)
{ int i=0,j=0,k,s=0,len;
int value=0;
char tab[16]=”0123456789ABCDEF”;
len=strlen(s1);
if(len%4)
{ for(i=0;I<len%4;i++)
s=s*2+s1[i]-‘0’;
s2[j++]=tab[s];value=value/16+s;
}
while(i<len)
{ s=0;
for(k=0;k<4;k++)s=s*2+s1[i+k]-‘0’;
s2[j++]=tab[s];
value=value*16+s;
i=i+4;
}
s2[j]=‘\n’;*n1=strlen(s2);
return value;
}
main( )
{ char ss1[]=“10101010”,ss2};
}
该程序执行时输出第二行是 (14),第三行 (15),
● 完善程序题(共15分)
12.以下函数的功能是:求x的y次方(y>=1),请填空。
Double fun(double x,int y)
{ int i;
double z;
for(i=1,z=x;i<y;i++)z= (16) ;
return z;
}
13.以下程序中的功能是调用colmin函数,实现在N行M列的矩阵中,找出每一下列上的最小值。
#define N3
#define M4
void colmin(int x[N][M])
{ int i,j,p;
for(i=1;j<M;j++)
{ (17) ;
for(i=1;i<N;i++)
if( (18) x[i][j])p=i;
printf(“The min value in column %d is No.%d\n”,j+1,p+1);
}
}
main()
{int a[N][M]={1,4,7,11,0,7,9,8,2,3,1,10};
(19) ;
}
14,以下函数把b字符串连接到a字符串出后面,并返回a中新字符串韵长度。请填空。
{int num=O,n=O;
while(*(a)+num)!= (20) num++;
while(b[n]){*(a+num)=b[n];num++; (21) ;}
a[num]=‘\0’;
return(num);
}
15.下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为data.dat的新文件中。请填空。
#include“stdio.h”
FILE*fp;
{ char ch;
if(fp=fopen( (22) )==NULL)exit(0);
while((ch=getchar())!=’@’)fputc(ch,fp);
fclose(fp);
}
16.程序功能:合并两个已经按照升序排列的一维数组。Insert函数功能:将m插入x指向的含有n个元素的数组中,数组中n个元素已按升序排列,插入m后的n+1个元素仍保持有序。
Void inset(int x[],int n,int m);
main()
{int a[10]=(1,3,5,7,9l,b[5]={2,4,8,16,32},k;
for(k=0;k<5;k++)
{insert(a,(23),b[k]);
}
for(k=O;k<10;k++)
printf(“%d,”,a[k]);
}
void insert(int x[],int n,int m)
{
int i,j;
if(m>x[n-1])
(24) =m
else
{for(i=O; (25) x[i];i++);
for(j=n;j>=i;j--)
x[j]= (26) ;
x[i]=m;
}
}
17.已知某链表中结点的数据结构定义如下:
#include<stdio.h>
struct node
{int x;
struct node*next;
};
函数loop功能:根据m的循环移位head指向的链表中的所有结点,当m为正数时实现循环左移一次,否则循环右移一次。函数返回链表首结点的指针。
算法提示;循环右移时,将链表最后一个结点删除,再将其插入到链表首部;初左移时,
将链表第一个结点删除,再将其连接到链表尾部。
Struct node*loop(struct node*head,int m)
{struct node*p1,*p2;
(27) ;
if(pl= =NULL‖pl->next= =NULL)return head
if(m>=0)
{
while( (28) ->next)
{p2=pl;pl=pl->next;}
p2->next=NULL:
p1->next=head;
(29) =p1
}
else
{head=head->next;
p2=head;
while(p2->next)p2=p2->next;
p2->next=pl;
pl->next= (30) ;}
return head;
上机部分(70分钟)
一、改错题(18分)
【题目】
从N个字符串中找出最长的字符串并将其逆置后输出。
例如,输入测试数据:QBASIC,True Basic,C,Visual C++,VFP,Visual Foxpro,则运行结果为
Max string is,orpxoF lausiV
Maxlen=13
含有错误的源程序如下:
#include <stdio.h>
#include <string.h>
#define N 6
void find_max(char *str[],char maxstr[],int n,int *maxlen)
{ int i,len;
char ch;
for(i=0;i<n;i++)
{ len=strlen(str);
if(len>*maxlen)
{ maxstr=str[i];
*maxlen=len;
}
}
for(i=0;i<*maxlen;i++)
{ ch=maxstr[i];
maxstr[i]=maxstr[*maxlen-i-1];
maxstr[*maxlen-i-1]=ch;
}
}
main()
{ int i,maxlen=0,len;
char *instr[N]={,QBASIC”,”True Basic”,
”C”,”Visual C++”,”VFP”,”Visual Foxpro” };
char maxstr[40];
maxlen=0;
find_max(instr,maxstr,n,&maxlen);
printf(“max string is:%s\n maxlen=%d \n”,maxstr,maxlen);
}
【要求】
1、将上述程序录入到文件myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。
2、改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3、改正后的源程序myf1.c必须放在考试盘的根目录下,供阅卷用,否则不予评分。
二、编程题(22分)
【题目】
编写函数int stat(int a[],int n,int c[][2]),a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的整数,从而生成有n/2个元素组成的整数数列;统计该数列中不同整数各自出现的次数,并将统计结果保存到c指向的二维数组中。函数返回不同整数的个数。
编写main函数,用考生准考证号的10个数字按顺序组成一个1位整数数列作为测试数据,调用stat函数得到一个新数列以及对这个新数列所做的统计结果,将统计结果保存到文件myf2.out中。最后将考生本人的准考号字符串也保存到结果文件myf2.out中。
例如,测试数据为0,1,1,2,4,0,0,1,2,3,生成新数列为1,12,40,1,23,则输出结果为
1:2,12:1,23:1,40:1
My exam number is,0112400123
【要求】
1、将源程序文件取名为myf2.c,输出结果文件取名为myf2.out。
2、数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
3、源程序文件和运行结果文件均须保存在考试盘的根目录下,供阅卷用。
4、不要复制扩展名为OBJ和EXE的文件到考试盘上。
模拟试卷(四)参考答案第一部分:计算机基础知识
1-10:CDBBA ADDCC
11-20:CDADA ACDDD
第二部分 C语言程序设计一、选择题(用答题卡答题,答案依次填在2l-30答题号内)
21.B 22.D 23.C 24.C 25.B
26.C 27.D 28.D 29.A 30.D
二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)
(1)p=&x[i] (2)abs(x)>0&&abs(x)<100
(3) 5 (4)地址值
(5) 8 (6) 38
(7) 10 (8) 20
(9) 24 (10) 0
(11) 4 (12) 3
(13) 4 (14)170
(15) AA (16) z*x
(17)p=0 (18)x[p][j]>
(19)colmin(a) (20)’\0’
(21)n++ (22)“data.dat","w”
(23)5+k (24)x[n]
(25)m> (26)x[j-1]
(27)p1=head (28)p1
(29)head (30)NULL
上机部分:
一、改错题(18分)
Max string is,orpxoF lausiV
Maxlen=13
含有错误的源程序如下:
#include <stdio.h>
#include <string.h>
#define N 6
void find_max(char *str[],char maxstr[],int n,int *maxlen)
{ int i,len;
char ch;
for(i=0;i<n;i++)
{ len=strlen(str); /* strlen(str[i]) */
if(len>*maxlen)
{ maxstr=str[i]; /* strcpy(maxstr,str[i]) */
*maxlen=len;
}
}
for(i=0;i<*maxlen;i++) /* i<*maxlen/2*/
{ ch=maxstr[i];
maxstr[i]=maxstr[*maxlen-i-1];
maxstr[*maxlen-i-1]=ch;
}
}
main()
{ int i,maxlen=0,len;
char *instr[N]={,QBASIC”,”True Basic”,
”C”,”Visual C++”,”VFP”,”Visual Foxpro” };
char maxstr[40];
maxlen=0;
find_max(instr,maxstr,n,&maxlen); /* N */
printf(“max string is:%s\n maxlen=%d \n”,maxstr,maxlen);
}
二、编程题(22分)
#include <stdio.h>
int stat(int a[],int n,int c[][2])
{ int count=0,I,k,cont[100]={0},b[100];
for(i=0;i<n-1;i+=2,count++)
b[count]=a[i]*10+a[i+1];
for(i=0;i<count;i++)cont[b[i]]++;
for(i=0,k=0;i<99;i++)
if(cont[i]){c[k][0]=i;c[k][1]=cont[i];k++;}
return k;
}
main()
{ int a[20]={0,1,1,2,4,0,0,1,2,3},b[10][2]={0},n=10,i,count;
FILE *fp;
count=stat(a,n,b);
fp=foen(“myf2.out”,”w”);
if(fp==NULL){printf(“Cannot open myf2.out!\n”);exit(0);}
fprintf(fp,”\n”);
for(i=0;i<count;i++)fprintf(fp,”%d:%d,”,b[i][0],b[i][1]);
fprintf(fp,”\nmy exam number is:%s”,”0112400123”);
fclose(fp);
}
模拟试卷(五)
笔试部分(120分钟)
第一部分 计算机基础知识
1、因特网上实现异构网络互连的通信协议是________。
A、ATM B、Novell C、TCP/IP D、X.25
2、著名的计算机科学家尼.沃思提出了________。
A、数据结构+算法=程序 B、存储控制结构
C、信息熵 D、控制论
3、用于向计算机输入图像的设备很多,下面不属于图像输入设备的是_____________。 A、数码相机 B、扫描仪 C、鼠标器 D、数码摄像头
4、根据信息处理的深度对信息系统分类,计算机辅助制造(CAM)属于___________。 A、操作层业务处理系统 B、管理层业务处理系统
C、知识层业务处理系统 D、办公信息系统
5、从信息学的角度看,业务信息处理系统是________的处理系统。
A、一次信息 B、二次信息 C、三次信息 D、四次信息
6、在城市建设、土地规划、房地产管理等应用领域中使用的信息系统通称为________。 A、办公自动化系统 B、决策系统 C、遥感系统 D、地理信息系统
7、下列说法中错误的是________。
A、CD-ROM是一种只读存储器但不是内存储器
B、CD-ROM或DVD-ROM驱动器是多媒体计算机的基本部分
C、只有存放在CD-ROM盘上的数据才称为多媒体信息
D、CD-ROM盘片上约可存储650兆字节的信息
8、以下关于硬盘的说法中错误的是________。
A、平均访问时间表示在硬盘上找到数据所在扇区所需要的平均时间
B、将数据暂存在主板的高速缓存中,可以提高硬盘与CPU交换数据的速度
C、当前流行的IDE硬盘一般采用Ultra ATA接口
D、IDE是指把控制电路与盘体集成在一起的硬盘驱动器,这样做使数据传输的可靠性得到了增强
9、显示器工作过程中的光栅扫描、同步、画面刷新等操作和控制都是由________来完成的。 A、AGP端口 B、VRAM C、芯片组 D、绘图和显示控制电路
10、若某用户E-mail地址为shikbk@ online.sb.cn,那么邮件服务器的域名是________。
A、shjkbk B、online C、sb.cn D、online.sb.cn
11、人事档案管理系统属于________。
A、数据库 B、数据库系统 C、数据库管理系统 D、数据库应用系统
12、在PC机中CPU读写RAM的最小数据单位是________。
A、1个二进制位 B、1个字节 C、1个字 D、1个扇区
13、PC机配有多种类型的I/O接口,对串行接口的描述正确的是:________。
A、慢速设备连接的I/O接口就是串行接口
B、串行接口一次只传输1位二进制数据
C、一个串行接口只能连接一个外设
D、串行接口的数据传输速率一定低于并行接口
14、存储器是计算机系统的重要组成部分,存储器可以分为内存储器与外存储器,下列存储部件中________属于外存储器。
A、高速缓存(cache) B、硬盘存储器 C、显示存储器 D、CMOS存储器
15、以下关于数据库的描述中,错误的是_________ 。
A、数据库是按照某种数据模型进行组织的
B、数据库是相关数据的集合
C、数据库中除了存储数据外,还存储了"元数据"
D、用户通过数据库的存储模式使用数据
16、由于________芯片的存储容量较大,易修改,不但可用在PC机中还可使用在数码相机和优盘中。
A、Mask ROM B、PROM C、EPROM D、Flash ROM
17、下面列出的特点中,_______不是数据库系统的特点。
A、无数据冗余
B、采用一定的数据结构
C、数据共享
D、数据具有较高的独立性
18、从关系的属性中取出所需属性列,由这些属性列组成新关系的操作称为________。
A、交 B、连接 C、选择 D、投影
19、在下列选项中,通过授权管理来实施的信息安全措施是 ________ 。
A、数据加密 B、审计管理 C、身份认证 D、访问控制
20、在信息系统开发中,使用CASE(计算机辅助软件工程)工具是为了________。
A、使管理人员便于管理 B、最终用户使用方便
C、提高软件通用性 D、软件开发人员提高生产效率和软件质量,降低成本第二部分 C语言程序设计一、选择题:
1、有如下程序
main()
{
char ch[2][5]={"6937","8254"},*p[2];
int i,j,s=0;
for(i=O;i<2;i++)p[i]=ch[i];
for(i=O;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
2、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是_________。
A)l  B)2
C)2.0   D)2.5
3、执行语句:for(i=1;i++<4;);后变量i的值是_________。
A)3  B)4
C)5  D)不定
4、有如下程序
main()
{ int y=3,x=3,z=l;
printf("%d %d\n",(++x,y++),z+2);
}
运行该程序的输出结果是________。
A)3 4  B)4 2
C)4 3  D)3 3
5、运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为________。
main()
{
int m,n;
printf("Enter m,n:");
scanf("%d%dt.,&m,&n);
while(mI-n)
{
while(m>n)re-=n,
while(n>m)n-=m;
}
printf("m=%d\n",m);
}
A)m=3   B)m=2
C)m=l   D)m=0
6、有如下程序
main()
{ int x=l,a=0,b=0;
switch(x){
case 0:b++:
case 1:a++:
case 2:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
)
该程序的输出结果是__________。
A)a=2,b=1  B)a=l,b=1
C)a=l,b=0  D)a=2,b=2
7、有如下程序
main()
{  float x=2.0,y;
if(x<0.0)y=0.0;
else if(x<l0.0)y=1.0/x;
else y=1.0;
printf(%f\n",y);
}
该程序输出结果是_________。
A)0.000000  B)0.250000
C)0.500000  D)1.000000
8、有以下函数定义:
void fun(int n,double x){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun正确调用语句是_______。
A)fun(int y,double m);B)k=fun(10,12.5);
C)fun(x,n);   D)void fun(n,x);
9、有如下程序
main()
{ int i,sum;
for(i=l;i<=3;sum++) sum+=i;
printf("%d\n",sum);
}
该程序的执行结果是_________。
A)6 B)3
C)死循环   D)0
10、下列函数定义中,会出现编译错误的是_________。
A)max(int x,int y,int*z) B)int max(im x,y)
{ *z=x>y?x:y;} { int z;
z=x>y?x:y;
return z;}
C)max(intx,inty)  D)intmax(intx,inty)
{int z;  {return x>y?x:y;}
z=x>y?x:y;
return(z);}
二、填空题:
1、在Turbo C 2.0系统中,若将实型常数1.5存储在内存中,它占用 【1】 个字节。
若有定义“enum seq{mouse,cat,dog,rabbit=0,sheep,cow=6,tiger};”,则执行语句“printf(”%d”,cat+sheep+cow);”后输出结果为 【2】 。
若二维数组a有m列,则在存储该数组时,a[i][j]之前有 【3】 个数组元素。
若有声明“int a=30,b=7;”,则表达式“!a+a%b”的值是 【4】 。
5、已知数据文件a.dat是通过执行以下程序建立的,若在另一个程序运行时需要从该数据文件中正确读取数据,则应当调用的读文件库函数的函数名是 【5】 。
main()
{ FILE *fp=fopen(”a.dat”,”wb”);
float x=25.0;
fwrite (&x,sizeof(float),1,fp);
fclose(fp);
}
三、阅读程序题:
6,以下程序运行后的输出结果第一行是 【6】,第二行是 【7】 。
main()
{ char c=’a’;
int i=97;
printf(”%c,%d\n”,c,c);
printf(”%c,%d\n”,i,i);
}
7、以下程序的输出结果是 【8】 。
main()
{ unsigned short a=65536;int b;
printf("%d\n",b=a);
}
8、以下程序运行后的输出结果是 【9】 。
main()
{
int p=30;
primf("%d\n",(p/3>0?p/10:p%3));
}
9、以下程序运行后的输出结果第一行是 【10】,第二行是 【11】 。
# include,stdio.h”
main()
{ int a,b,c;
a=b=c=1;a+=b+=c;
printf(”%d”,a<b?b:a);
printf(”%d”,a<b?a++:b++);
printf(”%d%d”,a,b);
printf(”%d”,c+=a<b?a++:b++);
printf(”%d%d\n”,b,c);
a=3;b=c=4;
printf(”%d”,(c>=b>=a)?1:0);
printf(”%d\n”,c>=b&&b>=a);
}
10、以下程序运行后的输出结果是 【12】 。
main()
{ int x=10;
int y=x++;
printf(”%d,%d”,(x++,y),y++);
}
11、以下程序运行后的输出结果是 【13】 。
main()
{ static int i,a[]={15,13,11,9,7,5,3,1};
inv(a,5);
for(i=1;i<=5;i++) printf(”%d,”,﹡(a+i));
}
inv(int ﹡x,n);
{ int ﹡p,t,﹡i,﹡j,m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)
{ t=﹡i;﹡i=﹡j;﹡j=t;}
return(0);
}
12、有以下程序:
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);
}
程序运行后的输出结果是 【14】 。
13、以下程序运行后的输出结果第二行是【15】,第四行是【16】,第六行是【17】。
#include<stdio.h>
void change(int s[3][3],int d)
{ int i,j,k;
if(d= =0)
{ for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
{k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;}
}
else
for(i=0;i<3;i++)
for(j=0;j<3-i;j++)
{k=s[i][j];s[i][j]=s[2-j][2-i];s[2-j][2-i]=k;}
}
main()
{int s[3][3]={1,2,3,4,5,6,7,8,9},i,j,k,n;
change(s,0);
for (i=0;i<3;i++)
{for(j=0;j<3;j++) printf(”%4d”,s[i][j]);
printf(”\n”);
}
change(s,1);
for (i=0;i<3;i++)
{for(j=0;j<3;j++) printf(”%4d”,s[i][j]);
printf(”\n”);
}
}
四、完善程序题:
14、函数pi的功能是根据以下公式近似求得的:
pi*pi/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)
请在下面的函数中填空,完成求pi的功能。
#include<math.h>
double pi(long n1
{ double s=0.0,long i;
for(i=1;i<=n;i++)s=s+ 【18】  ;
return(sqrt(6*s));
}
15、实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中(相当于copy命令),假定文件在当前目录下。请补全程序。
#include<stdio.h>
void main(int argc,char。argv[])
{ FILE *f1,*f2;
if(argc< 【19】 )
{  printf("parameter error!\n");exit(0);}
fl=fopen(argv[1],"r");
f2=fopen(argv[2],"w");
while( 【20】 )fputc(fgetc(f1),f2);
fclose(f1);
fclose(f2);
}
16、下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。
int add(int x,int y,【21】z)
------
{ 【22】 =x+y; }
------
17、下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。
#include <stdio.h>
main()
{ int a,b,c,i;
a=c=0;
for(i=0;i<10;i+=2)
{ a+=i;
【23】 ;
------
c+=b;
}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11);
}
18、下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。
#include <stdio.h>
main()
{ int i,j;
for(i=0; 【24】; i++)
------
{ j=i*10+6;
if(【25】 ) continue;
------
printf("%d",j);
}
}
19、下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。
#include <stdio.h>
#include <string.h>
main()
{ char a[]="clanguage",t;
int i,j,k;
k=strlen(a);
for(i=0; i<=k-2; i+=2)
for(j=i+2; j<=k; 【26】 )
------
if(【27】 )
------
{ t=a[i]; a[i]=a[j]; a[j]=t; }
puts(a);
printf("\n");
}
20、以下函数creatlist用来建立一个带头节点的单链表,链表的结构如下图所示,新的结点总是插入在链表的末尾。链表的头指针作为函数值返回,链表最后一个节点的next域放入NULL,作为链表结束标志。data为字符型数据域,next为指针域。读入时字符以#表示输入结束(#不存入链表)。请填空。
struct node
{ char data;
struct node * next;
};
.
.
.
【28】 creatlist( )
{ struct node * h,* s,* r; char ch;
h=(struct node *)malloc(sizeof(struct node));
r=h;
ch=getchar( );
{ s=(struct node *)malloc(sizeof(struct node));
s->data= 【29】 ;
r->next=s; r=s;
ch=getchar( ); }
r->next= 【30】 ;return h;}
上机部分(70分钟)
一、改错题(18分)
【题目】
若将一维数组中某个元素的值h看作是一个高度为h、截面为正方形的柱子,则相邻的高度均为h的m个柱子就可以构成一个条形平台,我们称m为高度为h的平台的面积。以下程序找出由20个柱子构成的若干个平台中面积最大的平台的高度和面积。例如,输入数据为3,3,3,5,5,5,5,5,1,1,8,8,8,8,8,8,7,7,8,8。若程序正确,输出结果为:height=8,max area=6
含有错误的源程序如下:
#include <stdio.h>
void max_platform(int a[],int n,int *h,int *max_a)
{int i,k=0,p[10][2];
p[k][0]=a[0];p[k][1]=1;
for(i=1;i<n;i++)
if(a[i]!=a[i-1])
{p[++k][0]=a[i];
p[k][1]=1;
}
else
(*p[k][1])++;
*h=p[0][0];
*max_a=p[0][1];
for(i=1;i<=k;i++)
{if(p[k][1]>*max_a)
{*h=p[i][0];
*max_a=p[i][1];
}
}
}
main()
{int x[20]={{3,3,3},{5,5,5,5,5},{1,1},{8,8,8,8,8,8},{7,7},{8,8}};
int height,max_area;
max_platform(x[0],20,&height,&max_area);
printf(”height=%d,max area=%d”,height,max_area);
}
【要求】
1、将上述程序录入到文件myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。
2、改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
3、改正后的源程序myf1.c必须放在考试盘的根目录下,供阅卷用,否则不予评分。
二、编程题(20分)
【题目】
编写函数int facsum(long x),判断长整形数x是否具有如下特征:组成x的各位数字阶乘之和等于该数本身。例如:145=1!+4!+5!。若x具有此特征,则函数返回值1,否则返回值0。
编写main函数,调用facsum函数,在0~200000的范围内寻找具有此特征的数,并将找到的全部数据写入文件myf2.out中。
在0~200000的范围内符合此特征的数有:1,2,145,40585。
【要求】
1、将源程序文件取名为myf2.c,输出结果文件取名为myf2.out。
2、数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
3、源程序文件和运行结果文件均须保存在考试盘的根目录下,供阅卷用。
4、不要复制扩展名为OBJ和EXE的文件到考试盘上。
模拟试卷(五)参考答案笔试部分:
第一部分:计算机基础部分
1-10:CBCCA DCBDD
11-20:DBBBD DADDD
第二部分 C语言程序设计一、选择题:
21-30:CCCDC ACCCB
二、填空题
(1)8 (2)8
(3)i*m+j (4)2
(5) fread (6)a,97
(7)a,97 (8)0
(9)3 (10) 3233444
(11)01 12)11,10
(13)9,11,13,15,5,(14)3
(15) 2 5 8 (16)9 8 7
(17)3 2 1 (18)1.0/i/i 或1.0 /(i*i)
(19)3 (20) !feof(f1)
(21)int * (22)*z
(23) b=i+1 (24)i<10
(25)i%3!=0 (26)j+=2
(27)a[i]>a[j] (28)struct node *
(29)ch (30)NULL
上机部分:
一、改错题:
#include <stdio.h>
void max_platform(int a[],int n,int *h,int *max_a)
{int i,k=0,p[10][2];
p[k][0]=a[0];p[k][1]=1;
for(i=1;i<n;i++)
if(a[i]!=a[i-1])
{p[++k][0]=a[i];
p[k][1]=1;
}
else
(*p[k][1])++; / *p[k][1]++; /
*h=p[0][0];
*max_a=p[0][1];
for(i=1;i<=k;i++)
{if(p[k][1]>*max_a) / p[i][1] /
{*h=p[i][0];
*max_a=p[i][1];
}
}
}
main()
{int x[20]={{3,3,3},{5,5,5,5,5},{1,1},{8,8,8,8,8,8},{7,7},{8,8}};
/ {3,3,3,5,5,5,5,5,1,1,8,8,8,8,8,8,7,7,8,8}; /
int height,max_area;
max_platform(x[0],20,&height,&max_area); / x /
printf(”height=%d,max area=%d”,height,max_area);
}
二、编程题:
#include <stdio.h>
long fac(int x)
{long int y=1;
for(;x>0;x--)
y*=x;
return y;
}
int facsum(long x)
{long y=x,sum=0;
while(y)
{sum+=fac(y%10);
y/=10;
}
if(sum= =x)return 1;
else return 0;
}
main()
{long i;int y;
FILE *fp;
fp=fopen(”myf2.out”,”w”);
if(fp= =NULL){printf(”open error!”);exit(0);}
for(i=1;i<=200000;i++)
if(facsum(i))
fprintf(fp,”%12ld”,i);
fclose(fp);
}
模拟试卷(六)
笔试部分(120分钟)
第一部分 计算机基础知识
1、在采用拨号方式将计算机联入Internet网络时,________不是必需的设备。
电话线 B,MODEM C,账号和口令 D,电话机
2、把图象(或声音)数据中超过人眼(耳)辨认能力的细节去掉的数据压缩方法称为_____。
无损数据压缩 B.有损数据压缩 C.JPEG压缩 D.MPEG压缩
3、交换式集线器与共享式集线器相比,其优点在于________。
提高管理能力 B.降低成本 C.增加网络的带宽 D.增加传输的距离
4,PC机键盘上的按键,击键声音小,无磨损,没有接触不良等问题,它们大多是________式的。
电阻 B.电容 C.压力 D.光敏
5、为了提高处理速度,Pentium 4 处理器采取了一系列措施,下列叙述中错误的是________。
增加了运算器中运算部件的个数寄存器在总线空闲时自动通过总线从主存储器中取得一条指令增加了指令预取部件增加了寄存器个数
6、为了加快指令处理速度,Pentium在处理当前指令的同时,还可去指令快存取出一些将要执行的指令,实现该功能的部件是________。
指令快存 B.指令译码部件 C.指令预取部件 D.总线接口部件
7,CPU中用来解释指令的含义、控制运算器的操作、记录内部状态的部件是________。
数据cache B.运算器 C.寄存器 D.控制器
8、为了提高计算机中CPU 的运行效率,可以采用多种措施,但以下措施________是无效的。
增加指令快存容量增加数据快存容量使用指令预取部件增大外存的容量
9、下列关于有线载波通信的描述中错误的是________。
同轴电缆的信道容量比光纤通信高很多同轴电缆具有良好的传输特性及屏蔽特性传统有线通信系统使用的是电载波通信有线载波通信系统的信源和信宿之间有物理的线路连接
10、下列关于计算机合成图像的应用中,错误的是__________。
可以用来设计电路图可以用来生成天气图可以用于医疗诊断可以制作计算机动画
11、比较算法和程序,以下说法中正确的是________。
算法可采用“伪代码”或流程图等方式来描述程序中的指令和算法中的运算语句都必须用高级语言表示算法和程序都必须满足有穷性算法就是程序
12、有关CRT显示器安全的叙述中,正确的是________。
显示器工作时产生的辐射对人体无不良影响显示器不会引起信息泄漏合格的显示器产品应通过多种安全认证液晶显示器比CRT的辐射危害更大
13、业务信息处理系统是使用计算机进行日常业务处理的信息系统,下列不属于业务信息处理系统的是________。
人力资源管理系统 B,财务管理系统 C,决策支持系统 D,办公自动化系统
14、下面所列各项中,不属于信息系统集成内容的是________。
位置集成 B.数据集成 C,通信集成 D,应用集成
15、下列应用软件中________属于网络通信软件。
Word B,Excel C,Outlook Express D,Frontpage
16、虚拟存储系统能够为用户程序提供一个容量很大的虚拟地址空间,但其大小有一定的范围,它受到________的限制。
内存容量大小 B.外存空间及CPU地址表示范围 C.交换信息量大小 D.CPU时钟频率
17、双绞线由两根相互绝缘的、绞合成匀称螺纹状的导线组成,下列关于双绞线的叙述中,错误的是________。
它的传输速率可达10~100Mb/s,传输距离可达几十千米甚至更远它既可以用于传输模拟信号,也可以用于传输数字信号与同轴电缆相比,双绞线易受外部电磁波的干扰,线路本身也产生噪声,误码率较高双绞线大多用作局域网通信介质
18、下列关于高级语言翻译处理方法的说法错误的是________。
解释程序的优点是实现算法简单解释程序适合于交互方式工作的程序语言运行效率高是解释程序的另一优点编译方式适合于大型应用程序的翻译
19、下列关于计算机网络中协议功能的叙述最为完整是________。
决定谁先接收到信息 B.决定计算机如何进行内部处理
C.为网络中进行通信的计算机制定的一组需要共同遵守的规则和标准
D.检查计算机通信时传送中的错误
20、下列有关局域网中继器的说法中正确的是________。
中继器的工作是过滤掉会导致错误重复的比特信息中继器可以用来连接以太网和令牌环网中继器能够隔离分段之间不必要的网络流量中继器能把收到的信号整形放大后继续传输第二部分 C语言程序设计一、选择题:
1、有如下程序
main()
{ int x=3;
do
{ printf("%d",x--);}
while(!x);
}
该程序的执行结果是________。
A)321 B)3
C)不输出任何内容 D)陷入死循环
2、有以下程序段:
main()
{
int a=5,*b,**c
c==&b;b=&a;
}
程序在执行了c=&b;b=&a;语句后,表达式ttc的值是__________。
A)变量a的地址 B)变量b中的地址
C)变量a中的值 D)变量b的地址
3、有如下程序
main()
{
char s[115]={.tabc","de","fgh"};
printf("%e",s[2][6]);
}
其输出为__________。
A)不确定 B)编译错误
C)g  D)输出null字符
4、有如下程序
int rune(ira a,int b)
{ remm(a+b);}
main()
{ int x=2,y=5,z=8,r;
r=func(func(x,y),z);
primf("%d\n",r);
}
该程序的输出结果是________。
A)12 B)13
C)14   D)15
5、有如下程序段
int  *p,a=10,b=l;
p=&a; a=*p+b;
执行该程序段后,a的值为_________。
A)12 B)11
C)10 D)编译出错
6、有以下程序:
int*f(int*x,int*y)
{  if(*x<*y)return x;
else returny;
}
main()
{
int a=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=f(p,q);
printf("%d,%d,%d\n",*p,*q,*r);
}
程序运行后输出结果是_________。
A)7,8,8  B)7,8,7
C)8,7,7  D)8,7,8
7、有如下程序
long fib(im n)
{ if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
)
main()
{ printf(%ld\n",fib(3));}
该程序的输出结果是_________。
A)2  B)4
C)6  D)8
8、下面程序的输出结果是_________。
main()
{
char str[10],c='a';
inti=0:
for(;i<5;i++)
str[I]=c++;
printf("%s",str);
}
A)abcde B)a
C)不确定 D)bcdef
9、有如下程序
#define n 2
#define m N+I
#define NUM  2*m+l
main()
{ int i;
for(i=1;i<=NUM;i++)printtf("%d\n",i);
}
该程序中的for循环执行的次数是_________。
A)5 B)6
C)7 D)8
10、有如下程序
main()
{
int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=l;i<3;i++)
for(j=0;j<=i;j++)
s+=a[i][j];
printf("%d\n",s);
}
该程序的输出结果是________。
A)18 B)19
C)20 D)2l
二、填空题:
在C语言的源程序中若出现常量“1L”,则该常量的类型是 【1】 。
已知有声明“int x=1,y=2;”,则执行表达式“(x>y)&&(--x>0)”后x的值是 【2】
3、在调用函数fopen(”a:\\b.dat”,”r”)时,若A盘根目录下不存在文件b.dat,则函数的返回值是 【3】 。
4、设已有非空文本数据文件file1.dat,要求能读出文件中原有的全部数据,并在文件原有数据之后添加新数据,则用FILE *fp=fopen(”file1.dat”,【4】 )打开文件。
5、执行“printf(”%d,%d”,i,j,k,m);”后在屏幕上将输出 【5】 个整数。
三、阅读程序题:
6、下列程序的输出结果是 【6】 。
#include <stdio.h>
main( )
{ char b[30],*chp;
strcpy(&b[0],"CH");
strcpy(&b[1],"DEF");
strcpy(&b[2],"ABC");
printf("%s \n",b);
}
7、下列程序的输出结果是【7】 。
int t(int x,int y,int cp,int dp)
{ cp=x*x+y*y;
dp=x*x-y*y;
}
main( )
{ int a=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d %d \n",c,d);
}
8、以下程序的运行结果是【8】
#include <stdio.h>
main()
{ int k=4,m=1,p;
p=func(k,m); printf("%d,",p);
p=func(k,m); printf("%d \n",p);
}
func(int a,int b)
{ static int m=0,i=2;
i+=m+1;
m=i+a+b;
return m;
}
9、以下程序运行后的输出结果第二行是【9】,第四行是【10】,第五行是【11】,第七行是【12】,第九行是【13】,
# include,stdio.h”
# include,string.h”
main()
{ char c=’\x41’;
int a=1234;
float f=3.141592653589;
double x=0.12345678987654321;
printf(”a=%d\n”,a);
printf(”a=%6d\n”,a);
printf(”a=%2d\n”,a);
printf(”f=%f\n”,f);
printf(”f=%6.4f\n”,f);
printf(”x=%f\n”,x);
printf(”x=%18.16lf\n”,x);
printf(”c=%c\n”,c);
printf(”a=%x\n”,a);
}
10、以下程序运行后的输出结果是【14】。
main()
{ int a=0,b=1;
if(a<b?a++:++b)printf(”x=%d\n”,a<b?b:a);
else printf(”y=%d\n”,a>b?a:b);
}
四、完善程序题:
11、下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。
#include <stdio.h>
main()
{ int a,b,c,i;
a=0;c=0;
for(i=0;i<10;i+=2)
{ a+=i;
【15】;
------
c+=b;
}
printf("偶数之和=%d\n",【16】 );
printf("奇数之和=%d\n",c-11);
}
12、下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。
#include <stdio.h>
main()
{ int i,j;
for(i=0; 【17】 ; i++)
------
{ j=i*10+6;
if(【18】 ) continue;
------
printf("%d",j);
}
}
13、下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。
#include <stdio.h>
#include <string.h>
main()
{ char a[]="clanguage",t;
int i,j,k;
k=strlen(a);
for(i=0; i<=k-2; i+=2)
for(j=i+2; j<=k; 【19】 )
------
if(【20】 )
------
{ t=a[i]; a[i]=a[j]; a[j]=t; }
puts(a);
printf("\n");
}
14、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
main( )
{ float x[1000],sum=0.0,ave,a;
int n=0,i;
printf("Enter mark:\n");scanf("%f",&a);
while(a>=0.0&& n<1000)
{ sum+【21】 ; x[n]=_ 【22】 _;
n++;
scanf("%f",&a);
}
ave=_【23】 _;
printf("Output:\n");
printf("ave=%f\n",ave);
for (i=0;i<N;i++)
if 【24】 printf (“%f\n”,x[I]);
 } 
15、以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。
#include <stdio.h>
main()
{ char *p,s[6];
int n;
p=s;
gets(p);
n=*p-'0';
while(_【25】 _!='\0')n=n*8+*p-'0';
------
printf("%d \n",n);
}
16、以下程序的功能是输出“水仙花数”。所谓“水仙花数”是指任何一个三位整数,如果它的三位数的立方之后等于这个数本身,他就是一个“水仙花数”。例如153=13+53+33请填空。
#include<stdio.h>
void main()
{int i,j,k,n;
printf(”narcissus numbers are”);
for(n=100;n<1000;n++)
{i=n/100; j=_【26】 _; k=_【27】 _;
if(n= =i*i*i+j*j*j+k*k*k)
printf(”%d”,n);
}
printf(”\n”);
}
17、以下程序的功能是输出杨辉三角,总共输出10行,请填空。
#include<stdio.h>
#define N 11
void main()
{int i,j,a[N][N];
for(i=1;i<N;i++)
{ a_【28】 _=1;
a_【29】 _=1;
}
for(i=3;i<N;i++)
for(j=2;j<=i-1;j++)
a[i][j]= _【30】 _;
for(i=1;i<N;i++)
{for(j=1;j<=i;j++)
printf(”%6d”,a[i][j]);
printf(”\n”);
}
printf(”\n”);
}
上机部分(70分钟)
一、改错题(18分)
【题目】
函数struct T *Search(struct T items[ ],char who[ ])的功能是:在items指向的单向链表中查找成员name的值与形参who的值相同的结点,若找到则返回该结点的指针,否则返回0。Main函数中输出查找结果。
例如:若输入被查找姓名为“cai”,则输出结果为“name:cai num:2106”;若输入被查找姓名为“liu”,则输出结果为“Not found!”。
含有错误的源程序如下:
#include <stdio.h>
#include <string.h>
struct T { char name[20],num[20],struct T *next;};
struct T stu[5]={“cang”,”6723”,NULL,”cai”,”2106”,NULL,
“zhang”,”5129”,NULL,”zhang”,”4512”,NULL,”an”,”6868”,NULL};
void MakeChain(struct T items[],int n)
{ int k;
for (k=0;k<n-1;k++)
items[k]->next=&items[k+1];
}
struct T *Search(struct T items[],char who[20])
{ struct T *temp=items[0];
while(temp)
if(strcmp(temp->name,who)= =0) break;
else temp=temp->next;
return items;
}
void main(void)
{ char name[20];struct T *loc;
scanf(”%s”,name);
MakeChain(stu,5);
loc=Search(name,stu);
if(loc) printf(”name:%s num:%s \n”,loc->name,loc->num);
else printf(”Not found!\n”);
}
【要求】
上述程序录入到文件myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。
错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。
改正后的源程序myf1.c保存在考试盘的根目录下,供阅卷用,否则不予评分。
二、编程题(22分)
“平方镜反数”是这样的数:该数的平方与该数的反序数的平方互为反序数。例如,12就是一个“平方镜反数”,122=144,212=441。一般的,一个两位数可表示成ab,其中a、b均是非0十进制数字,(ab)2=M,(ba)2=N,若N是M的反序数,则称数ab是“平方镜反数”。
【题目】
写函数int find(int p1,int p2,int x[],int y[]),找到p1至p2范围内的所有2位“平方镜反数”并将它们依次保存在x指向的数组中,同时将这些数的反序数依次保存在y指向的数组中。函数返回所找到的“平方镜反数”。
编写main函数,调用find函数找到[10,99]内的所有“平方镜反数”并将这些平方镜反数及它们的反序数保存到结果文件 myf2.out中。最后将考生本人的准考证号字符串也保存到结果文件 myf2.out中。
例如:测试数据为p1=10,p2=99,则运行结果为
(11,11)(12,21)(13,31)(21,12)(22,22)(31,13)
my exam number is,0112400123(考生本人准考证号)
【要求】
1、将源程序文件取名为myf2.c,输出结果文件取名为myf2.out。
2、数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。
源程序文件和运行结果文件均须保存在考试盘的根目录下,供阅卷用。
不要复制扩展名为OBJ和EXE的文件到考试盘上。
模拟试卷(六)参考答案笔试部分:
第一部分:计算机基础部分
1-10:DBCBB CCDAC
11-20:ACCAC BACCD
第二部分 C语言程序设计一、选择题:
21-30:BCADB BBCBA
二、填空题:
(1)long int 或long (2)1
(3)0或NULL (4)”a+”
(5) 2 (6)CDABC
(7)56 (8)8,17
(9)a= 1234 (10)f=3.141592
(11)f=3.1415 (12)x=0.1234567898765432
(13)a=4D2 (14)y=1
(15)b=i+1 (16)a
(17)i<10 (18)i%3!=0
(19)j+=2 (20)a[i]>a[j]
(21)=a (22)a
(23)sum/n (24)x[i]
(25)*(++p) (26)n/10-i*10
(27) n%10 (28)a[i][i]
(29)a[i][1] (30)a[i-1][j-1]+a[i-1][j]
上机部分:
一、改错题:
#include <stdio.h>
#include <string.h>
struct T { char name[20],num[20],struct T *next;};
struct T stu[5]={“cang”,”6723”,NULL,”cai”,”2106”,NULL,
“zhang”,”5129”,NULL,”zhang”,”4512”,NULL,”an”,”6868”,NULL};
void MakeChain(struct T items[],int n)
{ int k;
for (k=0;k<n-1;k++)
items[k]->next=&items[k+1]; / items[k].next /
}
struct T *Search(struct T items[],char who[20])
{ struct T *temp=items[0]; / items /
while(temp)
if(strcmp(temp->name,who)= =0) break;
else temp=temp->next;
return items; / temp /
}
void main(void)
{ char name[20];struct T *loc;
scanf(”%s”,name);
MakeChain(stu,5);
loc=Search(name,stu); / Search(stu,name) /
if(loc) printf(”name:%s num:%s \n”,loc->name,loc->num);
else printf(”Not found!\n”);
}
二、编程题:
#include <stdio.h>
int find(int p1,int p2,int x[],int y[])
{int i,j,t,m,n,k=0;
for(i=p1;i<=p2;i++)
{j=i%10*10+i/10;
m=i*j;
n=j*j;
t=0;
while(n)
{t=t*10+n%10;n/=10;}
if(m= =t){x[k]=i;y[k]=j;k++;}
}
return k;
}
main()
{FILE *fp;
int i,n,a[20],b[20];
fp=fopen(”myf2.out”,”w”);
n=find(10,99,a,b);
for(i=0;i<n;i++){fprintf(fp,”(%d,%d)”,a[i],b[i]);}
fprintf(fp,”\nmy exam number is:%s”,”0112400123”);
fclose(fp);
}