一、单项选择题(在每小题的四个备选答案中,选出一个正确的,并将正确答案的号码填在题后的括号内,每小题1分,共14分)
1、程序运行时显示出错信息,可以排除下列哪一个因素(D)
A、算法错误 B、运行时输入数据错误
C、未通过编译 D、系统资源配置不当
2、语句\"float pi=3.1415926535;\"将(D)
A、导致编译错误 B、说明pi为初值3.1415926535的单精度实型常数
C、导致运行时的溢出错误 D、说明pi为初值3.141593的单精度实型变量
3、表达式!x||a==b等效于(D)
A、!((x||a)==b) B、!(x||y)=b
C、!(x||(a==b) D、(!x)||(a==b)
4、字符变量ch=\"A\",int类型变量K=25,printf(\"%d%d%d\\n\".ch,k,ch>k);输出(B)
第 1 页 共 13 页
A、65,25,1 B、65251 C、65,25,f D、65 25 f
5、下列语句应将小写字母转换为大写字母,其中正确的是(A)
A、if(ch>=\"a\"&ch<=\"z\")ch=ch-32;
B、if(ch>\"a\"&&ch<=\"z\")ch=ch-32;
C、ch=(ch>\"a\"&&ch<=\"z\")?ch-32:\"\";
D、ch=(ch>\"a\"&&ch<\"z\")?ch-32:ch;
6、下列语句中与语句while(i>=0&&i<=10)
{if(i==5)continue;printf(\"%f\\n\功能相同的是(A)
A、for(;i>=0&&i<=10;i++)if(i!=5)printf(\"%f\\n\
B for(;i>=0&&i<=10;i++)if(i==5)printf(\"%f\\n\
C、for(;i>=0&&i<=10;i++)if(i!=5)printf(\"%f\\n\
D、for(;i<=0&&i>=10;i++)if(i!=5)printf(\"%f\\n\
第 2 页 共 13 页
7、下列各语句定义了数组,其中哪一个是正确的(C)
A、int s1[5],s2[4,3]; B、int n,a[n];
C、char st [5]=\"A\"; D、int x(10),y(10);
8、定义带参数的宏\"#define jh(a,b,t) t=a;a=b;b=t\使两个参数a、正确的(D)
A、不定义参数a和b将导致编译错误
B、不定义参数a、b、t将导致编译错误
C、不定义参数t将导致运行错误
D、参数a、b、t不是变量,不必定义类型
9、假如指针p已经指向某个整型变量x,则*p相当于(D)
A、&x B、&p C、*x D、x&x
10、数组定义为\"int a[4][5];\下列哪一个引用错误的(D)
第 3 页 共 13 页
b的值交换,下列表述中哪个是
A、*a B、*(*(a+2)+3) C、&a[2][3] D、++a
11、共同体定义为\"union data {char ch;int x;} a;\下列哪一个是不正确的()
A、a.ch=\"x\"; B、a.x=10;a.x--;
C、a={\"x\D、a.ch=\"x\";a.ch--
12、按位与运算:int a=7,b=12,c=a&b;变量c的值是(B)
A、19 B、4 C、5 D、9
13、右移运算:int a=7,c=a>>1;变量c的值是(B)
A、6 B、3 C、15 D、22
14、为读写打开一个文本文件a:\\aa.dat,下列语句中哪一个是正确的(C)
A、fp=fopen(\"a:\\aa.dat\
B、fp=fopen(\"a:\\aa.dat\
C、fp=fopen(\"a:\\aa.dat\
第 4 页 共 13 页
D、fp=fopen(\"a:\\aa.dat\
二、填空题(每小题1分,共14分)
1、设int x=17,y=5;执行语句x%=x++/--y后x的值为 2 。
2、已知空间两点坐标分别为x1、y1、z1和x2、y2、z2,计算两点间距离的算术表达式为 d=√[(x1-x2)^2+(y1-y2)^2+(z1-z2)^2] 。
3、将数学式(x+1)e2x写作C的算术表达式为 (x+1)*exp(2*x) 。
4、判断int类型变量n是否为两位整数的逻辑表达式为 abs(n)》=10&&abs(n)《100 。
5、m是值为两位数的整型变量,判断其个位数是奇数而十位数是偶数的逻辑表达式为 (m%10)%2!=0 && (m/10)%2==0 。
6、求解逗号表达式(a=15,a*4),a+5,表达式值a的值依次为 20,15 。
7、若s=\"D\执行语句s=(s>=\"A\"&&s<=\"Z\")?s+32:s;字符变量s的值为 d 。
8、字符\"A\"的ascii码为65,若字符变量x的值为\"D\语句printf(\"%d\的输出结果为 68 。
9、语句printf(\"%ss\的输出结果为 boss 。
第 5 页 共 13 页
10、定义a为共有16个元素的一维字符数组、同时定义p为指向a数组首地址的指针变量的语句为 int *p=a; 。
11、定义语句为char a[]=\"name\语句printf(\"%d\输出 0
12、定义语句为char a[]=\"ms dos6.22\";,语句printf(\"%s\输出 13、宏定义语句#define f(c) c>=\"A\"&&c<=\"z\"的引用f(x);
置换展开后为 x>=’A’&&x<=’z’ 。
14、函数的实参为变量名时,虚参与实参结合的传递方式为 。
三、写出下列程序的输出结果(4分+8分+8分,共20分)
1、main()
{int k;
while(1){scanf(\"%d\
printf(\"%x,%o\
第 6 页 共 13 页
MS DOS6.22
}
输入数据:23 17 -5
输出结果:17,2711,21
2、 #include void main()
{char a[8],temp;int j,k;
for (j=0;j<7;j++) a[j]=\"a\"+j;a[7]=\"\\0\";
for (j=0;j<3;j++){temp=a[6];
for (k=6;k>0;k--) a[k]=a[k-1];a[0]=temp;
printf(\"%s\\n\
}
输出结果:
第 7 页 共 13 页
Gabcdef
Fgabcde
efgabcd
3、#include void sort (a,n)
char *a[]; int n;
第 8 页 共 13 页
{int i,j,1; char *temp;
for (i=0;i{1=i;for (j=i+1;jif(1!=i){temp=a;a=a[1];a[1]=temp;}}
}
void main ()
{ char *name[4],ch[4][15]={\"morning\
int k; for (k=0;k<4;k++) name[k]=ch[k];
sort (name,4);
for (k=0;k<4;k++) printf(\"%S\
}
第 9 页 共 13 页
输出结果:
%S%S%S%S
四、根据下列各编程题题意填空(每空2分,共22分)
1、下列程序计算并输出方程X2+Y2+Z2=19的所有整数解。
#include void main()
{
for (il=-45;il<=45;i1++)
for ( i2=-45;i2<=45;i2++ )
for (i3=-45;i3<=45;i3++)
第 10 页 共 13 页
if ( i1+i2+i3==19 )printf( “%d, %d, %d” ,i1,i2,i3);
}
2、下列函数在n个元素的一维数组中,找出最大值、最小值并传送到调用函数。
#include void find(p,max,min,n)
float *p;float *max;float *min;int n;
{int k;
*max=*p; ;
for (k=1;k{t=*(p+k); if( t>*max ) *max=t; if(t<*min)*min=t;}}
3、下列函数用于向一非空链表插入结点(由p0指向),链表按照结点no域的升序排列。
第 11 页 共 13 页
struct 1tab insert (head,stru)
struct 1tab *head, *stru;
{ struct 1tab *p0,*p1,*p2;
p1=head;p0=stud;
while ((p0->no>p1->no)&&( )){p2=p1;p1=p1->next;}
if (p0->no<=p1->no)
if (head==p1) head=p0;else {p2->next=p0; ;}
else {p1->next=p0; ;}
n=n+1;return (head);
}
五、编程题(每小题10分,共30分)
1、输入a、b、c后按值大小到大顺序输出。
第 12 页 共 13 页
2、编写一个函数,统计5行5列二维数组中有多少个正数、多少个负数,多少个零,并返回统计结果。
3、对一维数组a[20]按值从大到小排序后,分20行存入文本文件d1.dat中
第 13 页 共 13 页