C语言程序设计2013期末试题(含答案) 下载本文

内容发布更新时间 : 2024/5/3 5:05:30星期一 下面是文章的全部内容请认真阅读。

厦门大学《C语言程序设计》课程试卷 信息科学与技术学院 系 2013 年级 专业

已经反复修改调试过了,应该没问题了。如果对答案有什么疑问可以直接私戳我 qq553915228 李添锐

主考教师: 试卷类型:(A卷) 一、 写出下列程序段的运行结果(40分)

1.(4分) 4.(4分)

int i=1, j=2, k=4; int printf(\p[7]={11,13,15,17,18,20,23}, printf(\i=0,k=0; k+=(i+k)/10+0.5 ; for (;p[i]%2;) printf(\ { printf(\ switch(p[i]%5) 输出:1.000000,1,(此处有空格)4,2 {

case 1: k+=p[i++]; break;

case 3: k+=p[i]; 2.(4分) default: i++;

} char a=0x12303F;

} printf(\

printf(\a='a'-'B'+'E';

printf(\输出:4,24 输出:63,c 5.(4分) char s[]=\3.(4分) for (p=s+3; p>s; p--) int i = 3, j = 2; { if (!i&&i--) printf(\ i+=2; } i++; 输出:4,34,234, printf(\ do{j+=i; 6.(4分) i/=2; int f() if(j>8) break; { } while(i=3); static int j=1; int k=1; printf(\ return ((++j)+(++k)); 输出:4,9(此处需要换行即\\n) } int main()

1

{

int i;

for (i=0; i<3; i++) printf(\ return 0; }

输出:4,5,6,

7.(4分)

void fun(int i) {

if (i) {

fun(i-3);

printf(\

} }

int main() {

fun(9); return 0; }

输出:3,6,9,

8.(4分) union {

struct { int a,b,c; } s; int a[3]; }u;

int main() {

u.s.a=0; u.s.b=1; u.s.c=2; 二、 改错题(20分)

*(u.a+1)=3; u.a[2]=4; printf(%u.s.a, u.s.b);

return 0; }

输出 0,3 9.(4分)

int s[3][3]= {1,2,3,4,5,6,7,8,9}; int sum;

sum = *(s[0]) + *(s[1]+1) + *(s[2]+2);

printf(\return 0;

输出:15

10.(4分)

FILE *fp; int e; long len; char c; fp=fopen(\fputs(\fclose(fp);

fp=fopen(\fscanf(fp,\len=ftell(fp);

fseek(fp, -1L, SEEK_END); len = ftell(fp)-len; printf(\

输出:6

已知数据文件“c:\\data.dat”以二进制方式存有300个整数,函数readDat( )把这些数存入数组a中,函数fun( )的功能是:依次从数组a中取出一个数,若该数连续大于它之前的五个数且该数是偶数(若之前不满五个数,则不统计),统计满足此条件的个数cnt,并把这些数按从大到小的顺序存入数组b中。

程序中包含若干个错误,请指出程序中的错误并更正。提示:程序30行之前存在

2

8个错误。

#include /*第1行*/

#define MAX 300; /*第2行*/ 去掉分号; int a[MAX], b[MAX], cnt ; /*第3行*/ void fun( ) /*第4行*/ { /*第5行*/ int I, j, flag; /*第6行*/

for(I=5;I

if(a[I]>a[j]& a[I]%2==0) flag=1; /*第10行*/ &应该双写 else /*第11行*/

{ /*第12行*/ flag=0; /*第13行*/ continue; /*第14行*/ } /*第15行*/

if(flag==1) b[cnt++]=a[I]; /*第16行*/ } /*第17行*/

for(I=0;I

if(b[I]>b[j]) /*第20行*/>改成< { /*第21行*/

b[I]=b[j]; /*第22行*/将22行与23行对调 flag=b[I]; /*第23行*/ b[j]=flag; /*第24行*/ } /*第25行*/ } /*第26行*/ int main() /*第27行*/ { /*第28行*/

int i ; /*第29行*/加一个函数声明 void readDat(); readDat( ); /*第30行*/ fun( ); /*第31行*/ printf(\ /*第32行*/ for(i = 1 ; i < cnt ; i++) /*第33行*/ i=0 printf(\ /*第34行*/

3