}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=0;i<10;i++)printf("%d,",aa[i]);
printf("\n");
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,10,
B)10,9,8,7,6,5,4,3,2,1,
C)1,2,3,8,7,6,5,4,9,10,
D)1,2,10,9,8,7,6,5,4,3,
(42)以下程序的运行结果是
#include"stdio.h"
main()
{structdate
{intyear,month,day;}today;
printf("%d\n",sizeof(structdate));
}
A)6
B)8
C)10
D)12
(43)若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是
A)a,point,*&a
B)&*a,&a,*point
C)*&point,*point,&a
D)&a,&*point,point
(44)在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是
A)地址传递
B)单向值传递
C)由实参传形参,再由形参传实参
D)传递方式由用户指定
(45)已定义以下函数
fun(char*p2,char*p1)
{
while((*p2=*p1)!
='\0'){p1++;p2++;}
}
函数的功能是
A)将p1所指字符串复制到p2所指内存空间
B)将p1所指字符串的地址赋给指针p2
C)对p1和p2两个指针所指字符串进行比较
D)检查p1和p2两个指针所指字符串中是否有'\0'
(46)若执行下述程序时,若从键盘输入6和8时,结果为
main()
{inta,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)以上都不对
(47)fscanf函数的正确调用形式是
A)fscanf(fp,格式字符串,输出表列);
B)fscanf(格式字符串,输出表列,fp);
C)fscanf(格式字符串,文件指针,输出表列);
D)fscanf(文件指针,格式字符串,输入表列);
(48)下列关于C语言数据文件的叙述中正确的是
A)文件由ASCII码字符序列组成,C语言只能读写文本文件
B)文件由二进制数据序列组成,C语言只能读写二进制文件
C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
(49)有以下程序
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-'a'+'A';
s++;
}
}
main()
{charstr1[100]="abcddfefdbd",c='d';
ss(str1,c);printf("%s\n",str1);
}
程序运行后的输出结果是
A)ABCDDEFEDBD
B)abcDDfefDbD
C)abcAAfefAbA
D)Abcddfefdbd
(50)若以下定义:
structlink
{intdata;
structlink*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;
二、填空题
(1)算法的基本特征是可行性、确定性、【1】和拥有足够的情报。
解析:
算法是指解题方案的准确而完整的描述。
它有4个基本特征,分别是可行性、确定性、有穷性和拥有足够的情报。
(2)在长度为n的有序线性表中进行二分查找。
最坏的情况下,需要的比较次数为【2】。
解析:
对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,而顺序查找需要比较n次。
(3)在面向对象的程序设计中,类描述的是具有相似性质的一组【3】。
解析:
将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。
(4)通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【4】。
解析:
软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。
一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。
(5)数据库管理系统常见的数据模型有层次模型、网状模型和【5】3种。
解析:
数据库管理系统是位于用户与操作系统之间的一层系统管理软件,是一种系统软件,是用户与数据库之间的一个标准接口。
其总是基于某种数据模型,可以分为层次模型、网状模型和关系模型。
(6)设y是int型,请写出y为奇数的关系表达式【6】。
答案(y%2)==1
(7)设inta=5,b=6,表达式(++a==b--)?
++a:
--b的值是【7】。
解析:
此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。
请注意前缀++,--和后缀++,--的区别。
(8)下列程序的输出结果是【8】。
maim()
{charb[]="Helloyou";
b[5]=0;
printf("%s\n",b);}
解析:
语句b[5]=0;相当于语句b[5]=′\0′,且′\0′为字符串结束标志,输出时遇到′\0′就停止输出。
(9)当调用函数时,实参是一个数组名,则向函数传递的是【9】。
解析:
在函数中,可以通过指针变量来引用调用函数中对应的数组元素,此操作是通过传递数组的首地址来实现。
(10)以下程序的输出结果是【10】。
inta=1234;
printf("%2d\n",a);
解析:
在%与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。
(11)用高级语言编写的程序称为【11】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。
解析:
用高级语言编写的程序称为源程序,源程序不能在计算机上直接运行,运行源程序有两种方式:
一种是通过解释程序,对源程序逐句解释执行;另一种是先让编译程序将源程序一次翻译产生目标程序(目标程序是计算机可直接执行的机器语言程序,它是一种二进制代码程序),然后执行目标程序。
(12)以下程序的输出结果是【12】。
main()
{inta=0;
a+=(a=8);
printf("%d\n",a);}
解析:
赋值表达式的值就是所赋值变量的值,本题中a+=8相当于a=a+8,对表达式逐步进行求解:
a+=(a=8)此时,a的值由于赋值为8,而不是0
a+=8
a=a+8
a=16
(13)函数voidfun(float*sn,int
n)的功能是:
根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。
请填空。
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti=0;
for(i=0;i<=n;i++)
{f=【13】*f;
w=f/(2*i+1);
s+=w;}
【14】=s;}
解析:
C语言中实参变量和形参变量的数据传递是单向的“值传递”方式。
指针变量作函数也要遵循这一规则。
调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。
(14)函数fun的功能是:
根据以下公式求p的值,结果由函数值返回。
m与n为两个正数且要求m>n。
例如:
m=12,n=8时,运行结果应该是495.000000。
请在题目的空白处填写适当的程序语句,将该程序补充完整。
#include
#include
floatfun(intm,intn)
{inti;
doublep=1.0;
for(i=1;i<=m;i++)【15】;
for(i=1;i<=n;i++)【16】;
for(i=1;i<=m-n;i++)p=p/i;
returnp;}
main()
{clrscr();
printf("p=%f\n",fun(12,8));}
解析:
本题中,欲求p的值,需要先求m,n,m-n的阶乘值,可用循环语句实现。
(15)该程序运行的结果是【17】。
#include
#include
#defineM100
voidfun(intm,int*a,int*n)
{inti,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)
a[j++]=i;
*n=j;}
main()
{intaa[M],n,k;
clrscr();
fun(10,aa,&n);
for(k=0;kif((k+1)%20==0)printf("\n");
elseprintf("%4d",aa[k]);
printf("\n");}
解析:
解答本题的关键是要读懂程序,试题要找出能被7或11整除的所有整数,注意数学中的“或”和C语言中的“或”的区别,但在此处,if条件语句中用了“||”运算符,若要找能同时被7和11整除的所有整数则在if()中应用“&&”运算符。
当然,如果m的值输入50,即表达式fun(10,aa,&n);为fun(50,aa,&n);时输入结果为:
7111421222833
35424449。
(16)下列程序的功能是:
求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符1,则输出3,请填空。
#include
#include
#defineM81
intfun(char*ss,charc)
{inti=0;
for(;【18】;ss++)
if(*ss==c)i++;
returni;}
main()
{chara[M],ch;
clrscr();
printf("\nPleaseenterastring:
");gets(a);
printf("\nPleaseenterachar:
");ch=getchar();
printf("\nThenumberofthecharis:
%d\n",fun(a,ch));}
解析:
从字符串ss中找出子字符串的方法是:
从第1个字符开始,对字符串进行遍历;若ss串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串的结尾,则跳出循环;若ss串的字符和c串的字符对应不同,继续对ss串的下一个字符进行处理。
本程序是采用逐一比较的方式找出出现的次数。
循环的作用是在串中从左到右逐一走动,if()的作用是进行判断是否相同,若与c相同则表示又出现一次。
(17)下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。
#include"stdio.h"
FILE*fp;
{charch;
if((fp=fopen(【19】))==NULL)exit(0);
while((ch=get