第六套期末考试题
一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1分,共15分)
1.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为(      )
  A.连接、编译        B.编译、连接          C.连接、运行            D.运行
2.常数的书写格式决定了常数的类型和值,0x1011是(      )
  A.8进制整型常量        B.字符常量      C.16进制整型常数            D.2进制整型常数
3.C语句“x*=y+2;”还可以写作(      )
  A. x=x*y+2;        B. x=2+y*x;      C. x=x*(y+2);        D. x=y+2*x;
4.下列格式符中,可以用于以8进制形式输出整数的是(      )
  A. %d                B. %8d            C. %o                D. %1d
5.下列各语句中,能够且仅输出整型变量a、b中最大值的是(      )
  A. if(a>b) printf(″%d\n″,a);printf(″%d\n″,b);
  B. printf(″%d\n″,b);if(a>b) printf(″%d\n″,a);
  C. if(a>b) printf(″%d\n″,a);else printf(″%d\n″,b);
  D. if(a<b) printf(″%d\n″,a);printf(″%d\n″,b);
6.执行语句“for(s=0,i=1;i<=10;i=i+3) s+=i;”后,变量s、i的当前值是(      )
  A. 22,13            B. 12,10          C. 22,10            D. 12,13
7.下列各语句定义了数组,其中一个不正确的是(      )
  A. static int a[5],b[2][3];
  B. char no[30],rec[30,6];
  C. int x[]={2,4,6,8,10};
  D. int x[10]={1,2,3,4,5};
8.宏定义“#define p(x,y,z) x=y*z;”的宏替换“p(a,x+5,y-3.1)”应为(      )
  A. a=x+5*y-3.1        B. a=(x+5)*(y-3.1);    C. a=x+5*y-3.1        D. a=(x+5)*(y-3.1)
9.下列语句定义p为指向float类型变量d的指针,其中哪一个是正确的(      )
  A. float d,*p=d;                            B. float d,*p=&d;
  C. float d,p=d;                            D. float *p=&d,d;
10.执行语句“for(i=0;i<10;++i,++a)scanf(″%d″,a);”试图为int类型数组a[10]输入数据,是错误的。错误的原因是(      )
  A.指针变量不能做自增运算                B.数组首地址不可改变
  C.++i应写作i++                        D.++a应写作a++1.定义函数时,缺省函数的类型声明,则函数类型取缺省类型(      )
  A. void                                    B. char
  C. float                                    D. int
12.执行语句“k=5|3;”后,变量k的当前值是(      )
  A. 1                                B. 8
  C. 7                                D. 2
13.执行语句“k=53;”后,变量k的当前值是(      )
  A. 15                                B. 125
  C. 8                                D. 6
14.以“只读”方式打开文本文件a:\aa.dat,下列语句中哪一个是正确的(      )
  A. fp=fopen(″a:\\aa.dat″,″ab″);
  B. fp=fopen(″a:\aa.dat″,″a″);
  C. fp=fopen(″a:\aa.dat″,″wb″);
  D. fp=fopen(″a:\\aa.dat″,″r″);
15.写字符到磁盘文件的fpuc函数,其函数原型(头)正确的是(      )
  A. FILE* fputc(char)                B. int fputc(FILE *)
  C. int fpuc(char,FILE *)            D. int fputc(FILE *,char)
二、填空题(每空1分,共15分)
1.设int a=5,b=2;float c=32.8;,表达式b*(int)c%a的值为______。
2.计算a、b中最小值的条件表达式为______。
3.计算x、y之和的立方根,表达式应写作______。
4.判断变量a、b、c的值是否是等差数列中连续的三项,写作C的表达式为______。
5.判断变量a、b的值均不为0的C表达式为______。
6.执行语句“a=5+(c=6);”后,变量a、c的值依次为______。
7.整型变量x的值为23,语句“printf(″%o\\n″,x);”的输出结果为______。
8.执行语句“n=1;if(n=5) n++;"后,变量n值为______。
9.执行语句“s=0;n=5;while(--n) s+=n;”后,变量s、n值依次为______。
10.执行语句“for(s=0,i=1;i<11;i++) {if(i==6)continue;s+=i;}"后,s值为______。
11.若声明“char a[]=″windows″,b[]=″9x″;”,
执行语句“printf(″%s″,strcat(a,b));”的输出结果为______。
12.若声明“char a[15]=″Windows-9x″;”,语句“printf(″%s″,a+8);”的输出结果为______。
13.程序中使用了字符串函数(如strlen),则必须包含的头文件名为______。
14.访问结构体数组元素a[k]的成员b,写作______。
15.a、b都是结构体变量,语句“a=b;”能够执行的条件是______。
三、程序阅读题,读下列程序,在程序旁的划线处写出程序的输出结果。每行2分,共24分)
1.#include <stdio.h>
void main()                                            输出结果:______
{ int i;                                                          ______
for (i=1;i<5;i++) printf(″%d\t%c\n″,i,'A'+i);                      ______
}                                                              ______
2.#include <stdio.h>
void main()
{ int i,j,a[4][4];
for(i=0;i<4;i++)
  for(j=0;j<4;j++) a[i][j]=1+i-j;
for(i=0;i<4;i++) {
  for(j=0;j<4;j++)                                        输出结果:______
    if(a[i][j]>0) printf(″%3d″,a[i][j]);                          ______
  putchar('\n');                                                ______
}                                                                ______
}
3.#include <stdio.h>
void f(float a,float b,float* c)
{ static float x;float y;
x=(y=a>b?a:b)>x?y:x;
*c=x;
}
void main()
{ float a[5]={2.5,-1.5,7.5,4.5,6.5},x;
for(int i=0;i<4;i++) {                                    输出结果:______    f(a[i],a[i+1],&x);                                          ______
    printf(″%.1f\n″,x);                                          ______
}                                                              ______
}
四、根据下列各编程题题意填空(每空2分,共24分)
1.输入2个整数,输出它们的最小公倍数和最大公约数。
#include <stdio.h>
void main()
{ int m,n,gbs,gys; scanf ((1)          );
gbs=m;
while((2)          ) gbs=gbs+m;
gys=(3)          ;
(4)          ;
}
2.下列函数sum的返回值为一个整数m的所有因子之和。
(1)         
{ int s=1;i;
for((2)          ;i<=m/2;i++)
  if((3)          ) s=s+i;
(4)          ;
}
3.下列函数用于将链表中tabdata类型的、成员num值与形参n相等的结点删除。
struct tabdata *de1(tabdata *h,int n)
{ struct tabdata *p1,*p2;
if(h==NULL) {printf(″\nlist null!\n″); (1)          ;}
p1=h;
while(n!=p1->num && (2)          ){p2=p1;p1=p1->next;}
if((3)          ) {
  if(p1==h) h=p1->next;else (4)          ;
  printf(″delete:%1d\n″,n);
}
else
printf(″%1d not been found!\n″,n);
  return h;
}
五、编程题(第1小题6分,其他小题各8分,共22分)
1.编程,先输入n,再输入n个实数并分别统计正数的和、负数的和,然后输出统计结果。
2.编程,输入ac语言中struct1、a2、...、a15 后,计算下列表达式的值并输出。
3.把文本文件x1.dat复制到文本文件x2.dat中,要求仅复制x1.dat中的非空格字符。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。